Paid Memberships Pro 3.9 and later can calculate a future date at checkout and use it for one of two things: the date a member’s first recurring payment is charged, or the date their membership access ends. You choose the date pattern within settings, and PMPro works out the actual date for each member when they check out.

Use date patterns when every member in a level should renew or expire on a shared calendar date, no matter when they joined. Calendar-year memberships, first-of-the-month billing, course cohorts, and seasonal passes are the most common examples.

Using the Subscription Delays or Set Expiration Dates Add On? Both Add Ons are now part of Paid Memberships Pro v3.9+. Your existing level and discount code settings carry over automatically. PMPro automatically deactivates the old Add Ons, and you can delete them from your site.

Choose the Right Setting

Date patterns appear in two places on the Edit Membership Level screen. They do different jobs, so start by picking the one that matches your goal.

  • First Recurring Payment: Controls when recurring billing begins for a recurring level. The member still pays the initial payment, if set, at checkout and gets access right away. Their subscription then charges for the first time on the calculated date, and every billing cycle after that follows your level’s normal billing period.
  • Membership Expiration: Controls when membership access ends. A specific expiration date replaces the “after a set duration” expiration, like “1 year after checkout.” When the date arrives, the membership expires, and any recurring subscription for it is cancelled.

You don’t need a date pattern for a rolling membership that should simply renew or expire a fixed amount of time after each member joins. A monthly level that bills every month from the member’s signup date, or a one-year level that expires 12 months after checkout, works with the regular level settings.

Set the First Recurring Payment Date

  1. Navigate to Memberships > Settings > Levels and edit a level.
  2. In the Billing Details section, check the box for Recurring Subscription and set the billing amount and period.
  3. Under First Recurring Payment, choose one of these options:
    • Default (One Billing Cycle After Checkout): The standard behavior. A monthly level charges again one month after checkout.
    • After a Number of Days: Enter how many days after checkout to charge the first recurring payment. This is the setting for free or paid trials of any length, like a 14-day free trial.
    • On a Specific Date: Use the date pattern builder to choose the date.
  4. Click Save Level.

Coming soon: Screenshot of the Edit Membership Level screen, Billing Details with First Recurring Payment set to “On a specific date” and the builder showing “The same day each month” on the 1st.

The level’s pricing text on the Levels page and at checkout tells the member when billing starts, for example: “Recurring payments will begin on November 1, 2026.”

Set a Membership Expiration Date

  1. Navigate to Memberships > Settings > Levels and edit a level.
  2. In the Expiration Settings section, check the box for Membership Expiration.
  3. Under Expiration Type, choose On a Specific Date.
  4. Use the date pattern builder to choose the date.
  5. Click Save Level.

Coming soon: Screenshot of the Edit Membership Level screen, Expiration Settings with Expiration Type set to “On a specific date” and the builder showing “The same date each year” on December 31.

The level’s pricing text shows the calculated date, for example: “Membership expires on December 31, 2026.”

If the level also has a recurring subscription, you’ll see a warning that the level has both recurring billing and an expiration date. That combination is valid, but make sure it’s what you want. Members will be charged on schedule until the expiration date, then the subscription is cancelled. Read When to Set Up Recurring Billing and Expirations for Memberships for more detail.

Use the Date Pattern Builder

Both settings use the same builder. Pick a type from the dropdown, then fill in the day or date.

  • The Same Day Each Month: Choose a day from 1 to 30, or last day. PMPro uses the next time that day comes around. Choose the 1st to bill or expire on the first of the month.
  • The Same Date Each Year: Choose a month and day. PMPro uses the next time that date comes around. Choose December 31 for a calendar-year membership that ends at the end of the year.
  • Custom Pattern: Type a pattern yourself. Use this for a fixed date like 2027-01-15, or for anything the first two options can’t express, like “December 31st of next year.” See the syntax reference below.

Coming soon: Screenshot of the date pattern builder dropdown open, showing “The same day each month,” “The same date each year,” and “Custom pattern”.

Most sites never need the custom option. If you do use it, check the level’s pricing text after you save. It shows the date your pattern resolves to today. If the pricing text doesn’t mention a date, the pattern wasn’t valid and PMPro is ignoring it.

Date Pattern Syntax Reference

A date pattern has the same shape as a date: year-month-day. Each part can be a number, or the year and month can be a token that PMPro fills in at checkout.

Year and Month Tokens

TokenMeaning
Y or Y1The next time the date comes around, this year or next.
Y2The date in the next calendar year, even if it hasn’t happened yet this year.
Y3, Y4, …Two calendar years out, three calendar years out, and so on.
M or M1The next time the day comes around, this month or next.
M2The day in the next calendar month, even if it hasn’t happened yet this month.
M3, M4, …Two calendar months out, three calendar months out, and so on.

The day is always a number from 1 to 31. Tokens aren’t case sensitive, so y-m-15 works the same as Y-M-15.

Pattern Examples

Here’s what each pattern resolves to for a member who checks out on October 14th, 2026.

PatternWhat It MeansCheckout on October 14th, 2026
2027-01-15A fixed date. Every member gets this exact date.January 15th, 2027
Y-12-31The next December 31stDecember 31st, 2026
Y2-12-31December 31st of next yearDecember 31st, 2027
Y3-12-31December 31st, two years from nowDecember 31st, 2028
Y-01-01The next January 1stJanuary 1st, 2027
Y-M-01The next 1st of the monthNovember 1st, 2026
Y-M-15The next 15th of the monthOctober 15th, 2026
Y-M2-15The 15th of next monthNovember 15th, 2026
Y-M-31The last day of the monthOctober 31st, 2026
Y-02-31The last day of FebruaryFebruary 28th, 2027

Notice that Y2 only changes the result when this year’s date hasn’t happened yet. Y2-01-01 gives the same date as Y-01-01, because January 1st has always already passed by the time anyone checks out. Use Y-01-01 for “next January 1st.”

Rules PMPro Follows

  • Today Counts as Passed: A pattern that lands on the checkout date moves to the next occurrence. A member who checks out on October 14th with Y-M-14 gets November 14th, not today. A member who checks out on December 31st with Y-12-31 gets December 31st of the following year.
  • Day 31 Means the Last Day of the Month: In months with fewer than 31 days, PMPro uses the month’s last day. Y-M-31 resolves to November 30th in November and February 28th (or 29th in a leap year) in February. The same applies to yearly patterns, so Y-02-31 always lands on the last day of February.
  • Fixed Dates Don’t Move: A pattern like 2027-01-15 stays on that date forever. Once it’s in the past, update it. See fixed dates in the past below.
  • Older Patterns Still Work: Patterns written for the retired Add Ons, like Y1-M2-01, still work and resolve to the same dates they did before.

Examples

Calendar-Year Membership

Everyone’s membership runs through December 31st, no matter when they joined.

  • One-Time Payment: Set the initial payment, leave Recurring Subscription unchecked, and set Expiration Type to On a Specific Date > The Same Date Each Year > December 31 (Y-12-31). Members renew by checking out again.
  • Recurring Annual Payment: Set the initial payment and an annual billing amount, then set First Recurring Payment to On a Specific Date > The Same Date Each Year > January 1 (Y-01-01). The initial payment covers the rest of the current year, and the subscription renews every January 1st.

PMPro doesn’t prorate the initial payment. A member who joins on December 20th pays the full initial payment for 11 days of membership. If late-year signups are common on your site, see Adjust the Set Expiration Year After a Specific Month.

Monthly Billing on the 1st

Set the initial payment and a monthly billing amount, then set First Recurring Payment to On a Specific Date > The Same Day Each Month > 1 (Y-M-01). Members pay the initial payment at checkout, and every recurring payment after that is charged on the 1st.

Course or Cohort With a Start Date

For a program that starts on one specific day, use a custom pattern with a fixed date. Collect a deposit (or nothing) at checkout, then set First Recurring Payment to On a Specific Date > Custom Pattern and enter the start date, like 2027-01-15. Every member’s recurring billing begins that day. Update the date before you open enrollment for the next cohort. For a full walkthrough, read Building a Cohort Membership in Paid Memberships Pro.

Seasonal Pass

A summer pass that always ends September 30th: set Expiration Type to On a Specific Date > The Same Date Each Year > September 30 (Y-09-30). Someone who joins in May gets access through September 30th of that year. Someone who joins in October gets access through September 30th of the next year, so close signups for the level after the season ends if you don’t want that.

Free Trial That Collects Payment Details at Checkout

Set the initial payment to 0, set the monthly billing amount, and set First Recurring Payment to After a Number of Days with the trial length, like 14. Members enter their payment details at checkout and aren’t charged until the trial ends. The checkout page tells them: “Recurring payments will begin after your 14 day free trial.”

Use Date Patterns With Discount Codes

How a discount code handles these settings depends on its Discount Type.

  • Percentage Discount or Fixed Amount Discount: The code uses the level’s First Recurring Payment and Expiration Type settings. There’s nothing extra to configure.
  • Set Custom Pricing per Level: The code has its own First Recurring Payment and Expiration Type settings for each level, using the same builder. These replace the level’s settings completely.

Custom pricing codes don’t fall back to the level. If a custom pricing code leaves First Recurring Payment on the default or doesn’t set a specific expiration date, members who use the code get no delay and no set expiration date, even if the level has one. Set the dates on the code too if you want them to apply.

Coming soon: Screenshot of the Edit Discount Code screen with Discount Type “Set custom pricing per level”, showing First Recurring Payment and Expiration Type for one level.

Learn more about setting up codes in the Discount Codes documentation.

Important Behavior to Understand

The Initial Payment Is Always Collected at Checkout

First Recurring Payment only moves the start of the subscription. Whatever you enter as the level’s initial payment is charged at checkout. Set the initial payment to 0 if members shouldn’t pay anything until the recurring date.

A Specific Expiration Date Ends Access

An expiration date isn’t a billing setting. When it arrives, the member loses access to the level and any recurring subscription for it is cancelled. If you want members to keep paying and keep access, use First Recurring Payment instead.

Renewing Members Get the Set Date

When a level expires after a set duration, a current member who checks out again for the same level has the new time added to their existing end date. With a specific expiration date, that doesn’t happen. The renewing member’s new expiration date is the date the pattern resolves to at checkout, the same as a new member’s.

Changing a Level Doesn’t Change Existing Members

These settings are applied when a member checks out. Changing a level’s First Recurring Payment or Expiration Type later doesn’t move the billing dates or expiration dates of members who already joined. Read how to change pricing for existing subscriptions if you need to update current members.

Fixed Dates in the Past

A fixed date like 2026-01-15 doesn’t roll forward once it has passed.

  • A past First Recurring Payment date moves up to the checkout date, so the first recurring payment is charged at checkout along with the initial payment.
  • A past expiration date gives the member one day of access.

Review any level or discount code with a fixed date after that date passes, and either update it or close signups.

Shared Renewal Dates on Large Sites

When every member renews on the same day, your payment gateway sends a notification to your site for each one of those payments at once. On sites with thousands of recurring members, check with your host about handling the extra load on renewal day. In general, only force a shared renewal date when your membership model needs one. Our guide to setting all members to renew on the same date covers the trade-offs.

Last updated on October 14, 2026


Was this article helpful?
YesNo