Members with fixed-term or one-time memberships can renew their membership. During renewal, they may also choose to switch to a recurring subscription for the same level.

By default, Paid Memberships Pro starts the new subscription immediately after renewal, which can cause the member to lose any remaining time from their current term.

This recipe keeps the member’s existing expiration date by skipping the initial payment and starting the new recurring billing cycle when their current term ends.

Graphic for a Paid Memberships Pro code recipe titled ‘Keep Existing Expiration When Switching to Recurring Billing.’ The image shows a website dashboard with a ‘My Memberships’ section listing a Silver membership that expires October 31, 2025.

Understanding What Happens at Checkout

This recipe uses two filters: pmpro_checkout_level and pmpro_level_cost_text.

The pmpro_checkout_level filter runs during checkout, before a user’s membership level is saved. It lets you modify the level object — for example, adjusting its billing amount or start date. In this case, it’s used to set a future start date for the recurring subscription, based on the member’s current expiration date.

The pmpro_level_cost_text filter updates the level’s cost display text on the checkout page. This helps clarify when the recurring billing will begin so members understand they’re paying $0 today and that the new subscription will start later.

Together, these filters make renewals smoother and prevent early billing for members who still have time left on their active membership.

Paid Memberships Pro checkout screen showing a Silver membership with $0.00 due today and recurring payments of $25 per month beginning October 31, 2025, demonstrating how to delay recurring billing until a member’s current term expires.

About the Code Recipe

This code recipe delays the start of a new recurring subscription until the member’s current term expires. It sets the initial payment to $0 and adjusts the checkout text to show when the recurring billing will begin.

Where This Recipe Helps:

These scenarios are common when transitioning existing members to ongoing billing. They also occur when giving members the option to “renew automatically” after a prepaid term. This recipe prevents overlapping billing and protects the member’s remaining paid time. It creates a smoother experience for both the member and the site owner.

Membership account page in Paid Memberships Pro showing a Silver level expiring October 31, 2025, used to illustrate how to preserve the existing expiration date when switching to recurring billing.

Note: This recipe only works when a member renews the same level. It doesn’t apply when switching to a different level.

The Code Recipe

This customization works as-is — no code edits are required.

Adding the Recipe to Your Website

You can add this recipe to your site by creating a custom plugin or using the Code Snippets plugin available for free in the WordPress repository. Read this companion article for step-by-step directions on either method.

Free Course: Membership Site Development—The Basics

Develop a deeper understanding of membership site development in this beginner-level course. Learn how to make your site work better, save yourself time and money, and improve your site's performance.

Featured Image for Membership Site Development Course: The Basics


Was this article helpful?
YesNo