How can I change a membership's level and update the billing amount in the gateway?
If you've ever tried to edit someone's membership level, you may have seen a message like this, warning you that automatic billing will be cancelled:
The reason for this is that some of the available payment gateways (like PayPal) do not allow us to automatically change subscription details (like price or duration) after a subscription has been created. Therefore, if the data changes in RCP, we have to cancel the subscription.
Unfortunately, PayPal doesn't offer a way around this. We cannot create a new subscription without the customer's authorization in PayPal again. But other gateways, like Stripe, offer more flexibility.
How to change the subscription amount in Stripe
Edit the customer record and locate the "Gateway Customer ID" field.
Click the "cus_xxx" link to open up the Stripe customer page in a new tab. Leave it open for now, but return to the RCP page. Click through to change the membership level to your desired level and click "Change Level". You will get the warning prompt pictured above, but click "OK".
Note: This will trigger the "Cancellation Email" to be sent to the customer. If you do not want this sent out then you may wish to disable the email first in Restrict > Settings > Emails.
After changing the level, the screen will be missing some information and now we need to add it back to reconnect the membership with Stripe.
First, set the "Expiration Date" to your desired next bill date.
Then check on "Auto Renew".
Click the "Edit" link next to the "Gateway Customer ID" field. Fill this in with the customer ID number from Stripe. You can locate this in the other tab you opened before. It's under "Account Information".
Next we have to go through a few steps to get the "Gateway Subscription ID". In order to get this, we have to create a new subscription for the customer inside Stripe. Back in that Stripe window, scroll down to "Subscriptions" and click the button to "Add subscription".
Click the button to "Add a product". You will need to search for your membership level name in this list and click to add it.
Before you continue, you need to add a trial. If you don't add a trial, your customer will be billed immediately. Adding a trial allows you to delay their first bill date.
If you click "Add trial", you'll notice that Stripe wants you to insert a number of days instead of choosing an exact date. My customer's expiration date is set to "May 8, 2019" in Restrict Content Pro, so I'm going to Google for "number of days until May 8, 2019" to easily convert that into a number of days.
Enter this number in the Stripe trial period, and verify that Stripe has this set to the correct date.
Confirm all the details are correct, then scroll down and click "Start subscription". Once the subscription has been created, you'll be able to copy the "ID" value starting with "sub_" under "Details". We need this back in Restrict Content Pro.
Copy this and paste it back in Restrict Content Pro in the "Gateway Subscription ID" field.
Here's what my membership record looks like now:
Once you have all the details, click "Update Membership" to save.
These steps will ensure that your customer is now billed the new amount in Stripe, and when their payment comes in, Restrict Content Pro will recognize it and renew the new membership accordingly.