=== Paid Membership Subscriptions - Effortless Memberships, Recurring Payments & Content Restriction ===
Contributors: cozmoslabs, iova.mihai, madalin.ungureanu, adispiac, sareiodata, raster02
Donate link: https://www.cozmoslabs.com/wordpress-paid-member-subscriptions/
Tags: membership, paid membership, subscription, content restriction, memberships
Requires at least: 3.1
Tested up to: 6.8
Requires PHP: 7.4
Stable tag: 2.16.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Feature-packed membership plugin for creating subscription plans, adding recurring payments & content restriction on your membership site.

== Description ==

**[Paid Member Subscriptions](https://www.cozmoslabs.com/wordpress-paid-member-subscriptions/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) is the #1 WordPress membership plugin focused on growing recurring revenue.**

Increase conversions and generate subscription revenue with a feature-packed membership solution. It lets you accept recurring payments, register and manage new members, create subscription plans and restrict access to premium content. 

Paid Member Subscriptions is designed to help you kickstart your subscription business in just a few minutes and begin generating income as quickly as possible.

Integrates with [WooCommerce](https://www.cozmoslabs.com/94386-restrict-woocommerce-product-purchase-shop-page-non-members/), allowing you to restrict product viewing and purchasing to members-only as well, offer special discounted product price based on subscription plans as well as allow your customers to purchase subscription plans through the WooCommerce Checkout.

You can also use it to setup an [Elementor membership site](https://www.cozmoslabs.com/156382-elementor-membership-site-with-paid-member-subscriptions/) fast and easy.

[Free Demo](https://pms-demo.cozmoslabs.com/) | [Compare Free vs Pro](https://www.cozmoslabs.com/wordpress-paid-member-subscriptions/) | [Documentation](https://www.cozmoslabs.com/docs/paid-member-subscriptions/)

https://www.youtube.com/watch?v=yMGAFlWxFW0&start=0&autoplay=1

== Optimize Membership Monetization And Boost Your Revenue ==

Offer premium access and exclusive benefits for members, establishing a thriving paid community that generates income through membership fees or subscription plans. This is ideal for:
* Paid Membership Services
* [Online Courses](https://www.cozmoslabs.com/380816-sell-online-courses-from-your-own-website/)
* Online Coaching
* Online Consultancy Services

== Automate Revenue Streams With Our Proven Membership Tools ==

Keep your focus on content creation while Paid Member Subscriptions takes care of consistently generating revenue for you through its automated recurring revenue model. This is ideal for: 
* Content restriction on blogs, news sites, and content hubs
* Members-only content subscriptions
* Private WooCommerce Stores
* [Members-Only WooCommerce Stores](https://www.cozmoslabs.com/94009-woocommerce-members-only-store-paid-member-subscriptions/)

== Build And Grow Your Community While Also Monetizing It ==

Communities are all about collaboration. By giving members the opportunity to gain exposure, promote their services or create networking opportunities, you’re building a valuable community that people are willing to pay to be a part of. This is ideal for: 
* Business Directories
* Member Directories
* Online Associations and Clubs
* [Online Communities](https://www.cozmoslabs.com/384742-create-online-community-website/)


= Shortcodes & Blocks for Member Registration, Login, Content Restriction and managing Membership Plans =

You can use one of the following shortcodes or available blocks to get started:

* **[pms-register]** - adds a front-end user registration form where users can purchase a membership level
* **[pms-login]** - create a front-end member login form
* **[pms-restrict subscription_plans="9,10"]** *Special content for members subscribed to the subscription plans that have the ID 9 and 10!* **[/pms-restrict]** - to restrict content based on subscription plans or logged in status
* **[pms-account]** - setup a [WordPress members area](https://www.cozmoslabs.com/177365-wordpress-members-area/) where members can easily edit their account information and manage their subscription plan(s)
* **[pms-payment-history]** - adds a front-end table with the member's payment history
* **[pms-recover-password]** - adds a recover password password form, that enables users to reset their password if needed

= Membership Modules: =

= Content Restriction =
 You'll find it really simple to restrict entire posts, pages or custom post types or just portions of them.

 Restrict Content offers you options to:

 * display content based on logged in status
 * show content to members only, setup [private pages for subscribers](https://www.cozmoslabs.com/251415-wordpress-private-pages-for-subscribers/)
 * partial content display by using the [pms-restrict][/pms-restrict] shortcode
 * display another template for restricted posts
 * restrict Gutenberg blocks

 Integrates with Elementor page builder allowing you to [restrict content for Elementor](https://www.cozmoslabs.com/docs/paid-member-subscriptions/integration-with-other-plugins/elementor/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) sections and widgets based on logged in status or subscription plans, by using the visual interface.

= Membership Payments =
Accept PayPal or direct credit card payments from your subscribers. You can keep track of all member payments, payment statuses and purchased subscription plans. Access to detailed payment logs.

= Recurring Payments =
Ability to accept recurring payments through the PayPal or Stripe payment gateways. The recurring setting can be forced or you can let the user choose whether he wants to subscribe for a recurring subscription or not.

= Hierarchical Subscription Plans =
You can create an unlimited number of hierarchical subscription plans (eg: Free, Silver, Gold). Each new user can choose a membership plan (subscription) during the registration process.
Existing users can purchase a subscription plan from a page with the [pms-subscriptions] shortcode.

Members can upgrade their subscription plan from the [pms-account] page, the same page also allows the member to Renew, Cancel or Abandon his subscription.

Subscription plans can offer free and/or paid memberships on your website.

= Discount Codes =
Create an unlimited number of discount codes and offer percentage or flat rate based discounts for your memberships.

= Members Management =
Have an overview of all your members and their subscription plans. Easily add/remove members or edit their subscription details.

= Membership Emails and Messages =
Customize default member emails and setup member messages sent/displayed on certain user actions.
Admin emails can also be customized.

= Free Trial and Sign-up Fees =
You can configure your subscription to have a free trial period and a sign-up fee, allowing you to have more control on your subscription setup.

= Pay in Installments =
Configure a subscription that ends after a certain amount of billing cycles.

= Stripe =

Effortlessly process credit card payments, both one-time and recurring, directly on your website with Stripe. Stripe provides a secure and intuitive payment solution that seamlessly integrates with your WordPress site, ensuring smooth transaction management and an enhanced user experience. 
Accept a wide range of additional payment methods including Apple Pay, Google Pay, Bancontact, iDeal, Giropay, and more.

= Reports and Exports =
Whether you prefer to maintain your own records of your members’ database, do custom reports , or you simply need to import records into another service or application, such as MailChimp or Excel, you can do that with Paid Member Subscriptions. Export all member records to a CSV at anytime.

Payment history can be exported to a CSV file, letting you then import the payment data into Excel, QuickBooks, or other accounting software that can process a CSV file.

= WooCommerce Integration =
Paid Member Subscriptions integrates beautifully with [WooCommerce](https://www.cozmoslabs.com/docs/paid-member-subscriptions/integration-with-other-plugins/woocommerce/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree), allowing you to do the following out of the box:

* **Create a Members-only Store** - [restrict access](https://www.cozmoslabs.com/94386-restrict-woocommerce-product-purchase-shop-page-non-members/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) to the Shop page to members-only
* **Restrict Product Viewing and Purchasing** - control who can see or purchase a WooCommerce product based on logged in status and subscription plan. Easily create members-only products.
* **Offer discounted product prices to members** - offer special product prices to members based on their active subscription. Set membership discounts per product or subscription plan.
* **Sell subscription plans as products** - associate products with Subscription Plans to offer customers a membership with a product purchase or allow customers to purchase Paid Member Subscriptions plans using the WooCommerce Checkout

= Others =
* automatic refunds directly from your WordPress dashboard
* GDPR
* automatically log users in
* hide admin bar
* [prevent account sharing](https://www.cozmoslabs.com/141224-prevent-account-sharing-membership-site/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree)
* redirect default WordPress pages
* setup a [WordPress members area](https://www.cozmoslabs.com/177365-wordpress-members-area/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree)
* enable reCaptcha v2 or v3 on your forms

= Powerful Add-ons =

Paid Member Subscriptions has a range of premium [Add-ons](https://www.cozmoslabs.com/paid-member-subscriptions-add-ons/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) that allow you to extend the power of the membership plugin:

**Basic Add-ons** (available in the [Agency, PRO or Basic](https://www.cozmoslabs.com/wordpress-paid-member-subscriptions/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree#pricing) versions)

* [Global Content Restriction](https://www.cozmoslabs.com/add-ons/global-content-restriction/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) - add global content restriction rules to subscription plans, based on post type, taxonomy and terms
* [Email Reminders](https://www.cozmoslabs.com/add-ons/email-reminders/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) - create multiple automated email reminders that are sent to members before or after certain events take place (subscription expires, subscription activated etc.)
* [LearnDash](https://www.cozmoslabs.com/add-ons/learndash/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) - create multiple automated email reminders that are sent to members before or after certain events take place (subscription expires, subscription activated etc.)
* [Navigation Menu Filtering](https://www.cozmoslabs.com/add-ons/navigation-menu-filtering/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) - dynamically display menu items based on logged-in status as well as selected subscription plans
* [Fixed Period Membership](https://www.cozmoslabs.com/add-ons/fixed-period-membership/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) - create subscriptions plans that end at a specific date, no matter when a member subscribes to it.
* [Pay What You Want](https://www.cozmoslabs.com/add-ons/pay-what-you-want/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) - accept donations and let subscribers pay what they want when purchasing a subscription plan
* [bbPress](https://www.cozmoslabs.com/add-ons/bbpress-2/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) - integrate Paid Member Subscriptions with the popular forums plugin, bbPress, to [restrict your forums and topics](https://www.cozmoslabs.com/104619-restrict-bbpress-forum-membership-subscription/).

**Pro Add-ons** (available in the [Agency & PRO versions](https://www.cozmoslabs.com/wordpress-paid-member-subscriptions/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) only)

* [Multiple Currencies](https://www.cozmoslabs.com/add-ons/multiple-currencies/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) - Enable visitors to pay in their local currency, either through automatic location detection or by manually selecting their preferred currency
* [Pro Rate](https://www.cozmoslabs.com/add-ons/pro-rate/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) - Pro-rate subscription plan Upgrades and Downgrades, offering users a discount based on the remaining time for the current subscription
* [Tax & EU VAT](https://www.cozmoslabs.com/add-ons/tax-eu-vat/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) - collect tax or vat from your users depending on their location, with full control over tax rates and who to charge
* [Group Memberships](https://www.cozmoslabs.com/add-ons/group-memberships/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) - sell group subscriptions to your users
* [Content Dripping](https://www.cozmoslabs.com/add-ons/content-dripping/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) - create schedules for your content, making posts or categories available for your members only after a certain time has passed since they signed up for a subscription plan
* [Multiple Subscriptions per User](https://www.cozmoslabs.com/add-ons/multiple-subscriptions-per-user/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) - setup multiple subscription level groups (e.g. Physics, Math) and allow members to sign up for more than one subscription plan, one per group (e.g. Physics Beginner and Math Advanced)
* [Invoices](https://www.cozmoslabs.com/add-ons/invoices/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) - both you and your members will be able to download PDF invoices for each payment that has been completed
* [Files Restriction](https://www.cozmoslabs.com/add-ons/paid-member-subscriptions-files-restriction/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) - secure your valuable content and ensure it reaches only those who have subscribed and paid for access

== The Ultimate Membership Bundle ==
Combine user registration, memberships, and recurring revenue in one powerful plugin bundle called the [Ultimate Membership Bundle](https://www.cozmoslabs.com/ultimate-membership-bundle/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree).

Get access to both [Paid Member Subscriptions Pro](https://www.cozmoslabs.com/wordpress-paid-member-subscriptions/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) and our all in one user management plugin, [Profile Builder Pro](https://www.cozmoslabs.com/wordpress-profile-builder/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree). These two plugins are designed to work perfectly together, offering you a powerful toolkit for managing and expanding your user base while generating revenue through paid memberships and recurring revenue.

= Paid Member Subscriptions in your Language =
We're focusing on translating Paid Member Subscriptions in as many languages as we can. So far, the translations for 10 languages are almost complete, but we still need help on a lot of other languages, so please join us at [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/paid-member-subscriptions)
You will be able to download all the [available language packs](https://translate.wordpress.org/projects/wp-plugins/paid-member-subscriptions) as well as help us translate Paid Member Subscriptions in your language.
For more information please visit our [documentation page](https://www.cozmoslabs.com/docs/paid-member-subscriptions/how-to-translate-paid-member-subscriptions/)

= Website =

[https://www.cozmoslabs.com/wordpress-paid-member-subscriptions/](https://www.cozmoslabs.com/wordpress-paid-member-subscriptions/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree)

= Documentation =

[https://www.cozmoslabs.com/docs/paid-member-subscriptions/](https://www.cozmoslabs.com/docs/paid-member-subscriptions/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree)

= Addons =

[https://www.cozmoslabs.com/paid-member-subscriptions-add-ons/](https://www.cozmoslabs.com/paid-member-subscriptions-add-ons/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree)

== Installation ==

1. Upload the paid-member-subscriptions folder to the '/wp-content/plugins/' directory
1. Activate the plugin through the 'Plugins' menu in WordPress
1. Create a new page and use one of the shortcodes available. Publish the page and you're done!

== Frequently Asked Questions ==

= What type of membership sites can I create? =

Here are [some examples](https://www.cozmoslabs.com/188635-membership-websites-examples/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) of what you could sell from your membership site: premium tutorials, newsletter, magazine, database, online community, software, apps, videos, ebooks, audio files, discount codes, fan clubs, consulting, coaching etc.

= What type of memberships can I sell? =

You can sell one-time or [recurring memberships](https://www.cozmoslabs.com/220929-wordpress-recurring-payments/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) with any custom duration you wish.

You can also [give users a free trial](https://www.cozmoslabs.com/419574-free-trial-membership-subscription/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) to your plans and/or charge a sign-up fee.

= Can I offer both free and paid memberships at the same time? =

Yes, you can have both free and paid memberships on your site.

= Can I create discount codes for special promotions? =

Yes, you can create percent or fixed-amount discount codes that are available for selected subscriptions. You can [limit the uses of a discount code](https://www.cozmoslabs.com/140124-limit-discount-code-uses-per-user-in-paid-member-subscriptions/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree), make it available only to new users, have a set period in which the discount is available, and many more. [Learn more](https://www.cozmoslabs.com/docs/paid-member-subscriptions/discount-codes/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree)

= Can I restrict access to premium content allowing only paying users to view it? =

Yes, the plugin allows you to [restrict content](https://www.cozmoslabs.com/docs/paid-member-subscriptions/content-restriction/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) and make it available to paid members only.

Any type of content can be restricted including posts, pages, and custom post types. We also have an [integration with WooCommerce](https://www.cozmoslabs.com/docs/paid-member-subscriptions/integration-with-other-plugins/woocommerce/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) so you can restrict access (or purchase) to these products

We also offer an [Elementor integration](https://www.cozmoslabs.com/392394-restrict-content-elementor/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) which lets you restrict any Section or Widget and make it available only to paid users.

You can also restrict [Gutenberg blocks](https://www.cozmoslabs.com/docs/paid-member-subscriptions/integration-with-other-plugins/gutenberg/#Block_Content_Restriction?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) and [Divi Modules](https://www.cozmoslabs.com/docs/paid-member-subscriptions/integration-with-divi/#Restrict_Divi_Modules_and_Sections?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree)

= Can I customize the registration form? =

Yes, the registration form can be customized using [Profile Builder](https://wordpress.org/plugins/profile-builder/). 
You can change the order of the form fields, remove fields that aren't required and also add extra fields to the form like Inputs, Checkboxes, Selects, Radio buttons, and more. [Learn More](https://www.cozmoslabs.com/docs/paid-member-subscriptions/integration-with-other-plugins/profile-builder/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree)

= Can I ask users to confirm their Email Address before they can register and pay? =

Yes, this is possible through [Profile Builder](https://www.cozmoslabs.com/wordpress-profile-builder/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) as well using its [Email Confirmation feature](https://www.cozmoslabs.com/14722-wordpress-email-confirmation/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree). In this case, the payment will happen after the user has clicked the link he received in the confirmation email after registering. [Learn more](https://www.cozmoslabs.com/docs/paid-member-subscriptions/integration-with-other-plugins/profile-builder/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree#Email_Confirmation)

= Can my members pay using a credit card? =

Yes! Users can pay with a credit or debit card without leaving your website through the Stripe payment gateway.

Through Stripe you can also access additional payment gateways like iDeal, Bancontact, Giropay and more.

= Can my members pay using Apple Pay or Google Pay? =

Users can pay using Apple Pay and Google Pay by using the Stripe payment gateway and enabling these Payment Methods. [Learn More](https://www.cozmoslabs.com/docs/paid-member-subscriptions/payment-gateways/stripe-connect/#Apple_Pay_and_Google_Pay?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree)

Revolut Pay or Alipay can also be used, alongside the Stripe specific Link payment method.

= Where can I find out more information? =

For more information please check out [Paid Member Subscriptions documentation](https://www.cozmoslabs.com/docs/paid-member-subscriptions/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree).

== Screenshots ==
1. Member Registration Form (Account Details + Select Payment Method)
2. Membership options: Group Memberships, Fixed Period Subscription & Pay What You Want & more
3. Select your subscription plan and billing details form in Paid Member Subscriptions
4. Member Account - Subscription Plan Details
5. Member Profile - Edit Account and Billing Details
6. Member discounted products for WooCommerce store
7. WooCommerce shop page restricted on the front-end for non-members
8. WooCommerce product discounts for members and restriction settings for individual product
9. Paid Membership Subscriptions onboarding wizard
10. Settings interface - Membership, Recurring Payments, Content Restriction & more
11. Subscription Plans listing from Paid Member Subscriptions - membership plugin
12. Members Management
13. Membership Recurring Payments Details
14. Discount Codes for Membership Plans
15. Available Add-ons for extending your membership site

== Changelog ==
= 2.16.1 =
* Fix: Issue with post content restriction not working correctly 

= 2.16.0 =
* Fix: Security issue regarding broken access control. Thanks to MD Ismail and the Patchstack team
* Fix: Issue with Stripe manual renewals not being properly marked as finished by the front-end request
* Fix: Clear payment gateway billing info from old style PayPal subscriptions on renewals and change, downgrade, upgrade using the new integration and Stripe
* Fix: An error that could appear in some situations when making PayPal requests
* Fix: Issue with Payment Gateways selector not appearing on the Profile Builder form if a single subscription plan was selected in Profile Builder settings
* Fix: Improve security for refunds
* Fix: A notice that could appear in some cases when filtering restricted posts
* Misc: Fixed some wrong type hints
* Misc: Fixed a situation where a subscription plan price was wrongly cast to absolute instead of float

= 2.15.9 =
* Feature: Payment refunds - refunds can now be issued from the Payments page with support for full and partial refunds. Supports all current and past payment gateways
* Enhancement: Automatically expire subscriptions when they are viewed and expired, but the status didn't change yet. Before, this was only handled by a cron which is still available, but we now also show instant feedback to admins or users, without waiting for the cron to execute
* Fix: Rewrite logic that determines if the subscription plans field is active or not in order to show payment gateways for Profile Builder Conditional Logic compatibility
* Fix: Allow processing CHF payments through the new PayPal integration
* Misc: Allow page regeneration through Setup Wizard if the pages are not set in General Settings
* Misc: Add a filter to be able to force the retrieval of an IP address using REMOTE_ADDR. This basically ignores other params like HTTP_FORWARDED_FOR or HTTP_CLIENT_IP and only relies on that key. Enable with the following filter: pms_get_user_ip_address_force_remote_address

= 2.15.8 =
* Enhancement: Improved back-end messages informing what features are available depending on license
* Fix: An error triggered on registration when another plugin is loading an older version of the Stripe library
* Fix: Conflict with the Formidable Stripe plugin, allowing our on-session payments to process normally
* Fix: Issue with Free Trials and Signup fees on the same plan not working with Stripe
* Fix: The logged in GDPR option is now displaying on the Retry Payment form as well
* Fix: Issue with the Payments List Table not displaying the date correctly in certain situations when the Match WP Date format option was used
* Fix: Compatibility issue between the Profile Builder reCaptcha v3 option and Stripe
* Fix: Use the correct subscription price when updating the payment element in front-end and the Multiple Currencies add-on is used
* Misc: Add support for searching payments based on user display name
* Misc: Alignment fixes for GDPR field

= 2.15.7 =
* Enhancement: Show information about Upgrades or Renewals in the Reports area
* Enhancement: Show subscription price when hovering over the subscribed plan on the Members Table
* Fix: Issue with license key activation or deactivation not working
* Fix: Issue with Stripe Trial payments not working correctly when the card enforced 3D Secure validation
* Fix: Add back Subscription Plan name to Stripe transactions
* Fix: Restore duration divider for fixed period plans when they are displayed on the front-end form
* Fix: Allow searching for discounts that contain special characters in their title
* Misc: Match label spacing between front-end and back-end for the Manual payment gateway
* Misc: Extend Payments search support
* Misc: The WooCommerce Product Restriction metabox is now listing plans in the same order as the Content Restriction metabox
* Misc: Added a filter so the PayPal Standard account check for IPNs can be disabled

= 2.15.6 = 
* Fix: Issue with custom tables metadata retrieval

= 2.15.5 =
* Enhancement: Added options to restrict content based on All subscription plans to the pms-restrict shortcode and Elementor Content Restriction functionality
* Enhancement: Allow adding a Registration form without subscription plans through the Elementor Registration Widget
* Fix: Security issue relating to LFI on Windows environments. Thanks to LVT-tholv2k and the Patchstack team
* Fix: Some compatibility issues with other plugins that load the Stripe PHP library
* Fix: An issue with the trial already used functionality and Stripe
* Fix: Make sure a customer exists when attempting to process a payment through Stripe
* Fix: Compatibility issue with GiveWP

= 2.15.4 =
* Enhancement: Stripe payment gateway updates for improved loading speed, processing speed and reliability
* Enhancement: Added an option that let's you show the GDPR checkbox for logged in payments. Go to the Settings -> Misc -> GDPR page to enable
* Feature: Customers can now re-use already entered payment methods without having to enter them again. When a logged in user is paying, he can choose if he wants to save the payment method or not
* Fix: The Stripe payment gateway will not generate incomplete Payment Intents in your Stripe account when loading the payment form
* Fix: Issue with Apple Pay/Google Pay not working sometimes
* Misc: Don't display the All subscription plans option for the Profile Builder Default selected Subscription Plan field

= 2.15.3 =
* Feature: Pay in Installments – create subscription plans that automatically end after a set number of billing cycles. [Learn more](https://www.cozmoslabs.com/docs/paid-member-subscriptions/subscription-plans/#Limit_Payment_Cycles)
* Fix: Allow users that are on the older Stripe versions to Update their Payment Details
* Fix: An issue with the Retry Payments feature
* Fix: Small fixes for Reports
* Fix: The Content Restriction metabox is now displaying again on TutorLMS courses
* Misc: Allow setting the payment gateway when manually adding members. This can be enabled using a filter: pms_view_add_new_edit_subscription_show_payment_gateway_field

= 2.15.2 =
* Fix: Security issue with the deprecated PayPal Standard gateway relating to the IPN processing functionality. Thanks to ChuongVN and the Patchstack team
* Fix: Stripe connection redirect not going to the specified location
* Misc: Prevent scripts and styles from loading on the WooCommerce Checkout or Cart pages
* Misc: Added a filter to disable the referer redirect when logging in after trying to view a restricted page: pms_content_restriction_redirect_add_redirect_to_parameter

= 2.15.1 =
* Fix: Latest update failure

= 2.15.0 =
* Enhancement: Added an option to select the status in which the subscription remains while payments are retried. Go to Settings -> Misc -> Payments to configure this
* Fix: Security issue regarding Content Spoofing with paid version active
* Fix: Issue between 100% discount codes for the first payment and PayPal
* Fix: Disable all extra funding sources except PayPal Wallet for the PayPal integration
* Fix: Make sure return URL for PayPal is always set to home_url() if our custom pages are not defined
* Misc: Added support for multiple subscription plan ids when retrieving subscriptions
* Misc: Added disabled state for form submit buttons on block themes
* Misc: Make sure original form submit button is getting reset when the PayPal window is closed

= 2.14.9 =
* Enhancement: The Profile Builder Subscription Plans field now includes an `All` subscription plans option
* Enhancement: Added compatibility with Profile Builder Admin Approval to the default registration success messages
* Fix: Issue with PayPal admin connection not working in some cases
* Fix: Always show the PayPal Disconnect button if an account is connected
* Fix: Learndash compatibility issue on fresh websites where no plans were defined
* Fix: Payments issue with Stripe when global recurring option was set to never renew but plan renewal option was set to always renew
* Fix: When a user tries to access restricted content and is sent to a Paid Member Subscriptions login form, after a successful login he should now return to the restricted content
* Fix: Compatibility issue between Stripe Webhooks and TranslatePress. Implemented a general fix to take into account other plugins which might modify the home_url
* Fix: Issue with admins not being able to save, edit, delete strings in the Labels Edit add-on
* Fix: Translation notices continued
* Fix: When processing recurring payments through Stripe, treat Payment Intents with the `Processing` status similar to how we treat them on initial registration
* Fix: Issue with reCaptcha v3 not working on default login forms sometimes
* Fix: When cloning a parent plan, it will now remain a parent plan instead of being transformed into a child plan
* Fix: Renew Subscription link not working correctly when added to a menu through the Navigation Menu Filtering add-on
* Fix: When creating or updating customers in Stripe, make sure the email address is transformed to lowercase
* Misc: On the Edit Member screen, replace the Expiration Date label with Next Payment Date when the user has a single subscription and it is recurring
* Misc: On the Members List, when hovering over a subscription, transform the Expiration Date label to Next Payment date for recurring subsscriptions
* Misc: Added an option to disable the automatic subscription expiration on payment gateway refunds. This can be found on the Settings -> Misc -> Others page, under Subscriptions Settings -> Gateway refund behavior

= 2.14.8 =
* Enhancement: Added Bulk Cancel Memberships action for admins, available from the Members table
* Enhancement: Added Bulk Delete Discount Codes action for admins
* Fix: PayPal malformed request issues appearing for some users
* Fix: Stripe issue with Fixed Period Memberships where sometimes an automatic renewal would double the expiration date
* Fix: Issue with the Restrict Comments feature not working correctly
* Fix: A warning appearing on the Stripe Update Payment Method page
* Misc: Fix translation notice appearing from Labels Edit add-on
* Misc: Hide Cancel action from free subscription plans
* Misc: Fix warning coming from Setup Wizard in some cases
* Misc: Add custom actions before and after the PMS Account Subscriptions Table

= 2.14.7 =
* Enhancement: Added currency validation in the front-end for PayPal. Added a persistent message in back-end if default website currency is not supported by PayPal
* Enhancement: Added support for Elementor Templates as Content Restriction messages when using the Template Content Restriction type
* Fix: Let PayPal gateway determine the user locale automatically
* Fix: Issue with Activate Subscription email being sent twice when the subscription was being bought from WooCommerce
* Fix: Updated Stripe Apple Pay, Google Pay integration to support the latest changes from Stripe JS
* Fix: Issue with Credit Card details appearing for free plans
* Fix: Compatibility issues with Profile Builder Conditional Logic when gateways are hidden or shown based on a field
* Fix: Issues with back-end assets where some things weren't being loaded or applied if the name of the plugin was translated 
* Fix: Respect the `redirect_to` parameter for the login form if present
* Misc: Accessibility improvements to account navigation
* Misc: reCaptcha v3 to disable the form submit button while verifying the request
* Misc: Updated placement for the submit button on back-end pages

= 2.14.6 =
* Fix: PayPal migration notice documentation page URL

= 2.14.5 =
* Feature: Added a new PayPal payment gateway integration which leverages their newer Rest API. Users can now pay without being redirected to the PayPal site through a modal plus other improvements. [Learn more](https://www.cozmoslabs.com/docs/paid-member-subscriptions/payment-gateways/paypal/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree)
* Enhancement: The default form is now displaying the Name and Password fields on the same row
* Enhancement: Styling changes for Billing Fields, auto fill first and last name based on form data
* Enhancement: Reworked Stripe gateway back-end functionality so it can be shared with PayPal
* Fix: Issue with full name members search not working
* Fix: Issue with the WooCommerce products shortcode not working correctly with the latest update
* Fix: Bulk delete payments not showing the confirmation message
* Fix: Removed extra styling from the Stripe credit card fields for block themes
* Fix: Reworked the process of updating payment intents from front-end with Stripe so it only gets executed once, just before the payment
* Fix: Issue with Stripe webhooks not working correctly in some cases when changing subscriptions
* Fix: Improved subscription logs by logging attempts to Downgrade, Change or Renew the subscription
* Misc: Merged a lot of Javascript front-end functionality relating to the forms in the core js file
* Misc: Merged the Discount Codes and Stripe CSS files into core CSS to reduce HTTP requests
* Misc: Update URL when navigating subtabs in settings
* Misc: Updated Reports graph colors
* Misc: Added an option on the Settings -> Misc -> Others page that once toggled will list Inactive subscription plans in the Content Restriction metabox

= 2.14.4 =
* Fix: Security issue with message atribute of the pms-restrict shortcode. Thanks to Muhammad Yudha and Patchstack
* Fix: Issue with Expiration Date End filters not working on the PMS Members page
* Misc: Do not exclude restricted products from WooCommerce queries by default. Added an option to enable this functionality from the Settings -> WooCommerce tab
* Misc: Apply the default WordPress Date Format to the subscription list that is displayed on the back-end Edit User page

= 2.14.3 =
* Fix: Don't disconnect Stripe account on certain errors
* Fix: Account disconnected notice not disappearing when the account was connected again
* Fix: Disconnect button not showing a popup to confirm in some cases
* Fix: Show the loading indicator for the Stripe form while the checkout is getting updated
* Fix: Don't throw errors if the already loaded Stripe library is missing some newer functionality regarding payment method domains
* Fix: Display some informative messages on the Gateways settings page when the plugin couldn't automatically register the domain for Apple Pay and Google Pay
* Fix: Issue with notice about translation triggered too early appearing from the plugin
* Misc: Added a new column 'subscription_plan_base_price' when exporting members
* Misc: Dashboard Payment Summary widget is now taking into account Multiple Currencies

= 2.14.2 =
* Enhancement: Added possibility to filter the Payments List based on different criteria like Subscription Plan, Payment Type, Payment Gateway, Date
* Enhancement: Added a link to the related subscription for each Payment on the Payments List Table and Single Payment View
* Enhancement: When redirecting to the payment details page after a Manual/Offline payment, the URL will now include the payment id, subscription plan ID and subscription ID (only for logged in users)
* Fix: Issue with filtering members generating very long query strings when members were subscribed to multiple subscriptions
* Fix: An issue with Manual/Offline payment gateway where active subscriptions would not be renewed properly
* Fix: Allow admins to modify the Subscription Billing Details of a subscription that uses the Manual/Offline payment gateway
* Fix: Allow searching by username inside the Payments List
* Fix: Allow admins to change the plan of a recurring subscription with one from the same tier if the payment gateway supports this
* Fix: Make sure the Payment Error message is not displaying an empty retry link in some situations
* Fix: Autologin not working when a payment was failing with Stripe
* Fix: Display of sorting indicators on back-end tables
* Misc: When editing a subscription as an admin, show the Billing Amount field only for recurring subscriptions
* Misc: Save related subscription ID to the Payment when an admin is manually creating payments
* Misc: Allow sorting the Payments List table based on the Subscription Plan, Date and Type columns
* Misc: Make sure a clean URL is generated for the Edit Member Subscriptions link on the Members List table
* Misc: Added a tool on the Settings -> Misc -> Others page that can be used to cleanup unnecessary postmeta that was added by the plugin

= 2.14.1 =
* Feature: Implemented reCaptcha v3 score threshold option. This can be configured from the Settings -> Misc -> reCaptcha tab subtab
* Fix: Issue with the Members List not showing subscription information in the Subscribed To column when navigating to different pages than the first one
* Fix: An issue that was causing PWYW subcriptions with a price of 0 to require that a payment gateway be selected
* Fix: Set the end time of Fixed Period Subscriptions to the end of the selected day (23:59:59)
*Fix: Make sure our own custom post type post meta keys are not being saved in postmeta for random post types. Next version will contain a tool to remove unnecessary post meta entries that were created
* Fix: Disable autoloading for some bigger options which do not need it
* Fix: Make sure the Failed Payment webhook from Stripe does not process the subscription if there's a newer Completed payment for the same subscription
* Fix: Compatibility issues with the Elementor Loop Grid widget
* Misc: Include Currency property inside the PMS_Payment class. Payments can also be searched using their currency through pms_get_payments()
* Misc: Change deprecated jQuery event used in Discount Codes front-end
* Misc: Added a filter with the same name inside the pms_is_member function: pms_is_member
* Misc: Reworked Gutenberg Blocks for forms
* Misc: Add a class over the redirecting to PayPal message which appears when the Profile Builder form is used
* Misc: Add a link over the transaction ID which sends you to the PayPal website to view the transaction for PayPal Express as well

= 2.14.0 =
* Fix: Issue with Pending Manual Payment email being sent multiple times
* Fix: Make sure Elementor Cache is bypassed when the logged_out_user restriction is applied
* Fix: Issue with PayPal subscriptions not being canceled when the plan is changed to a non-recurring one
* Fix: Some notices that could be triggered on the Reports page in some cases
* Fix: Show correct payment currency on the WordPress Dashboard page and Paid Member Subscriptions Dashboard page
* Fix: Some potential warnings that could trigger from the content restriction functionality
* Fix: The back-end Bulk Delete Subscriptions functionality is now deleting all of the users subscriptions instead of a random one. It also takes into account any filters that are applied, so it can delete only Pending subscriptions for example. The new rule is that it will delete exactly what you see in the `Subscribed To` column
* Misc: Show Connect with Stripe button as soon as the gateway is enabled in settings
* Misc: Show a notification when future payments are scheduled through Stripe but the gateway is disconnected

= 2.13.9 =
* Feature: Added possibility to Export Members based on the payment gateway that they used to subscribe
* Fix: Issue with Subscription Import when trying to update existing members
* Fix: Issue with Payments Export not working
* Fix: Always show Renew button for Expired subscriptions, similar to Canceled status
* Fix: Notice appearing on the admin group dashboard page in some cases
* Fix: Notices that could trigger from the Subscription Plans Product Discounts metabox when an empty row was present
* Fix: Issue with the Pending Manual Payment email not being sent
* Misc: Updated documentation links for the Export and Import functionalities

= 2.13.8 =
* Fix: A security issue. Thanks to Wesley Craft for the report
* Fix: Stripe is now respecting the {{http_referer}} tag from Profile Builder Custom Redirects

= 2.13.7 =
* Fix: Issue with Setup Wizard not going past the first step
* Fix: Product Memberships metabox not appearing for WooCommerce Products
* Fix: Error that could be triggered in some cases on the Reports page

= 2.13.6 =
* Feature: Restricted posts are now also excluded from the Elementor Loop Grid widget
* Fix: Add compatibility with Elementor Element Cache to our Content Restriction integration and form widgets 
* Fix: Some warnings that could appear on the Members List table sometimes
* Fix: Discount code uses not counting when purchasing a plan with a free trial
* Fix: Billing Amount display issue with Stripe when the first payment after a free trial has a discount
* Fix: An error relating to the Import functionality
* Fix: Reset subscription data when an admin changes the status to abandoned
* Misc: Added support to search payments by member_subscription_id to the pms_get_payments() function

= 2.13.5 =
* Fix: Security issue regarding unauthenticated content restriction bypass. Thanks to Francesco Carlucci
* Fix: Now the Exclude Restricted Posts From Queries functionality is enabled by default on all websites. The existing option to activate this feature was changed into an option to disable it. You can find the disable option on the Settings -> Content Restriction page
* Fix: Exclude posts from queries not detecting single pages of custom post types properly
* Fix: Added support to the Exclude Posts From Queries feature to filter posts from Rest API search requests
* Fix: Compatibility changes for the Multiple Currencies add-on
* Fix: Improve reports loading times and performance
* Fix: Add support to match subscriptions based on subscription_id when importing
* Fix: Allow importing of usermeta data
* Fix: Don't instantiate Subscription Plan class with random post types
* Fix: More fixes relating to the doing it wrong WordPress 6.7 notice
* Fix: Correctly assign member subscription id to a newly created payment with PayPal Standard
* Fix: Issue where a subscription purchase using a 100% discount code through the Manual payment gateway was setting the wrong expiration date for the subscription
* Fix: Issue with Fixed Period Memberships not showing the Cancel subscription action
* Misc: A notice that could appear in some cases
* Misc: Fix Reports page state when no payments are available for the selected period
* Misc: The admin Payment Gateway selection was moved to a separate subtab on the Settings -> Payments page

= 2.13.4 =
* Feature: Import subscriptions from a .csv file. This can be used to create, update or migrate subscriptions. Go to the Reports -> Imports tab to use it
* Fix: PHP Notice that started appearing with the WordPress 6.7 update
* Fix: Issue with reCaptcha v3 not submitting forms correctly when Chrome was used
* Fix: Show correct amount in the pending payment email when a discount code is used
* Fix: Add support for REST API search queries when the restrict posts from queries option is used
* Fix: A notice coming from the reCaptcha functionality
* Misc: Small correction on the Dashboard page
* Misc: Fix some potential notices that could appear in some cases

= 2.13.3 =
* Fix: Issue with Stripe not identifying correctly a 100% discounted purchase in the front-end
* Fix: Issue with recurring subscription information remaining after a subscription change, upgrade or downgrade in some cases
* Fix: Notice when opening the Update Payment Method form
* Misc: Add copy feature to the Code fields from Discount Codes
* Misc: Small improvement to email merge tags for unlimited subscriptions

= 2.13.2 =
* Feature: Added reCaptcha v3 functionality. Go to the Settings -> Misc -> reCaptcha page to enable it
* Fix: Improve verification when saving subscription plans so it doesn't fail when the PHP instance is missing the ctype functions

= 2.13.1 =
* Fix: Security issue regarding the refresh function of the Divi admin builder interface module. Thanks to Arkadiusz Hydzik from Wordfence
* Fix: An edge case with the Register Domain functionality from Stripe where it wasn't able to correctly register the website URL
* Fix: Incorrect subscription processing with Stripe when a plan was free but had a sign-up fee applied
* Fix: Warning triggered by a function
* Misc: Separate countries in Stripe between production and test modes
* Misc: Show search box for the Load Scripts Only On Certain Pages select
* Misc: Filter the pages from the Load Scripts Only On Certain Pages functionality so additional post types besides pages can be listed: pms_scripts_potential_pages_list

= 2.13.0 =
* Fix: Issue with Export functionality not working correctly
* Fix: Some notices coming from the Export functionality with newer PHP versions
* Fix: PHP 8.2 notices coming from the [pms-account] shortcode when actions were disabled
* Fix: Issue where the Subscription Plan price couldn't be set to 0
* Fix: Compatibility issue between our Free Trial functionality and the WooCommerce Stripe gateway plugin
* Fix: Issue with Free Trial not working correctly when changing subscriptions using the Manual / Offline payment gateway
* Fix: Issue with billing amount not being set correctly for plans purchased through the Manual / Offline payment gateway
* Misc: Added a filter to enable the display of user roles created by other Subscriptions Plans when creating a subscription plan: pms_get_user_role_names_exclude_subscription_plans_created_roles
* Misc: Speed up processing when checking if discounts are defined
* Misc: Fix a count issue for Setup Wizard progress steps

= 2.12.9 =
* Feature: Added option to exclude restricted posts from default queries. Go to Settings -> Content Restriction to enable this functionality
* Feature: Implemented a Multiple User Role selection functionality for the Users -> Edit User page
* Fix: Did a security review fixing random issues
* Fix: Security issue regarding unproperly sanitized URLs around some back-end pages. Thanks to Colin Xu from Wordfence
* Fix: Issue with Stripe when both Login and Register forms were present on the same page
* Misc: Corrected some documentation links
* Misc: Let the Stripe Payment Element grow naturally with the form width

= 2.12.8 =
* Fix: Incorrect spelling on cancel button title
* Misc: Compatibility changes for Form Designs paid version update
* Misc: Added a filter that can be used to manipulate the query arguments of the pms-payment-history shortcode: pms_payment_history_shortcode_args

= 2.12.7 =
* Fix: Admin bar setting to take into account individual user admin bar settings
* Fix: Small security change for a Setup Wizard action
* Misc: The Stripe Payments Element locale is now set to the website locale. 
* Misc: Add a spinner before the Stripe form loads

= 2.12.6 =
* Fix: Issue with WYSIWYG element toolbar from some back-end fields displaying incorrectly
* Fix: Issue with Stripe payment methods that redirect offsite
* Fix: A PHP 8.2 notice that could appear in some cases
* Misc: Add a filter the discount code field value: pms_discount_code_field_value

= 2.12.5 =
* Fix: A scenario where sign-up fees weren't applied to new users with Stripe
* Misc: Add a renewal log type when an admin manually renews a subscription

= 2.12.4 =
* Fix: Change GDPR Delete button type from submit to button
* Fix: When a payment fails during a Stripe Setup Intent, show a link for the login form
* Fix: Resolve compatibility for Stripe payment methods that redirect offsite and the redirect set on a Profile Builder form
* Fix: A case with Stripe where webhooks were not being processed
* Fix: Scenario with Stripe where the Customer and Payment Method ids couldn't be changed by the admin
* Misc: Fix a warning that could appear in some cases
* Misc: Show users email address alongside their username when listing users to add a new payment or member

= 2.12.3 =
* Fix: German translation issue that was present in the files we supply with the plugin
* Fix: Javascript error being triggered when an error happened while trying to process a Setup Intent
* Fix: Issue with manual payments added over a pending subscription extending it's duration twice
* Fix: Made some changes to how Stripe processes webhooks
* Misc: Allow resizing of the back-end WYSIWYG fields
* Misc: Fix an attribute typo for the discount codes field

= 2.12.2 =
* Fix: Allow reset password form to submit correctly when being placed on the same page as the register form
* Fix: Issue with recurring discount code not being applied to future payments done with Stripe
* Fix: Renewal issue for free trial subscriptions where the plugin tried to erroneously apply the trial again
* Misc: Run a custom javascript trigger when a validation error happens in the registration form: pms_checkout_validation_error
* Misc: Filter the landing page URL of the password reset form so it can be adjusted through code: pms_recover_password_landing_page_url

= 2.12.1 =
* Feature: Added an option to change the text that is displayed over a WooCommerce Product when it has a member discount. Go to the PMS -> Settings -> WooCommerce page to customize this
* Fix: Improve Registration page loading speed when Stripe payment gateway is used
* Fix: Issue with the Subscription Plans field not displaying correctly on the back-end Profile Builder -> Form Fields page in some cases
* Fix: An issue with the Profile Builder Userlisting expiration date merge tags which were not taking into account Unlimited subscriptions
* Fix: Issue with the start time of subscription being broken when an admin manually edits a subscription
* Misc: Disable Payment Retry functionality when an admin manually edits a subscription
* Misc: Added a filter over the Profile Builder Edit Profile form that can be displayed on the Account -> Edit Profile tab. This can be used to have different forms based on the members subscription: pms_member_account_wppb_edit_profile_form
* Misc: A couple cosmetic changes for the Reports page

= 2.12.0 =
* Feature: Added integration with TutorLMS to allow admins to setup paid courses that can be accessed after buying a subscription
* Feature: Improvements to the Reports page: added more stats like new revenue, recurring revenue, subscription plan earnings, payment gateway revenue etc. Also added a comparison area showing the same stats but from last year.
* Fix: Sending of the Renewal Email when the Stripe gateway is used
* Fix: Issue with Apple Pay verification not working properly on subdomains
* Fix: Position for Save button on plugin pages
* Fix: Change initial payment type for PayPal Standard Recurring payments
* Fix: Issue with Upgrades, Downgrades when a 100% discount code was used with Stripe
* Fix: A scenario with Apple Pay, Google Pay in which the form was getting stuck
* Fix: Issue with the Pricing Tables preview modal not opening
* Misc: Allow admins to edit the payment gateway of a subscription through a filter that needs to be enabled: pms_edit_subscription_enable_payment_gateway_editing
* Misc: Allow payments to be searched by a discount code
* Misc: Add a link to see who used a discount code over the Uses column of the Discount Codes listing
* Misc: Add a class over the duration of a subscription plan in front-end
* Misc: Added a link over the transaction ID for payments linking to the payment gateway dashboard

[Click Here](https://www.cozmoslabs.com/docs/paid-member-subscriptions/free-changelog/?utm_source=wp.org&utm_medium=pms-description-page&utm_campaign=PMSFree) to view the full changelog.
