While most membership sites we work with offer a rolling membership, many sites operate with a specific renewal schedule. Our Subscription Delays Add On adds a “delay” field to your membership levels and discount codes, allowing you to set a variable-length period between the member checkout and the subscription payment start date.

Read on to explore some popular applications of this logic.

How to: Calendar Year Membership

The most common reason sites would like all members to renew on the same date is for a calendar-year membership (from January 1 to December 31). Members can sign up any time within the year, pay the initial payment (if applicable), and then have their active subscription begin on the 1st of January the following year.

To do this: set the “Delay” field on the “Edit Membership Level” page to Y2-01-01.

Subscription delay settings for an annual renewal on the first of the year.

Pro Tip: Remember that regardless of your subscription delay, the “Initial Payment” for your level will be charged immediately at checkout. If you do not want to charge the member until the start of the subscription, just leave the “Initial Payment” value empty.

How to: Membership Starts on the First of the Month

Another common application of the Subscription Delays Add On is for Monthly Memberships where all members renew on the 1st of the month. Members can sign up any time within the current month, pay the initial payment (if applicable), and then have their active subscription begin on the 1st of the following month.

To do this: set the “Delay” field on the “Edit Membership Level” page to Y1-M2-01.

Subscription delay settings for a monthly renewal on the first of the month.

How to: Membership Starts on a Specific Date

If you’re running a course or group membership that kicks off on a specific date, you can use the Subscription Delays Add On to activate every member’s subscription on the same date. Members can sign up any time prior to the activation date, pay the initial payment (if applicable), and then have their active subscription begin on your specific date.

To do this: set the “Delay” field on the “Edit Membership Level” page to the format YYYY-MM-DD, i.e. 2019-03-15 for the 15 March 2019.

Subscription delay settings for membership to start on 15 March 2019.

Pro Tip: Remember to turn off registrations for the level after the start date or cut-off window but editing the level and checking the box to “Disable new signups”.

Video Demo

The video below will walk through how to use these examples for your membership site.

But wait, there’s more!

This Add On can also allow variable-length trials.

It’s a limitation of most payment gateways that you can only set a trial period equal to your subscription period (i.e. a monthly subscription can only offer a month-long trial). Sites can now offer a unique trial period using this Add On, such as:

  • Set a 30-day trial on an annual membership level by setting the “Delay” field to 30.
  • Set a 1 week trial on a monthly membership level by setting the “Delay” field to 7.
Pro Tip: You can use this Add On to offer a “Free Trial” but still capture the member’s payment information—users would simply need to cancel within the trial window to avoid being charged. To do this, just leave the “Initial Payment” value empty.

View the Add On


This entry was posted by Kimberly Coleman in Add Ons and tagged . Bookmark the permalink. Last updated: September 17, 2018. Titled How to set all member subscriptions to renew on the same date or schedule.

Comments (51)

You can use the pmpro-subscription-delays plugin (on GitHub) to have the payment start later. If you want to have the access start later as well, that would take some different customizations. In the past, we’ve done this by having people checkout for a certain level and then running a script to change all members of the signup level to the “real” level on a certain date.

What is I do want: “to have the access start later as well, that would take some different customizations.”

what is required that doesn’t involve running a script..

I use this and it solved my problem for my sports club memberships expiring on a particular day of the year. I just wish I didn’t have to hard code that date into the code (i.e. 01-01) and could configure it on screen.

It would be even better great if:
1) this one mentioned above (https://gist.github.com/strangerstudios/5709300)
2) This one (https://gist.github.com/strangerstudios/7939124) that changes the text from the remaining number of days to a date.
3) and one I haven’t found yet to change the text on the sign-up page

Were all in line to be configured at once in one place and displayed consistently across all screens (membership levels, sign-up page, account page). I believe the confirmation email though says the date though without any of the plug-ins strangely enough.

I was thinking of setting up a pre-sale for the subscription service and this looks perfect for what I would like to do!

I was just wondering if I set the delay in date format, say 2014-06-30, how would the people that sign up after that date be affected?

Would their payments be set to repeat from the delay date or would the delay date be ignored completely and recur from the date they sign up?

Hmmm… I had to take a look at the code to answer this. It looks like it would try to set the subscription date in the past. I’m not sure how the gateways would handle this. If you combined pmpro-subscription-delays with the pmpro-set-expiration-dates addon, you could use the latter to make sure the expiration date is always 2015-06-30 (the next year) even if they sign up after 6/30. I would login on 7/1 to remove the subscription delay just to be safe.

That’s great thank you for looking into it! I will be sure to update the membership level on the day.

Alright, based on the comments above, if I’m understanding things correctly (and from a brief look at the code), it sounds like I can use this plus the drip add-on to get the behaviour I’m looking for.

– Membership level is available for purchase starting Monday Aug 3 (one-time cost).
– Member A purchases and is billed for that purchase on Aug 3. Gets access to Page 1 immediately.
– Member B purchases and is billed for that purchase on Aug 5. Gets access to Page 1 immediately.
– All members get access to Page 2 the following Monday (Aug 10)
– All members get access to Page 3 the following Monday (Aug 17)

– Membership level is created with an initial payment of the desired amount.
– The subscription delay is set to Monday Aug 3. Even if someone purchases later in the week, they’ll still have an effective start date of Aug 3.
– The drip module is set to release Page 1 after 0 days, Page 2 after 7 days, Page 3 after 14 days.

Am I missing anything?

Not exactly. The pmpro series plugin releases content based on the number of days the user has been a member. To get “All members get access to Page 2 the following Monday (Aug 10)” you will need to also adjust member B’s startdate to be in the past or maybe use some other custom code.

So what is Subscription Delays changing, then, if not the member’s start date?

I’m looking at pmprosd_pmpro_profile_start_date (beginning line 83), which appears to be altering / setting the member’s start date via add_filter(“pmpro_profile_start_date”, …)

I’m hoping to have an “introductory offer” which would (for example) allow me to sell 100 memberships between January and March, 2015 for $25. Would this work to be able to have every membership that signs up in the introductory offer to then be renewed for a billing amount of $79 on July 1, 2015?

Or is there another way to do this?

$79 per year then? Or $79 per month? If it’s $79 per year after that, just make sure the initial payment is $25, the recurring amount is $79 per year and set the “subscription delay” to 2015-04-01 (or whenever the first full payment would be).

It should be like Y1-M2-05, but I actually see that there are bugs in the addon to keep that from working.

In the meantime, the workaround is that 2015-03-05 would work (but need to change it every month).

Can you post to our member forums so I can follow up on this?

Does this now work as you describe so that regardless of when the member signs up I want the renewal to be on the 5th of each month?? ( I have more questions if the answer is yes.. 🙂 )

Perfect.. so all together now.. 🙂

I set “Initial Payment” = 0
I checked the “Recurring Subscription” checkbox
“Billing Amount” = $19, 1, months
I set “Billing Cycle Limit” = 3 for 3 month subscriptions, and 6 for 6 month subscriptions
I set “Subscription Delay” = Y1-M2-05

I expect that this is how things should work with these settings:

– Member signs up for our subscription service
– Collect payment at signup – No
– Customer is billed on the 5th of the month following their initial signup and the 5th of every month thereafter (if they signup the 1st – 4th of the month, they will get billed on the 5th of that SAME month, and sigups from the 5th though the end of the month get billed on the 5th of the FOLLOWING month)
Auto re-new subscription – No (Subscriber, must come back to the website to re-new their subscription)

If I do that will things work as I describe or is there more I need to do??

Am I right in thinking that to get all members billed on the same day of the year (e.g. 1st Jan) regardless of signup date, one would enter:



Coolio. Not sure I quite understand the [Y|M]2 short hand though. Does Y1 mean this year, Y2 – next year, Y3 – 2 years hence etc?


Can I use the Subscription Delay plugin for payment plans for events?

Let’s say the Event is 31st Oct 2016 and the event is $900 and I want to offer a payment plan

Up to March 1st 2016: $300 on order, $300 on April 1st 2016, and $300 on October 1st 2016

Up to September 1st 2016: $450 on order, and $450 on October 1st 2016

After September 1st – do not offer a payment plan

Is the solution to set up the following:

For now

initial = $300, subscription delay = 2016-04-01, billing amount = $300 every 6 month for 2 billing cycles

Then On March 1st change the offer to

initial = $450, subscription delay = 2016-10-01, billing amount = $450 every 1 month for 1 billing cycle

Then On September 1st remove the offer

Thanks in advance

Curious how this would be set up on a user import file. Would we create a column labelled “subscription_delay” without the quotes? Or would we use “pmpro_subscription_delay” or “membership_subscription_delay” or something else? And under values in the cells would we just enter a date like say, 2016-06-01 if that’s the day we don’t want renewal to start on, even if they try to pay for a renewed membership beforehand?

Thanks for helping!

My assumptions: (1) one time payments that must be renewed, (2) you intend for imported members to have access immediately. Then you just need to set the membership_enddate column to the renewal date. Members will get an email 7 days before expiration to renew.

If it’s slightly different or more complicated, please post to the forums and we can get more info to help you there.

Thanks for writing back. This is another question not related to the import file. If it should be in the forums let me know.

If we set an expiration date on recurring subscriptions, will that initiate renewal notices by email? How can we set up an email that says “by the way, your membership is going to renew in X days.”

Because what I’m understanding is that if there is an expiration on a subscription, they will get an email saying “hey please go renew.” And if they then try to renew manually before the date set in Subscription Delay, they will pay twice – once for the “too early”, manual subscription, and again for the ‘regular’ subscription they purchased earlier. Is that right?

Or would the system prevent them from being able to renew manually too early?

If we set an expiration date on recurring subscriptions (to activate the email notice, or to ensure non-renewals don’t get access), will that continue to renew automatically on our ‘subscription delay’ date? Or will that negate the billing cycle of 0 (no expiry, no limit to membership renewal years)?

I have weekly memberships. Is there a way to set payments to be every Friday? Something like Y-M-D5 or is this not possible?

Hmmm. Maybe we can add this to the addon, but in the mean time we can help you with the custom code to do this if you post to our member forums. Remind us that I sent you there and offered to write up the script for you.

i don’t want to change the billing date for all membership levels, but only for specific ones. IE i have an annual billing membership, and a quarterly billing membership. the quarterly i would like to bill on the first day of the quarter and the annual i would like to bill on the first of the year. is there a way to do that with this plugin?

It is. Are you using the addon or custom code? The Set Expiration Dates addon works for me on my dev with Y2-09-01. That is the preferred way to do this now. I can check the custom code to fix it if that’s what you used. Also, I think there’s a small chance this bug is specific to certain gateways. Let me know which gateway you are using and as much info as possible about your setup and other plugins. Thanks.

Hi Jason,

I need all members to renew on 1 April, regardless of when they signed-up.
So if someone joins between January & March, they renew 1 April that year, if they sign-up between April & December, they renew 1 April the following year.

What value would I put in the Subscription delay field to achieve this?

I’d very much appreciate your help on this as as I’m getting very sporadic response in the support forum!

Thank you.

Jason is following up in your forum thread – we’re working on a way to automate this so you only have to set things up once, but for now the real way to go about this is to set the expiration to 2017-04-01 and also set a calendar reminder for May 30th to update that value on the site to 2018-04-01. (Or whenever you want to push the expiration out.)

Hi, in my club, the membership year runs from 1 July to 30 June. New members can join at any month of the year, but they pay a pro rata amount in the first year. Can this be put into the add-on, so when they pay via PayPal the correct pro rata amount appears on the PayPal form? Thanks

Right now this requires a custom script. We can help you to code that in our member forums. This is a good idea though to make this kind of thing easier to do without custom code.

Hello, is there a way or an addon to setup a membership to renew on a specific date each month like the 1th of every month ? Thanks.


I’m developing a wine club in which members purchase a boxed subscription on checkout using PMP. They get shipped that box right away. But the RENEWAL is arbitrary. It might renew 30 days after they purchase. Or it might renew 5 months after they purchase. All members renew on the same date.

Will this plugin work for our use case? Does it need to be customized in any way?

Oh, and we need the renewal to happen automatically – so we can’t have an email going to our subscribers saying you must login and renew. If they do nothing, they are billed on the renewal date automatically.

Will it worK?

I am not sure that PMPro is the right solution for this project. It may be possible with the Stripe gateway only, which allows you to update member subscriptions through the API. All of our gateway logic expects to automatically process the member renewal payment on a specific, regular schedule. It sounds like you need the site owner to have the ability to say “Bill Everyone Now” with a magic button.

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 *