Version 1.8.8 of Paid Memberships Pro is out with a handful of bug fixes and improvements. There are important fixes for sites running Stripe, AffiliateWP with PMPro integration, and sites locking down files via the getfile script. We’ve also overhauled the member export to be faster and scale better. We plan to update the orders export next and do even more to improve performance of these functions at scale.Development Changelog for Paid Memberships Pro Release Updates

There were two main bugs that we fixed for our Stripe integration.

  1. Previous updates (1.8.7) caused recurring payments to be logged incorrectly as $0. Going forward, these will be properly tracked.
  2. In a previous update (1.8.7) we switched from tracking Stripe “charges” via their webhook calls to tracking “invoices”. Invoices are more consistent in how they are sent out from Stripe. (E.g. if a user has credit on their account in Stripe, they may get an invoice, but no charge.) However, we failed to account for the fact that Stripe creates $0 invoices when subscription are setup. We were tracking these redundant, mostly harmless $0 orders. However compounded with the bug that caused some non-zero orders to appear as zero dollar orders, things got confusing.

We’ve also included in this update a script to fix old Stripe orders affected by these two bugs. The update will go through all $0 Stripe orders in your database and cross reference them with Stripe. If the order is truly $0 (a new subscription), the PMPro order will be deleted. If the order has a total, that total will be updated on the PMPro side. This will correctly your local orders database and if you were affected by these bugs, you should notice your reports showing higher revenue.

These bugs impacted users of AffiliateWP and other affiliate plugins in particular. Note that while the update script will fix the orders, it should not “ping” the affiliate plugin reprocess the affiliate fee. You will have to manually fix any unpaid affiliate fees. If you need help figuring this out, we can help you in our support forums.

Please note that the script to fix old Stripe orders could take a very long time for sites that generated many orders over the past couple months. A site with 30 or so orders should update in one minute. A site with 3,000 orders could take a couple hours to process. We’ve done our best to have this fix run as delicately as possible in the background on your site, but you might want to wait until low traffic times to run the update.

pmpro-data-update-sampleFor larger sites, a link will be added to your dashboard taking you to a page that will run the update in the background. You must use this link to upgrade your database. If you don’t see a message a link to update your database, then it has been updated already or does not need to be updated.


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


The full list of updates is below.

  • BUG: Fixed issue where recurring Stripe orders were being created with $0 totals.
  • BUG: Fixed issues in pmpro_has_membership_access() that was affecting some sites with files locked down for members. (Thanks, MannyC on GitHub)
  • BUG: Fixed issue where data in the Signups vs Cancellations detailed view chart was shifted back one day. (Thanks, TYT)
  • BUG: Fixed issue where whitespace in email addresses and user names could confuse the pre-existing user checks.
  • BUG: Added some closing HTML tags where needed.
  • BUG: Fixed issue where discount codes could be created with special characters even though only letters, numbers, and – will work at checkout.
  • BUG: Some fixes to the pt_BR language. (Thanks, )
  • ENHANCEMENT: Refactored the members list CSV to use less memory and scale better. It should work faster in general and better on large sites. (Thanks, Thomas Sjolshagen)
  • ENHANCEMENT: Added pmpro_reports_signups_sql and pmpro_reports_get_cancellations_sql filters to filter SQL that generates cancellation numbers in reports.
  • ENHANCEMENT: Now setting the timeout on PayPal API calls to 60 seconds from 5 seconds.
  • ENHANCEMENT: Now checking admin capabilities on each load in the dashboard in case PMPro-related admin capabilities have been changed. This avoids issues where users were upgrading PMPro but wouldn’t have access to updates or new features without deactivating and reactivating PMPro.
  • ENHANCEMENT: Added a pmpro_paypal_level_description filter that can be used to filter the description of the level sent to PayPal.
  • ENHANCEMENT: Added Catalan translations (ca, ca_AD, ca_ES). (Thanks, Jordi Martín)
  • ENHANCEMENT: Added Estonian translations (et_EE). (Thanks, Enriko Ojala)