Paid Memberships Pro works great with Stripe. It is our gateway of choice when the option is available.

In the Stripe dashboard, you will notice that they have a way to create “plans” and “coupons” and to apply them to customers and customer subscriptions. These are really useful features, but PMPro doesn’t use them how you might expect.

First, we don’t integrate with Stripe coupons at all. The “discount codes” that are setup in PMPro are only managed on the WP/PMPro side of things. We don’t mirror the discount codes in Stripe. Instead, when a user checks out on your site using a discount code, we adjust the pricing before sending the charge or subscription request to Stripe.

So how is that done? What we do is every time someone checks out on your site, we create a brand new plan. Then we adjust the pricing of the plan based on discount codes or addons or other custom code and pass the custom plan to the Stripe API to setup a subscription. Once that is done, we delete the plan we created. This doesn’t delete the subscription for the customer, but it does keep all of these custom one-time-use plans from littering up your Stripe dashboard.

We do things this way because it gives us greater flexibility over the price and other settings of a subscription when we set it up through the Stripe API. Different addons and custom code might adjust the pricing of plan at checkout and we like that this is possible. It also makes things more similar to how we do things with the other gateways which allows us to avoid a certain amount of custom code just to support the Stripe API.

There is a downside to doing things this way, and that is that you can’t take advantage of some of the cool reporting Stripe has for plans and coupons. You can’t glance in Stripe and see how many people signed up for your Gold Level/Plan because to Stripe it looks like everyone gets their own plan. Hopefully the PMPro reports make up for this.

What can be done? Braintree has an API that is similar to Stripe’s, but in the Braintree subscription API method they allow you to adjust the price and term of the plan before applying it. As far as I know, this is not available in the Stripe API yet. It would be a really cool feature and would allow us to reuse plans instead of creating news ones with each checkout. (Ironically, Braintree doesn’t allow the creation of plans via the API so you need to create a standard plan in Braintree first. But after that, everyone is given that plan even if you adjust the price or other values for them specifically.)

Hope this clears some things up.


Comments (57)

Author’s gravatar

Hi Jason,

Does PMPro work well with recurring payments on Stripe? Unfortunately, I cannot get it to work and I get a message saying that billing limits cannot be setup and recurring payments won’t work.

Thanks for your time,
Paras

Reply
Author’s gravatar

Billing limits are not supported by Stripe (i.e. bill $10 per month for 6 months). Sometimes using an expiration date on the membership level can do what you need. Recurring payments are supported. If you are getting an error around recurring payments, please post to our member forums.

Reply
Author’s gravatar

Can you be more clear on how someone could set this up? There is very little documentation available about recurring memberships with stripe.

Author’s gravatar

In PMPro, you would just check the “recurring” option on the edit level page. Then set the amount and period. This post is more technical about how we integrate, but for most users you should just be able to let PMPro do it’s thing… and maybe just realize that the “plans” and “coupons” features on the Stripe side aren’t used the same way as if you created a membership directly in Stripe.

Author’s gravatar

Thanks Jason. I’ll give that a try.

Author’s gravatar

” Sometimes using an expiration date on the membership level can do what you need. ” how do you do that? what if i want to set 6 months .. how do i set todays date + 6 months?

Author’s gravatar

Hi,
Is it possible to create memberships into a website with PMPro from another worpdress installation? A kind of API or plugin to connect both websites?

Thanks!

Reply
Author’s gravatar

We’ve done this custom for another client. I’ll see if I can get some of that code onto GitHub. Ultimate, it would have to be custom coded for the two sites that are integrating and there are a lot of connection points where things can go wrong obviously.

The basic way we did it before was to use a custom built “single sign on” (SSO) — this is the code I’d like to open source — plugin that would allow people to login/register for site B using the user/pass from site A. We then used the PMPro XMLRPC API methods to get the user’s level and sync levels across sites. https://github.com/strangerstudios/paid-memberships-pro/blob/dev/includes/xmlrpc.php#L18

Reply
Author’s gravatar

Thank you very much for such detailed reply. 🙂

We are considering to just keep everythin on one site and simplify everything, but it is great to be able to study the possibilities for the future.

We will have a look to that code for sure. Thanks again.

Author’s gravatar

first great product. I wanted to be clear on the way subscription plans work between PMP and Stripe. If I create a subscription plan in the stripe dashboard, that is recurring, PMP has no way to pass the plan name/id so that it maps the customer to the plan? If there is a way, do I need to add the plan info to the hidden fields in the form info that gets passed to stripe? Thanks In Advance

Reply
Author’s gravatar

PMPro doesn’t use the plans in the Stripe dashboard. It creates new plans on the fly for each checkout, adds them to the customer as a subscription, and then deletes the plan (so it doesn’t litter up the list of plans in Stripe).

Reply
Author’s gravatar

Hi,
I suppose that if the user cancel its membership, the system notify stripe to stop to charge this costumer, is that right?

Thanks

Reply
Author’s gravatar

Is there anyway to get the more typical Stripe popup when one goes to buy, allowing the user to fill out there info in the popup as opposed to using the payment fields from PMPro Membership?

Reply
Author’s gravatar

It should be possible with some development, but I haven’t looked into it. My guess is it would be hard to do if you were using any other addons/custom code that adjusted the membership price/etc. But if you had simple $x/month type levels you wouldn’t have to worry about that.

Reply
Author’s gravatar

Can you elaborate on how to do this with a simple 10/month flat price and only one level. Please.

Author’s gravatar

Great program. I want to have a professional level membership with membership costs but be able to (1) offer a discount code that wipes the entire cost from the level; (2) have a second discount code or even a third and fourth level discount that steps the membership costs down to another discount level. What is the best way to arrange this? I set up an initial professional membership and charged my on card to see if it worked. It shows the charge is pending, but hasn’t clear yet. (Believe it will, but at full cost.) Thanks for your anticipated answer.

Reply
Author’s gravatar

You can add the discount codes via Memberships –> Discount Codes in the dashboard. Then direct your members to the checkout page the level. The discount codes page in the dashboard shows links to the checkout page with &discount_code=XXX in it that applies the discount codes. So you members can checkout at those links to get the new prices.

If I missed something, please post to the member forums and we can follow up.

Reply
Author’s gravatar

Jason, normally yes I would say, ok let your software do all the great work of keeping track of and billing people and reminding people when their card has expired etc.. for subscriptions, but… for a few reasons we would like to use the stripe code directly, and therefore the “subscriptions” would live in Stripe vs living in our/your wordpress. Is this possible?

Reply
Author’s gravatar

Is there a way to make the checkout page look like the stripe checkout form, I love the plugin but my checkout page is really ugly

Reply
Author’s gravatar

If you’d like to get on a call to go over what changes you’d like, we can probably do that and get them done as part of a little help here project: https://www.paidmembershipspro.com/little-help

If you want the popup style Stripe checkout, we can’t do that. Although I’ve heard of people doing that with PMPro. I haven’t personally done it and am not sure how long it would take. Not sure if that is what you meant.

Reply
Author’s gravatar

Can I use coupon code when using PayPal Express?

Reply
Author’s gravatar

Yes.

Reply
Author’s gravatar

We only have one version of Paid Memberships Pro.

1. Activate Paid Memberships Pro.

2. (Configure it, etc)

3. Go to Memberships –> Discount Codes to add a discount code for your memberships.

Similar to Stripe, it does not integrate with any “coupons” on the PayPal side. All of the computation and tracking is done on the WP side.

Author’s gravatar

PMPro stats are almost all way off and incorrect so not having Stripe plans really sucks. There is no place to get accurate number of paying users, MRR, churn, etc. especially since we use PayPal as well.

Reply
Author’s gravatar

We’re aware of the bad numbers and it’s something we’re working on. What are the most important numbers you need? How are your levels setup? Then we can keep you in mind to make sure the reports work best for you.

Reply
Author’s gravatar

Thanks for replying Kimberly. Would be great to have all of the Memberships Stats showing correct values. The Visits, Views and Logins and Sales and Revenue are less important, we have those stats elsewhere. If we just used Stripe, we would get complete stats with Baremetrics or another Stripe SaaS dashboard but there isn’t one that supports PayPal so I am relying on the PMPro stats to show correct combined stats.

Author’s gravatar

Hey Jason, when we set up a “subscription” in PMPro do they just automatically get billed on the reoccuring subscription through stripe? Since we are setting this up for the first time we want to make sure we are communicating to our users correctly.

Reply
Author’s gravatar

Yes. If your level has a billing amount (e.g. $x per 1 month) and DOESN’T have an expiration date, then users will be billed automatically by Stripe each month. Stripe sends a message to the webhook then, that will create an order in PMPro and send users an email about the order.

Reply
Author’s gravatar

Hi Jason, Am I understand this thread correctly in that Stripe integration with Paid Memberships Pro allows recurring payments? When I select Billing Cycle Limit to ensure a customer only gets billed 2 more times after the initial payment I get a message that says “Stripe integration currently does not support billing limits”. If I set an Membership Expiration date my thought is it will terminate the membership at that date. I’m just looking to collect 2 additional payments after the initial payment.

Reply
Author’s gravatar

Correct. There are a couple of ways to do billing limits like this with Stripe. If you post to the member forums and mention that I sent you from this comment, we’ll help you to get something working on your site. Roughly a couple methods are:

(1) Use code like this (https://www.paidmembershipspro.com/change-membership-level-on-cancellation-or-expiration/) to put members into a “Paid” level with the same access but no subscription after their membership expires. You’ll want to check that they have 3 paid orders first in case they cancelled early. You might want to also edit or adjust the expiration email to just say their subscription is paid in full and their membership will remain.

(2) Hook into pmpro_order_added to check if a user has X paid orders and then cancel their subscription. Make sure that if you have code running on the pmpro_stripe_subscription_deleted hook that it checks if the user’s membership should be cancelled or not.

Reply
Author’s gravatar

Hi, I have a problem. I set up a website with woocommerce, pmpro for woocommerce and pmpro. It was supposed to charge a membership fee and $5 dollars monthly after that. It does everything but it does not charge the $5 monthly. I am using stripe with montly subscription. It does not give me any errors. It just not charging the $5 monthly. Can u help?

Reply
Author’s gravatar

If your members are checking out on the WooCommerce checkout page, you’ll need a WC addon like WC Subscriptions to handle recurring orders.

If you have users checkout with the PMPro checkout page, then recurring should work.

Reply
Author’s gravatar

Hi, could anybody tell me if your stripe addon can handle only credit card payments or all the new payment services like sofort.com, giropay and SEPA direct debit, too?
Thanks

Reply
Author’s gravatar

Can someone please explain to me where to put this and if i need to put it anywhere?

Web Hook URL:

To fully integrate with Stripe, be sure to set your Web Hook URL to

https://bangerbeats.ca/wp-admin/admin-ajax.php?action=stripe_webhook

Reply
Author’s gravatar

In the new Stripe dashboard, you click on the “Webhooks” link in the left sidebar menu. Then click the “Settings” link. Then click “+ Add Endpoint”. Paste in the URL. Make sure to choose live/test based on what you need and make sure to add one for live after you’re done testing.

Reply
Author’s gravatar

Hi!
For some reason PMPro changed all my client subscriptions and reoccurring payments to not paying on the 10th this month. Now I cant change this back so I’m creating new subscriptions on stripe. Is there a way to change it back for the clients from the PMPro side of things?

Reply
Author’s gravatar

Unfortunately this isn’t an error I have seen before. We would need to help you troubleshoot and resolve as part of our members support. If you would like assistance with your issue please consider a support membership.

Reply
Author’s gravatar

Can you please tell me if a recurring discount code will last the life of the membership or is it just for the second payment? The wording in the backend is a bit unclear. What I need to achieve is a regular price on the front end of $30/month with a discount code that will make the first and every subsequent recurring charge $15/month until the customer decides to cancel. Thank you.

Reply
Author’s gravatar

The pricing on a discount code completely overrides the membership level’s pricing. So if you set a code to $30 initial payment and $15 per month they user will be charged $15/mo ongoing.

Reply
Author’s gravatar

Thank you for your reply! It sounds like it does what I need, but I’d like to make sure I’m completely clear if that’s ok.

Membership level 1 $30/mth
Membership level 2 $300/yr
Discount 1 = $15/mth initial and recurring
Discount 2 = $150/yr initial and recurring

So, customer 1 selects Membership level 1 and using discount 1 will only ever get charged $15/mth for as long as they want until they cancel.

And customer 2 selects Membership level 2 and uses discount 2 so they will only ever get charged $150/yr now and forever until they cancel.

Customer 3 selects Membership level 1 with no discount so they get charged $30/mth now and forever until they cancel.

Customer 4 selects Membership level 2 with no discount so they get charged $300/yr now and forever until they cancel.

Is that all correct? Thanks for your patience. 🙂

Author’s gravatar

Yes this is all correct – the user can enter the discount code on the checkout page or you can send direct links including the discount code in the format checkoutpageurl/?level=LEVELID&discount_code=CODEHERE

Author’s gravatar

Oh my goodness, I didn’t know that! Thank you so much for your reply and confirming things for me. Super excited to get this live, we’re so close

Author’s gravatar

I have a regular membership fee of $150 but I want to set up a discount code for first 3 years where members pay $75 for the first 3 years and regular price of $150 after that. So I set up a recurring subscription with an initial payment of $75 with billing amount of $75 with billing cycle limit of 2.

So my question is, what happens after 2 billing cycles (or 3 years in total) are completed?

Does their membership expire? Do they automatically get charged $150 (which was my intention)? Or they don’t get charged anything and continue to be members.

I guess I just want clarity what “billing cycle limit” means?

Is there a better way to achieve what I wanted to achieve?

Reply
Author’s gravatar

This would need to be configured as a custom trial period rather than a billing cycle limit.

Initial payment: $75
Custom trial: $75 for first 2 payments
Subscription: $150 per year.

Reply
Author’s gravatar

Hi there. I have created a yearly membership level and (to my knowledge) set it up correctly on PMP. However, a payment came through for this to our Stripe account, but there it doesn’t say anything about the fact that it should expire at the end of one year, or that it should request a recurring payment after each year. Do I have to create the plans separately on Stripe? And how can I sync the membership on PMP and Stripe? Surely I don’t have to go to Stripe each time a payment comes through, and assign the new member to the appropriate plan on Stripe manually?

Reply
Author’s gravatar

Hello,

We had levels configured with some initial + recurrent prices. no problem so far.

Yesturday, we had to change the prices of all our levels so we did it from the admin.

But it seems that all the existing stripe subsriptions have not been changed ?

Is it normal ? how to change the old stripe subsriptions to match the new level’s prices ??

Thx

Reply
Author’s gravatar

Hi Manu,

This is normal, only future signups will be placed on the new pricing. There is no real quick and easy way to change existing subscriptions to the new price but if you get in touch with us on the Member Support Forums we can have a look at this for you.

Reply
Author’s gravatar

We have a lot of customers where prices are not correct since this level’s prices update.
Our buisness is actually broken.

Actually we’re not premium so we’ll have to pay to rget in touch with the support

“get in touch with us on the Member Support Forums we can have a look at this for you”

Does this means the support will find a way to update all the Stripe subscriptions ??
It’s not even possible to change an active subscription manually in Stripe ! the only way to do this is to use the Stripe API.

We are eventually ok to pay your premium pmpro plan if you confirm that support can handle this automatically with some php wordpress + stripe API php code ?

Thx in advance for your answer

Author’s gravatar

Hi Manu,

Thanks for additional information.

You mentioned “We have a lot of customers where prices are not correct since this level’s prices update.
Our business is actually broken.”

Existing members price/subscription should not have been affected when you changed the membership price of the level. Only new signups should be charged the new price of the level and all older members should have just continued to be charged the original price until its time for the membership expires and they need to renew it. Since this seems like it is not the case, our support engineers will need to take a closer look in order to see what could be causing this.

Regarding the request to change the price of the membership subscription and add all members to the new price, I believe our support engineers may have a script that can potentially do change over members to a new membership price. However, it is important to keep in mind that we always try to help our members where we can with writing up custom code gists and implementing them but if this customization work falls outside of our support scope, we will recommend getting in touch with a developer.

So specifically in your case, should you decide to sign up, our support engineers will gladly take a look and see what needs to be done to help you with this issue and your request to change members over to the new membership pricing but if the work included falls outside of our support scope, they will recommend that you reach out to a developer. In this case, you can either reach out to a developer and continue to be a Plus member or take us up on our 30 Day, full money back guarantee.

Hope this makes sense. Let me know if you have any further questions.

Leave a Reply

Your email address will not be published. Required fields are marked *