Membership sites that offer multiple payment methods at checkout can increase conversions, support international members, and reduce friction for renewals.
But what happens when an active member wants to switch from one gateway to another? From Stripe to PayPal…without paying twice?
Out of the box, Paid Memberships Pro handles payment-method changes within the same gateway (e.g., updating a card on file in Stripe). Switching between gateways requires a more manual process, until now.
This guide explains how to let active members change their payment method or gateway without double billing, using a code recipe you can install on your PMPro-powered site.

Why You Should Offer Payment Method Changes Between Gateways
When members can self-manage their billing, you reduce support requests and keep them active longer.
Common reasons members want to change payment methods include:
- They’re switching banks or credit cards.
- They now prefer PayPal for purchase protection or budgeting.
- They want to use a different payment method for business vs. personal expenses.
- They’ve moved to a country with different payment preferences.
Without this recipe, switching gateways often meant:
- Manually cancelling the old subscription.
- Creating a special discount code to avoid overcharging.
- Setting a delayed start date with the Subscription Delays Add On.
The approach below handles this automatically.
How It Works
When a member clicks the new “Change Payment Method” link in their Membership Account, they are taken to checkout for their current level with these adjustments:
- Initial payment set to $0.00 today.
- First subscription payment scheduled for their existing renewal date.
- Legacy pricing preserved. In this recipe, the recurring billing amount stays the same, even if your current level price is higher (optional).
On successful checkout, the old subscription is cancelled at the previous gateway and a new subscription is created at the chosen gateway. The member’s renewal schedule continues without interruption.
Overall Scope and Limitations of This Code Recipe
- This code recipe works with any payment gateways you have active, for example if you are using Stripe as your primary payment gateway and offer PayPal Express or Manual/Offline Payments as secondary options.
- It’s designed for standard recurring levels ($10/month, $100/year, etc.). You may see odd behavior if your levels have trial periods or customized billing limits.
- The logic will only apply to levels with recurring billing. It does not apply this logic when levels are one-time payment, have expirations, or offer lifetime access (for these, there is no active subscription to switch).
- You do not need to use this code in combination with the Proration Add On or the Subscription Delays Add On. But, if these are active in your site for other reasons, the logic in this code still works as expected.
What Your Members Experience
On the My Memberships section of the Membership Account page, members see a new “Change Payment Method” link.
The link is only shown if the following conditions are met:
- The member has an active subscription for the level.
- The subscription’s next payment date is in the future.

Clicking this link takes them to the checkout page for their current level, where they can select any available payment method.
The cost text reflects that no payment is due today and shows the date of the first new payment.

The Code Recipe
With this recipe in place, your members can update their payment method or switch gateways without cancelling and rejoining. That means fewer manual adjustments for your team, a smoother experience for members, and one less reason for someone to churn.
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.
How to Customize This Code Recipe
Once the base recipe is in place, you can adapt it to better fit your site’s membership levels, tone, and member experience. Here are a few ideas:
- Limit the “Change Payment Method” link to certain levels. For example, you might only want gateway switching available for premium tiers or specific recurring plans. To do this, add an early check on the
$level_id
before line 145. - Remove the legacy pricing feature. By default, the recipe carries forward a member’s prior recurring rate. You can remove that so all gateway switches use the current level price instead. To do this, remove lines 94 to 96.
- Change the Account page link text. Update the anchor text to something more descriptive for your audience, such as “Switch How You Pay” or “Update Payment Method.” Adjust the text on line 162 to your preferred wording.
- Customize the checkout cost explanation. The default message says the first payment will be processed on the member’s renewal date. You can reword this to match your tone or provide additional clarity. This text can be modified by editing line 132.
These adjustments allow you to fine-tune the visibility, pricing behavior, and messaging of the feature without changing its core functionality.
Need help setting up this recipe for your site? Check out the three support options for Paid Memberships Pro. Our team can help you adapt the code for custom level configurations or additional gateways. Or, reach out in our community Slack. Someone else may be able to help you or your developer if you aren’t a premium member yet.