Paid Memberships Pro can be used to set up membership levels with many different pricing structures. You can configure a level to offer a recurring subscription or a level with a one-time payment and expiration date. Unless you really want a membership to expire after a certain time frame, you usually DO NOT want to set BOTH a recurring billing amount AND an expiration date on your levels.

Two Options for Renewals

If you want your member payments to bill automatically, set up a recurring billing amount. Users will receive an Invoice via email when their recurring payments are made. If you’d like your members to also get an email warning them of their upcoming automatic renewal, you can use our Recurring Payment Email Reminders Add On.

If you want a one-time payment that expires after a certain time frame, set an expiration date. Users with an expiration date will get an email before the expiration with a chance to renew and extend their membership for another one-time payment.

If you’d like to give your users the option to choose between the two options, you can use our Auto-Renewal Checkbox Add On.

The Rare Case Where Both Are Needed

There are cases where you would want to set both a recurring billing amount and an expiration date. The two most common cases are payment plans (3 easy payments of $19.95) and courses with a set time frame ($100 per week for our 6 week course). In both cases, you likely need to use custom code so users continue to have access to ongoing content they need even though they won’t be paying anymore. You can use a recipe like this one to have members whose memberships expire be given a different ongoing membership.

Yes, we know we are different.

We know that all membership platforms handle recurring billing and expiration dates in a different way. If you are migrating from another system, this can be especially confusing.

With some systems, user memberships will expire on a certain date unless a new recurring payment comes in. With Paid Memberships Pro, memberships will last until the payment gateway detects a missed payment (or three) and cancels the subscription.

The main difference between these approaches is what happens when sites get out of sync with the gateway. With our approach, users can potentially get their membership extended for free while the gateway tries to tell your site to cancel the subscription. With the other approach, users can potentially have their membership removed accidentally even though their payments were processed by the gateway. In situations like this, we tend to go with the decision that is better for your members.

What if you’ve accidentally set up your Membership Levels with Recurring Billing and an Expiration Date?

This is a bit tricky to fix. The first step would be to review this post and if you really don’t need an expiration date, update your membership levels to remove the expiration dates. This will fix things for new members going forward, but your existing members will have an expiration date set in the PMPro database and PMPro will expire those members on the specified dates.

To fix existing members, you need to update the database to remove the expiration dates from those users. The users will still have recurring subscriptions at the gateway and their subscriptions and membership will be cancelled if they miss payments (assuming your gateway IPN or webhook is working properly).

Back up your database. Then use a SQL query like the following to remove the expiration dates (or “end dates”) from ALL existing and active members. Note that if you have members who were imported, manually added, or had other membership levels that DO need expiration dates, then you will need to alter the query so it only removes the end dates from the users you want it to.

We Are Getting Better

Paid Memberships Pro shows a warning when you configure a level to have both a recurring billing amount and an expiration date. This will help the admin determine if they really intended that membership model or if they need to adjust their level settings and clean things up for active members.

There are other cases of user errors like this that we are trying our best to help site owners avoid. We aim to make things as clear as possible and are building development tools to make it easier for us to detect risky configurations or scenarios so we can give actionable warnings to site admins.

WordPress is a powerful tool. You can do a lot with it. You can also break a lot with it. We will never be able to catch every possible error like this, but we will try our best to help our users avoid the worst ones.

Tagged . Bookmark the . Last updated: . Titled

Comments (35)

I have a simple question about how Initial and Recurring payments are calculated with Expiration date. Suppose I want 3 months of payments of $100 each, for $300 total. I want member to pay prior to the month, so setting $100 as Initial Payment. I then want $100 per month set in Recurring payments. My question is about the number of months to set in Expiration date. Should it be 2 or 3? Seems to me it depends on whether the membership is cancelled before the payment is processed or the other way around.

The initial payment is the first installment is paid right away. So for a 3-month payment check Recurring Subscription, then set the “Billing Cycle Limit” to 2.
The expiration date has to do more with how long the users access to the membership level.
I hope this helps clarify this.
Kim W


I am trying out PMP and have set up different subscription levels all with recurring payments. Will these payments happen automatically on the renewal date? Or will they just lose access unless they “buy” another month, year, etc.


Hello, recurring payments are set-up within the Payment gateway you chose, so when the member checks out for that level, they will agree to the automated recurring subscription on the account details they provided. This will only stop once the admin or the member cancels the level on the site or in the gateway.

I have a question regarding the expiration date.
I have non recurring payment, with membership duration of one year. I want the expiration date to be exactly one year after the last payment, even if the user buys a new membership before the end of his current membership period.
A user goes for a membership on 1st may 2020.
The expiration date is : 1st may 2021 : that’s fine.
Then the 1st march 2021 he goes again for membership even if the current one is not expired.
I want the expiration date to be 1st march 2022.
Is it possible?
Thank you!!

Hello, it looks like PMPro will allow this. The new renewal date should change the expiration date to the same date the following year. So within your membership level settings > billing > other settings > membership expiration > expires in – 1 – select ‘year’.

No: if it’s the same membership level then the expiration date is further because the days between the first expiration date and the new purchasing are reported.
In my example the expiration date would be 1st may 2022 instead of 1st march 2022.
It works like this only if’s the same membership level…if the second purchasing is for an other level then it’s fine.

Hello – Will this allow me to set a year subscription with automated renewal payments, however, if someone cancels a subscription 6 months into a 12 month period, allow them to continue being a member for the remaining 6 months they had already paid for?

I have a “Gold” membership with an expiration date of 1 month. It is not recurring. If the user wants to renew, it does, if not. When it doesn’t renew, I don’t want you to access the “Gold” content
But I see that when the expiration date passes, the user still has access to the content. Is there something I am doing wrong or is this how PMP works?

We had already 50 members before selecting PMPro for our NGO. Our membership activation fee is 500INR and monthly recurring is 100INR and all members already paid us activation fee offline. So we have created a Level and set activation fee 0INR, and recurring 100INR and told all users to register themselves. When everyone registered, we again set the activation fee to 500INR and recurring to 100INR. And we are using Stripe gateway, but none of users are getting monthly bills neither getting charged as monthly. Also they users who applied the membership with 500 activation fee and 100 recurring fee their membership is automatically got cancelled on first recurring date however we set expire to never. Kindly help us to figure out to issue. Many thanks!

Hi there,

Without a support membership I am not able to fully debug this issue for you. It may be a problem with your Stripe gateway and webhooks. I would suggest going through the troubleshooting guide here: If you have a screenshot of your membership level edit page you can send it via email to us at We also offer a discount for NPO if you are considering a Plus membership.

I’m currently testing and have what I think is a problem.
When I add a recurring test Stripe payment, I can access forums that are configured to allow monthly subscriptions.
However, if I cancel the account, access to the forum is immediately revoked. I would like the user to continue to have access, as they have paid for the month and cancelled in good time.
Is there a way to make this happen?
Thanks in advance.

I work with a number of associations and their membership model is a member pays for a calendar year for all. ie All members start 1st Jan and Expiry on the 31st Dec. I got his working fine and no problems there.

However, now they want to add the ability to have recurring payments ie automatically renew at the end of the year. From the doco above it does not seem possible. Any suggestions?

in addition to recurring subscription fees of the same amount, does PMPro offer a solution for recurring monthly fees of varying amounts from month to month?

let’s say one month the fee will be $100, but the next month, the fee would be $150, and the third month , $127. is there a way I can set this up using PMPro and as the gateway?

also, the amount the fee would be is unknown until the end of the preceeding month.

I guess an easier solution is have the ability to manually charge a customer’s card on file? I would have their consent via signed contract of course.

What happens to users who no longer pay membership?

An example case: a user has an annual membership that starts the year 2018. In the next year, 2019 his payment is not made since he has not enough balance. You should cancel your membership, right? Why does the user still have access?

You mention this:

“With Paid Memberships Pro, memberships will last until the payment gateway detects a missed payment (or three) and cancels the subscription.”

But I don’t see it work. Is there a problem?


Membership should be canceled when payment fails. If this is not happening for your site, there is an issue with your gateway communicating with your membership site. Please consider a Plus membership and open a ticket in our support area for dedicated help.

Thanks for the above article and sample PHP code. I have manually imported our membership database marking all members with both expiration date AND recurring payment setting. I want to remove the recurring payment information and keep the expiration dates. Please advise how to do this.

Hello! I’ve been trying to find this answer, but so far no luck – is there a way, when logging in, that the member can see their next recurring payment date? Right now they just see “no expiration” which I now understand the logic of, but I need a place where they can see “your next payment of xx dollars will be on xx date”. Thank you!

I’d actually like to remove the auto-generated invoice (or more correctly termed, “receipt”) for recurring payments to members. They are getting 2 separate emails from PMP and from the Stripe integration. I’d like to only have one and the one I want is from Stripe.

How do I turn off this monthly recurring receipt notification from PMP?

Hi there,

Preliminary question…

We have a situation with a client website, the setup is as follows:

Client offers subscriptions both as a one-off year, and automatically renewing.

The Expiration field present in PMP meta is linked to their CRM, which is very important.

Obviously due to the way that PMP has been made, the Expiry date is not updated +1 year when a successful auto-renewal goes off.

From the instructions that I have seen, auto-renewals must NOT have an expiration date, but in this case it’s needed to keep track of when memberships are expiring/due to renew.

Is there any way of imposing a 1 year expiration date for auto-renew members, that is updated +1 year at the point of renewal billing cycle?

Please provide clarity ASAP!

Thanks in advance,


I have a question regarding the statement “If you’d like to give your users the option to choose between the two options, you can use our Auto-Renewal Checkbox Add On.”

I am using that add-on, but for all members (the ones who choose auto-renewal and the ones who choose single year) an expiration date is being set. If I am using the auto-renewal add-on, should I edit the members who choose the auto-renewal option to remove the expiration date? Do you suggest coding in something to make sure the expiration is not set for new members who choose the auto-renew option or is there a better way to handle it going forward? Thanks for clarifying!

This should not be the case. Your level should be set up with no expiration date and a recurring subscription. I would verify that your payment gateway is properly configured and set to allow recurring payment. I know that PayPal specifically must enable this for your account.

Leave a Reply

For faster support related to issues on your specific site please open a ticket in our members support area.

Your email address will not be published. Required fields are marked *