Version 3.9 of Paid Memberships Pro includes native settings to set custom expiration dates. Navigate to Memberships > Settings > Edit Level to set or adjust the expiration date for a specific level. We are working to update this documentation as quickly as possible.

What Changed

Levels and custom pricing discount codes can now expire memberships on a date set with a date pattern. The setting is Expiration Type in the Expiration Settings section. Your saved settings carry over and are used as they are.

  • After a set duration: The standard behavior, like “1 year after checkout.”
  • On a specific date: Membership expires on a date set with the date pattern builder. This replaces the duration.

When the date arrives, the membership expires and any recurring subscription for it is cancelled. A member who checks out again for the same level gets the date the pattern resolves to. Time is not added to their current end date.

For developers: the pmprosed_expiration_date_raw and pmprosed_expiration_date filters still run, and the Add On’s helper functions remain as deprecated wrappers. Custom code that removed the Add On’s own hook callbacks no longer has any effect.

Set a Membership Expiration Date

  1. Navigate to Memberships > Settings > Levels and edit a level, or navigate to Memberships > Settings > Discount Codes and edit a code that uses “Set custom pricing per level”.
  2. In the Expiration Settings section, select the Membership Expiration checkbox.
  3. Under Expiration Type, choose On a specific date and use the builder to choose the date.
  4. Click Save Level.
Edit Membership Level Expiration Settings with Expiration Type set to On a specific date, December 31 each year
Expiration Type set to December 31 of each year.

See Date Patterns for Membership Start and Expiration Dates for the builder, syntax, and examples, including calendar-year and seasonal memberships.

Moving From Old Expiration Values

Old values still work. Use these equivalents if you want the builder to show them.

Old Add On valueChoose nowPattern
2024-12-31On a specific date > Custom pattern2024-12-31
Y2-01-01On a specific date > The same date each year > January 1Y-01-01
Y1-M2-01On a specific date > The same day each month > 1Y-M-01

A fixed date in the past gives the member one day of access, so update it before the date passes.