Configuring and Troubleshooting with Stripe

Note: Our Stripe gateway uses Stripe Connect, which is more secure and easier to set up than previous connections. Our Stripe Connect integration only allows you to charge credit or debit cards and does not support Stripe’s additional payment methods

Video Setup Instructions

Written Setup Instructions:

Navigate to MemberPress > Settings > Payments page and add a new gateway. Or if updating an existing gateway, find that Stripe gateway.

Next, click on the Blue “Connect with Stripe” button.You will first need to authenticate MemberPress using your MemberPress.com account username/password.

Once authenticated with your MemberPress account, you’ll then be redirected to authenticate with your Stripe account.

If you’re not logged into Stripe, click the “Sign in” button at the top:

Select your Stripe Account and click the “Connect my Stripe account” button:

If your Stripe account has not been fully set up and enabled for Live mode, you will not be able to connect until you have verified your account.

After connecting, you’ll be redirected back to MemberPress, and you’ll see the following:

That’s all! Now you’re even more secure, and your secret and publishable keys and webhooks are no longer displayed and will be managed automatically for you.

Stripe Checkout

MemberPress recently introduced the option to use Stripe Checkout, which allows members to pay for your memberships on a hosted Stripe page. Enabling Stripe Checkout opens up the ability to take payment options such as Apple Pay and Google Pay. You can enable Stripe Checkout by navigating to Wp-Admin -> MemberPress -> Settings -> Payments and clicking, “Enable Stripe Checkout” on your Stripe payment method:

You’re all set! Now, members who sign up with Stripe will be taken to Stripe to process their payment. You can now enable Apple Pay and/or Google Pay if you want to offer it as a payment option to your members. Both Apple Pay and Google Pay should be enabled by default, but you can selectively disable or enable them if you want to only enable Apple Pay or vice-versa. You’ll want to sign in to your Stripe Dashboard and go to Settings -> Payments -> Checkout Settings to find the appropriate options:

Apple Pay and Google Pay should be available to members on your site when they check out with Stripe Checkout.

NOTE: If a user wants to use Apple Pay, then they’ll need to meet the following criteria:

  • Apple Pay is enabled for Checkout in your Stripe Dashboard.
  • The customer’s device is running macOS 10.14.1+ or iOS 12.1+.
  • The customer is using the Safari browser.
  • The customer has a valid card registered with Apple Pay.

NOTE: If a user wants to use Google Pay, then they’ll need to meet the following criteria:

  • Google Pay is enabled for Checkout in your Stripe Dashboard.
  • The customer is using Google Chrome or Safari.
  • The customer has a valid card registered with Google Pay.

Detailed List of Gateway Settings

Below you will find explanations for every setting that you can find for your Stripe Gateway as a reference for both during and after you have set up your gateway:

  • Name – The name users will see when choosing this gateway option during registration.
  • Gateway – This should be set to “Stripe” and will not show up on the front end.
  • ID – ID of your gateway used in the database and to be entered if importing subscriptions for this gateway.
  • Show Payment Label – When checked or unchecked, this will show or hide the Name you entered for this gateway option.
  • Show Payment Icon – When checked or unchecked, this will show or hide the Stripe Credit Card symbols for this gateway option.
  • Show Payment Description – When checked or unchecked, this will show or hide the description for this gateway option.
  • Connect to Stripe – If your gateway is not set up, you will see the blue “Connect with Stripe” button to begin setting the gateway up. If you have connected your Stripe account, you will see a green message stating the connection has been successful with an option to disconnect it. Only disconnect your Stripe account here if advised to do so by our support team or in the “Gateway Issues” section below. 
  • Test Mode – Check this box if you would like to use Stripe in Test Mode for testing, or leave it unchecked if you are ready for live payments. IMPORTANT NOTE: Due to the way Stripe is configured, you will NOT be able to uncheck this option if your site does not have SSL set up. Please contact your host regarding how to get SSL on your site if needed.
  • Enable Churn Buster – Churn Buster is a 3rd party service that allows you to automatically respond to failed payments in Stripe with email campaigns, card update pages, and real-time insights to reduce churn by up to 50%. You must have a Churn Buster account to use this feature. Learn more about Churn Buster on their website here

Capabilities of the Stripe Integration

  • Process One-Time Payments
  • Process Recurring Payments
  • Process Refunds
  • Cancel Recurring Payments
  • Change Credit Card for Recurring Subscription
  • Pause Recurring Payments
  • Resume Recurring Payments
  • Process Free/Paid Trial Periods
  • Credit Card Expiring Reminders Supported

Configuring for the EU’s SCA

As of Sept 14, 2019, the EU is enforcing Strong Customer Authentication (SCA). Stripe is handling this SCA with 3D Secure (3DS).

MemberPress 1.6.0+ now fully supports SCA via Stripe’s new SCA enabled APIs. Be sure you keep your MemberPress plugin up to date to keep up with the latest changes and improvements.

At this time, there’s nothing special you need to do to get this feature working, aside from enabling the emails mentioned below.

When a member is registering and 3DS is enforced, a pop-up will appear where they can complete their 3DS authentication. If successful, the subscription and subsequent payments should proceed without requiring further authentication. If unsuccessful, the customer will see an authentication failed error and be asked to try again.

Subscriptions created before SCA enforcement should not be subject to 3DS; however, we do anticipate that in the future, some renewals could end up being held for 3DS authentication by the customer’s bank.

When a payment is held for authentication, Stripe can automatically email the customer with a link to (re)authenticate. But you must enable the email options in your Stripe.com dashboard settings.

Stripe.com > Dashboard > Settings > Stripe apps > Billing > Subscriptions and emails > Manage payments that require 3D Secure.

Your settings should look like this:

How to Test with Stripe

First, you will need to set your gateway to test mode by simply checking the Test Mode box after connecting Stripe as outlined in the video above between minutes 1:30 and 3:40. When going through the registration process as a new user would, you will need to present test card credentials. Here you can find the list of approved Stripe Test Card credentials.

How to Process a Refund

Though you should normally be able to follow our instructions to refund users who signed up via Stripe, you can also follow these detailed instructions provided by Stripe support to cancel directly in Stripe if needed. 

Canceling in Stripe

Usually, you will want to cancel subscriptions directly in MemberPress as outlined here. However, you may need to cancel a subscription directly in your Stripe Dashboard. This would mainly be needed if you deleted the subscription in MemberPress before correctly cancelling it. If this or anything else is the case, you can follow these detailed instructions to cancel directly in your Stripe Dashboard:

  1. Login to your Stripe Dashboard here
  2. In the top search bar, search for the user based on the user’s email (best) or username. 
  3. Click on the correct customer based on your search.
  4. Scroll down to the ‘Active subscriptions’ section.
  5. Click on the “…” icon.
  6. Click “Cancel subscription”.
  7. In the popup, select “Immediately” as the option.
  8. Click the “End subscription” button. 
  9. Verify that it now says “No active subscriptions” in the “Active subscriptions” section.

Editing Stripe’s Auto-Cancellation Trigger

After X amount of failed attempts to bill a recurring subscription, Stripe will automatically cancel the subscription. Within your Stripe Dashboard, you can control how many attempts Stripe will make before automatically canceling the subscription. This is done from within your Stripe Dashboard > Settings > Stripe Apps > Billing Settings > Retry Rules, as shown here:

You are welcome to set this to be whatever you would like, but just note that if you are using the Churn Buster; you should have it set to auto-cancel after the last failed attempt (as is set with the “cancel the subscription” option from the dropdown as shown above – the same setting is available for Custom dunning rules as well).

How to Add a Missing Payment

These instructions are to be followed when in Stripe you see a completed payment, but that payment is not reflected on the MemberPress > Transactions page and/or is not connected to its subscription on the MemberPress > Subscriptions page.

Please note that a missing payment is a sign that there is an issue with your Stripe webhook, or (though less likely) it is being blocked by a server/host security feature or impacted by aggressive caching.

*If you see a Subscription ID on the MemberPress > Subscriptions page for the user that looks like mp-sub-xxxxxxxxxxx, then that needs to be fixed before proceeding. Please follow these instructions to fix it. 

Step 1 – Find the Transaction ID for the Payment in Stripe

To begin with, you will need some information in order to find the payment if you are not already aware of it. Things you can use to search for it include:

  • The subscription ID (if a recurring subscription) as it appears on the MemberPress > Subscriptions page (looks like sub_xxxxxxx or if on an older version of MemberPress it might look like cus_xxxxxxxx).
  • The user’s email, which can be found on the Ideakit > Users page OR the MemberPress > Members page.
  • The date the billing happened.
With that information obtained, you can find the transaction ID in Stripe by following these steps:
  1. Login to your Stripe Dashboard. You can use this link.
  2. Using the top search bar, enter in the information gained above.
  3. Click on the PaymentIntents section from your search results. This is where payments are listed. 
  4. Verify the correct payment based on the information you already have about the user and payment (date of purchase, user’s email, etc.). 
  5. Click on the payment and scroll down until you see this section: 
  6. Copy the Latest charge ID you see there. This will be used in Step 2 below.

Step 2 – Manually add the Transaction

To manually add the missing payment, you can follow these steps based on the type of payment you received:

A Single One-Time Payment (NOT associated with an existing recurring subscription):
  1. Go to MemberPress -> Transactions.
  2. Select Add new at the top of the page.
  3. Paste in Transaction ID you identified above in Step 1 into Transaction number.
  4. Select the user you would like the transaction to be associated with. You can start typing in the username, and available options will pop up.
  5. Select which Membership the transaction should be associated with.
  6. Add the transaction Sub-Total amount. This should be what the user paid you.
  7. Add in any data related to taxes as applicable.
  8. Set the Status of the transaction to Complete.
  9. Set the Gateway to Stripe.
  10. Leave the Subscription field blank.
  11. Add the Created Date. The date you set here will be the date at which the user paid you.
  12. Add the Expiration Date. The date you set here will be the date at which the user’s payment is set to expire.
  13. Select Create.
If you want to add a transaction to an existing recurring subscription:
  1. Go to MemberPress -> Subscriptions.
  2. Search for the user’s subscription you would like to add the missing payment to.
  3. Hover over the subscription’s unique ID and click on the “Add Txn” link.
  4. Paste in Transaction IDyou identified above in Step 1 into Transaction number.
  5. Select the user you would like the transaction to be associated with. You can start typing in the username, and available options will pop up.
  6. Select which Membership the transaction should be associated with.
  7. Add the transaction Sub-Total amount. This should be what the user paid you.
  8. Add in any data related to taxes as applicable.
  9. Set the Status of the transaction to Complete.
  10. Set the Gateway to Stripe.
  11. Leave the Subscription field as is (it should have been auto-populated with the correct ID).
  12. Add the Created Date. The date you set here will be the date at which the user paid you.
  13. Add the Expiration Date. The date you set here will be the date at which the user’s payment is set to expire.
  14. Select Create.

Step 3 – Verify

After completing these steps, the payment should be correctly added, and the user’s subscription should be marked as active, as highlighted here ( Note: on the MemberPress > Subscription page, the Active column should be set to a green Yes, and the Expires on column should reflect the missing payment’s expiration date.): 

How to Change Your Stripe Account

NOTE: Do  NOT delete your Stripe gateway and recreate it!

If you need to update your Stripe account that is currently being used for taking payments on your site, please follow these steps:

  1. On the MemberPress Settings Payments tab, edit your current Stripe gateway to differentiate it from your old one. 
  2. On the MemberPress Settings Payments tab, use the (+) option to create your new Stripe gateway. Follow the instructions above to set it up. 
  3. For each and every membership on your site (and all memberships created in the future), follow these steps:
    1. On the MemberPress Memberships > Click on the Membership Name > Membership Options > Registration tab > click on the Customize Payment Methodssetting.
    2. Select all the payment gateways you want users to be able to purchase through. 
    3. Leave the old Stripe gateway option unchecked so that it appears in the Inactive Payment Methods section of that setting. 
    4. Click the Update button to save the membership settings. 
    5. Repeat for every membership on your site and all future memberships. 

How to Change Stripe Statement Descriptor

MemberPress creates a Stripe Product the first time membership is purchased, with a generated statement descriptor. 

It first tries to take the “Site Title” from the Ideakit General Settings page; if that is empty, it will use the domain name from the “Ideakit Address (URL)” option on the same page. 
Once the Product is created, the statement descriptor can only be changed within Stripe. MemberPress will generate the same statement descriptor for each membership the first time it’s purchased. So if you’re adding new memberships often and want to control the statement descriptor when these products are created, you can use this custom code, for example: https://gist.github.com/allycspf/7b5f562a2f706e44a63177c6803f14a3.

Otherwise, you can edit the statement descriptor in the settings for the Product within the Stripe Dashboard. First, go to Products, then click into the product, then click Edit at the Details section, expand the Advanced options section where you can change the statement descriptor or set it to empty to use the account statement descriptor.

Note when Moving to a New Domain

If you are going to be moving to a new domain (i.e. www.olddomain.com to www.newdomain.com), then please, follow these instructions after the domain update:

  1. On the IdeaKit Dashboard -> MemberPress plugin -> Settings page -> License tab, be sure you are using at least version 1.8.7 or newer of MemberPress and that your license key is active. The version is shown right above the Update button.
  2. Disconnect your Stripe payment gateway in the MemberPress plugin > Settings page > Payments tab (do NOT delete it, just disconnect)
  3. Add /wp-admin/?mp-clear-connection-data=true to the end of your site URL, so it looks something like: https://www.yoursite.com/wp-admin/?mp-clear-connection-data=true
  4. Click Enter on your keyboard to visit that URL. This will clear out your Stripe connection for the old domain.
  5. Now reconnect your Stripe gateway. This will update your webhooks to use the new domain.

Note when Cloning to a Staging Site

If you clone the live site without performing these steps below, it could have a negative impact on your Stripe renewal payments. To avoid any potential issues, after you have cloned it to your staging site, be sure to follow these steps on your staging site:Live -> Staging:

  1. After cloning to your Staging site, disconnect your Stripe gateway on the staging site. DO NOT delete it, just disconnect on staging.
  2. After disconnecting the Stripe gateway on your Staging domain, visit this URI on your staging domain to clear out any connection data: https://staging.domain.com/wp-admin/?mp-clear-connection-data=true.
  3. If you need to test Stripe in your staging site, add a NEW stripe gateway and connect it.

Staging -> Live:

  1. Disconnect, then delete any testing Stripe gateways you added to the staging site. DO NOT delete the stripe gateway from your live site.
  2. Then push to live.
  3. After pushing to live, run the URI https://live.domain.com/wp-admin/?mp-clear-connection-data=true on the live site.
  4. Finally, re-connect your live Stripe gateway.

IMPORTANT: Disconnecting Stripe, deleting the Stripe payment method, or disconnecting from MemberPress.com on a staging site (cloned from live) will delete the live webhook!

Gateway Issues

If you have followed exactly the instructions on this page for setting up your gateway, then it should work properly. So, if you are noticing issues with your gateway, it will likely be related to one of the items listed below. We have also included what to do if you see these issues.

  1. Subscriptions and/or Transactions aren’t updating correctly – If you are seeing subscriptions connecting to MemberPress with an ID that looks like mp-sub-xxxxxxxxxx and transactions that have ID’s that look like mp-txn-xxxxxxxxxx, then the issue is related to your Webhook URL. You may be able to resolve this issue by navigating to your MemberPress > Settings > Payments tab > and using the “Disconnect” button to break the connection, then reconnecting using the setup instructions above for a soft reset. Please do this at a low traffic time for your site, as any signup attempts made while disconnected will result in a failed signup.

    If you’re sure that you’ve set everything right, but payments are still not getting through. This could be IP blocking issue.
    If you have Wordfence, iTheme Security, some other software firewall or your hosting filters IPs, please make sure that these IPs are allowed (taken from https://stripe.com/docs/ips#webhook-notifications page):
  2. You or the user aren’t receiving the MemberPress Welcome email, New user sign up email, or other MemberPress emails – These new user MemberPress emails are triggered during the registration process by a completed transaction. If the transaction isn’t completing in MemberPress but is marked as such in Stripe, then this is related to the Webhook URL. Please follow the same instructions in the above point to fix.
  3. You received an email from Stripe with this subject or similar: Problem with your Stripe webhook (https://yoursite.com/mepr/notify/df5436-452/whk) – This email could be triggered by one of the following two items: (1) TLS/SSL certificate issues. Stripe refuses to send the webhook because it doesn’t like the SSL setup on the site. To resolve this, you will need to contact whoever you purchased your SSL/TLS certificate through to make sure your certificate is up to date with the current standards that Stripe is looking for. (2) 403 error caused by an anti-spam or security plugin. To resolve, you will need to find the plugin causing the issue by deactivating any plugin fitting that criteria. If the issue goes away after deactivating the plugin, then you will know that it is the plugin that was causing the issue.
  4. You get the “Sorry, updating your credentials failed. (pmt)” error when you try to complete the Stripe Connect procedure – This most likely means that cURL is either not installed, not functional or not up-to-date on your hosting server. Please go to your IdeaKit Dashboard -> Tools -> Site Health and check the Status tab for any mention of cURL issues. It could look like this: 
    Please note that you’ll get the same error message if your IdeaKit installation is not at version 4.6 or newer.
  5. Your users see this error before getting to the payment screen: ERROR Invalid Payment Method. – This likely means that you have enabled the Customize Payment Methods setting (Which is found in the Membership Options (when editing your membership) > Registration tab.) and left this gateway option unchecked. To fix this, simply uncheck the Customize Payment Methods option altogether, or if you need it to disable other gateway options for your membership, be sure to check this gateway option. 
  6. The checkout page loads, but data cannot be entered into the form. – This will occur if you are not complying with Stripe’s security requirements (having a valid SSL certificate for both live and sandbox payments is mandatory) OR if you are using a javascript minimizer or optimizer. Please contact Stripe support to verify that your SSL/TLS certificate is compliant with their requirements. 
  7. After you add MemberPress’ webhook, your Woocommerce webhook starts having delivery issues and could even get disabled by Stripe. If this happens, you should try removing any value from the “Webhook Secret” at WooCommerce -> Settings -> Payments -> Stripe – https://share.cspf.co/o0umzl1q. Then enable the Woocommerce webhook again in Stripe and monitor for errors.