PMPro v2.1Version 2.1 of Paid Memberships Pro is out with SCA support for the Stripe gateway integration, along with other bug fixes and enhancements. These bugs have the potential to hinder sales, so be sure to upgrade. Full details and a changelog for the release are included in this article.


Important Gateway Notes for SCA Compliance

Stripe users should update to v2.1 as soon as possible to avoid issues when SCA authentication begins to be rolled starting September 14, 2019. Upgrade Paid Memberships Pro and also log into the Stripe Dashboard to update your API to the latest version. This guide covers how to update your Stripe API version in your Stripe dashboard.

Offsite gateways like PayPal Standard and PayPal Express are handling SCA updates on the gateway side. You should still upgrade to v2.1 to benefit from other bug fixes and improvements.

Other onsite gateways like Braintree, PayPal Website Payments Pro, and PayPal Payflow do require SCA updates to our integrations. We are actively working on them and hope to push those updates out as soon as possible.

To learn more about the SCA regulations and how it affects different gateways, read our post here.


Please update Paid Memberships Pro from the plugins page of your WordPress dashboard. You can also get the latest version of PMPro here or version 2.1 specifically here.


The full list of updates is below.

  • FEATURE: Updated Stripe integration to support Stripe v3, Stripe Elements, and their Secure Customer Authorization process.
  • FEATURE: Updated how we store prices to support up to 8 decimals (e.g. for Bitcoin gateway implementations).
  • ENHANCEMENT: Improved error messaging on the update billing page when a gateway doesn’t support it or the user’s current membership doesn’t have a subscription.
  • ENHANCEMENT: Added a pmpro_is_checkout() function that will return true if on the PMPro checkout page or a page with the PMPro checkout shortcode or block.
  • ENHANCEMENT: Showing a warning message when a user about to be deleted has a membership so admins know that existing subscriptions will be deleted at the gateway.
  • ENHANCEMENT: Added a pmpro_braintree_plan_id filter in case you need to adjust plan IDs. This is useful if you have several sites running on the same Braintree account.
  • ENHANCEMENT: Added a pmpro_num_expiration_years filter to adjust the number of years to include in the dropdown to set the year membership will expire.
  • ENHANCEMENT: Tweaked the UI of the orders list and members list in the dashboard.
  • ENHANCEMENT: Added pmpro_membership_levels_table_extra_cols_header and pmpro_membership_levels_table_extra_cols_body hooks to add columns to the members list.
  • ENHANCEMENT: Showing notices to admins when categories are hidden from them on the frontend of the site.
  • ENHANCEMENT: Added a pmpro_url filter to filter URLs returned from that function.
  • ENHANCEMENT: Adding a .pmpro_checkout_gateway-stripe or .pmpro_checkout_gateway-paypal/etc CSS class to the wrapping div for payment fields to aid in styling.
  • ENHANCEMENT: Using the site’s date format option when printing orders.
  • BUG FIX/ENHANCEMENT: If a site has no paying levels, the test gateway will show as the “Default” gateway and we will no longer show a message about requiring gateway setup on the checkout page.
  • BUG FIX/ENHANCEMENT: Updated Russian Ruble definition to have 0 decimals and use   as the thousands separator. (Thanks, Airat Halitov)
  • BUG FIX/ENHANCEMENT: Using add_query_arg when generating IPN URLs to avoid issues on sites that aren’t using pretty permalinks or have moved their admin directory.
  • BUG FIX/ENHANCEMENT: Fixed issue on advanced settings page where clicking on labels didn’t check the corresponding check boxes.
  • BUG FIX/ENHANCEMENT: Updated our pmpro_generateUsername() function to be a bit smarter.
  • BUG FIX/ENHANCEMENT: Now using wp_generate_password() when choosing a random password for a user (e.g. when using the Sign Up Shortcode add on or the $skip_account_fields global).
  • BUG FIX/ENHANCEMENT: Setting autocomplete to false on the “fullname” honeypot field. This will prevent user’s with certain autocomplete tools from accidentally filling it out.
    * BUG FIX/EHNANCEMENT: Now sending name and email fields to PayPay (using Website Payments Pro) even if no address was captured.
  • BUG FIX/ENHANCEMENT: More specific CSS selectors for checkout form elements to make sure errors are highlighted/etc with different themes.
  • BUG FIX: Fixed issue where the first 2000 or so orders might be skipped when exporting orders on large sites.
  • BUG FIX: Fixed issue with setting custom trials on discount codes.
  • BUG FIX: Fixed issue in the SQL query in the pmpro_calculateInitialPaymentRevenue() function. This function is deprecated, but still used by some custom code.
  • BUG FIX: Fixed issue where default templates would fail to load if a custom template was specified.
  • BUG FIX: Fixed fatal errors that could happen when using the PMPro REST API endpoints.
  • BUG FIX: Fixed bug where the invoices page would sometimes show data for the current (admin) users instead of the user the invoice was for.
  • BUG FIX: Fixed bug where the membership stats graphs would sometimes show up blank.
  • BUG FIX: Now falling back to using readfile() if fpassthru() doesn’t existing.
  • BUG FIX: Fixed issue where the from name and email were not set properly if the Only Filter PMPro Emails setting was checked. (Thanks, mjulian87 on GitHub)
  • REFACTOR: Moved JavaScript out of pages/checkout.php and other places into files in the /js/ folder. This will avoid issues where other JS at checkout breaks PMPro checkout and will improve compatibility with tools that optimize JS.
  • REFACTOR: Added unit testing and a started on coverage of some functions in includes/functions.php. (Thanks, Mike Auteri)
  • REFACTOR: The JS function askfirst is now prefixed as pmpro_askfirst.

Comments (1)

Leave a Reply

For faster support related to issues on your specific site please open a ticket in our members support area.

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