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.
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
- Navigate to Memberships > Settings > Levels and edit a level.
- In the Billing Details section, check the box for Recurring Subscription and set the billing amount and period.
- 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.
- Click Save Level.
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
- Navigate to Memberships > Settings > Levels and edit a level.
- In the Expiration Settings section, check the box for Membership Expiration.
- Under Expiration Type, choose On a Specific Date.
- Use the date pattern builder to choose the date.
- Click Save Level.
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.
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
| Token | Meaning |
|---|---|
Y or Y1 | The next time the date comes around, this year or next. |
Y2 | The 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 M1 | The next time the day comes around, this month or next. |
M2 | The 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.
| Pattern | What It Means | Checkout on October 14th, 2026 |
|---|---|---|
2027-01-15 | A fixed date. Every member gets this exact date. | January 15th, 2027 |
Y-12-31 | The next December 31st | December 31st, 2026 |
Y2-12-31 | December 31st of next year | December 31st, 2027 |
Y3-12-31 | December 31st, two years from now | December 31st, 2028 |
Y-01-01 | The next January 1st | January 1st, 2027 |
Y-M-01 | The next 1st of the month | November 1st, 2026 |
Y-M-15 | The next 15th of the month | October 15th, 2026 |
Y-M2-15 | The 15th of next month | November 15th, 2026 |
Y-M-31 | The last day of the month | October 31st, 2026 |
Y-02-31 | The last day of February | February 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-14gets November 14th, not today. A member who checks out on December 31st withY-12-31gets 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-31resolves to November 30th in November and February 28th (or 29th in a leap year) in February. The same applies to yearly patterns, soY-02-31always lands on the last day of February. - Fixed Dates Don’t Move: A pattern like
2027-01-15stays 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.
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.
Get Support From Our Team of Experts
Have a question about how to use this feature? Our Support Page outlines three ways to get support.
Our Max plans include hands-on help customizing your membership site and implementing new features. Upgrade to PMPro Max now »
Last updated on October 14, 2026

