[Membership 2 Pro] Allow Membership 2 Pro Subscribers to Update Their Credit Card Information

We're using Membership2 Pro with Stripe for recurring payments on a weekly subscription. One of our subscribers decided to update her billing/credit card information. I don’t know exactly how she tried to do it, but I’m guessing she logged in and messed with her billing settings. However, instead of updating the card that was on her Stripe profile, MS2P created an entirely new user inside Stripe with the same email address, and added her new card to her new user ID.

Unfortunately, the user thought they did everything correctly to update their card, only to find out the following week that their original card was still being charged.

I’ve looked at Stripe and found this documentation for allowing websites to set users up to update their billing preferences via API: https://stripe.com/docs/recipes/updating-customer-cards

Can this functionality be added into MS2P?

In the meantime, and as reference for anyone else who has struggled with this problem, I’ve contacted Stripe support and they advised me to follow this process to allow the user to update their card information without upsetting the connection to their Membership 2 Pro subscription:

Login to Stripe:
1. Go to Customers
2. Search for your customer
3. Copy their Details > Account Information > ID
4. Take note of the current credit card associated with their account for the future (you'll need this a few days later)
5. Go to Billing > Invoices > Create New
6. Paste the ID you copied and select the user
7. Invoice them for $1, which you will manually refund after they make the payment
8. While creating the invoice, under “Billing” select the following:
-- a. Email invoice to collect payment at a later date
-- a. -- 1. Payment due: 0 days
-- b. Invoice payment page:
-- b. -- 1. include a Stripe-hosted link to an invoice payment page in the invoice email
-- c. Accept payment with…
-- c. -- 1. Credit or debit card

This will allow the user to make a $1 payment with their new credit card. Then, after they make the payment, go back to their account profile and manually delete their original credit card. This will force their MS2P subscription to use the payment method on file, which is their new credit card.

Might also be worth leaving a note for your subscribers on their /account page to contact you directly if they want to update their payment details.

If you've had this issue and want MS2P to allow us to avoid charging our subscribers $1 to update their billing information, please vote this post up so we can show the developers how important this functionality is!


  • stripedrhino
    • Site Builder, Child of Zeus


    Just to clarify the steps for removing the old credit card from their stripe profile:

    After the user runs their new card for $1, you will see their user profile update with a new Source, not with a new Card. You will then delete the default Card, which is their old card. Then refresh the page and you will see that the new Source will have the "default" badge on the right side of the screen. You should also see a note at the top of their profile saying "Updated default payment method."

    Don't forget to refund them their $1.

  • stripedrhino
    • Site Builder, Child of Zeus

    I hate this process and it's depressing to have to jump through these hoops or ask my subscriber to cancel and resubscribe to handle updating their credit card information. Imagine if Amazon.com made me cancel and resubscribe to change my credit card! This seems like it should be a much higher priority.

  • Carmelo
    • Site Builder, Child of Zeus

    I agree with this cc change feature for Stripe needing to be completely defaultly built in. It's unfortunate, but that's how it is.

    So with that said... I did find a nearly seamless way to integrate credit card changes/updates in Membership2, making the user do the card change themselves. It might be a way for all of you out there to have the user change their credit card info themselves, without you intervening at all. Takes a little time upfront to set it up, but it's not much time if you know what to do (couple hours, more or less, depending on your membership setup).

    The basic idea is to have another set of memberships that are exact duplicates of your existing memberships. When the user get's the email notification that their credit card is about to expire, they sign in through the link in the email or a link on their account page that points to a page you made with a "Update Credit Card Info" button for every membership level they are in. They click a button and it will take them to the checkout page with a pro-rated price on it to the *duplicate* membership. They click "buy" or whatnot, enter in their new updated Credit Card number and purchase. Since the new membership they sign up for are exact duplicates, it works. When it comes time for their card to change again in X years, they get rotated back to the original membership levels you have on this same page, and so forth. Setup once and forget (unless you add/subtract/modify your membership levels around all the time)

    Here's how I did it:
    1. Enabled Pro-rating add-on
    2. Created duplicate memberships of all my current memberships. For example, if you have 3 membership levels, make 3 more, each one replicating 1 of the 3 setting for setting. You may want to put a note or clue in the title of the memberships noting that it's related to credit card changes. I changed my duplicate one's titles to not have capital letters...
    3. I made a plugin for a shortcode that will allow the placement of an upgrade button on a page/post that allows a member to upgrade from one membership to another. Find that plugin here: https://premium.wpmudev.org/forums/topic/issue-with-membership-2-pro-add-on-pro-rating#post-1301096
    4. Made a page specifically for changing credit card information. I use the shortcode upgrade buttons multiple times on this page to allow purchasing of alternate duplicate memberships here. This page also contains membership2 shortcodes to where if they are in one membership, it will show the duplicate membership upgrade button, and if they are in the duplicate membership, it will show the normal membership upgrade button.
    5. Put a link to the "changing credit card information" page on the members 'account' page near the bottom in a section I labeled "Other". Simple.
    6. Made sure each membership level's "upgrade path" is set up correctly. If someone upgrades from regular membership to duplicate membership, make sure the regular membership's upgrade path for the duplicate membership is set to 'cancel and pro-rate'. And if someone upgrades from duplicate membership to regular membership, make sure the duplicate membership's upgrade path for the regular membership is also set to 'cancel and pro-rate'. Try not to get too confused on this step, think logically here.
    7. Anywhere (protected pages, categories, urls, shortcodes, plugin code, etc.) on the website where the normal membership level content is hidden from the public, I also set the appropriate duplicate membership level in the same place, effectively once again, somewhat duplicating the membership level settings so the duplicate membership levels match the regular membership levels.

    It seems to work so far during testing. It pro-rates fine when memberships are monthly, etc. The member does the credit card swap all themselves without you intervening. No collecting cc numbers, or logging into Stripe, no 1 dollar purchases, no extra "hoops"... None of that.

    Even the WPMUDEV devs can simply integrate this without much extra coding- by allowing members to "upgrade" memberships to the same membership level (perhaps enabling this in a simple Membership2 setting toggle). Pro-rating and "upgrading" to the same membership level they are already in will make it so we don't have to keep using other alternate membership levels to switch back and forth to.

    Hope this helps you all out!

    • Ash
      • WordPress Hacker

      Hello Carmelo

      Thank you so much for the idea with a detailed explanation. I didn't test it though but it seems a workaround :slight_smile:

      We really appreciate that you spent your time to contribute to the community, sending some cookies on your way :slight_smile:

      Have a nice day!


Thank NAME, for their help.

Let NAME know exactly why they deserved these points.

Gift a custom amount of points.