
Minimum requirements
Version 2.11.9, February 9, 2023
- New: Recurring now registers subscription specific capabilities to allow for better role management and access to subscriptions.
- Improvement: Allow dates to be defined when adding a new renewal order.
- Improvement: Software Licensing discount calculations have been revised to be correct and work with cart discounts.
- Fix: Currencies were not always properly displayed in the order details on sites with multiple currencies.
- Fix: Renewal orders were not always linked to the correct email after a customer updated their email address.
- Fix: The subscription order status has been added to the list of deliverable order items statuses.
- Fix: An error could occur on the order details screen if orders were considered part of a subscription but a subscription did not exist.
- Fix: The license renewal link on the subscription details screen did not display correctly.
- Dev: An unneeded legacy filter for PDF Invoices has been removed.
Version 2.11.8.1, November 11, 2022
- Improvement: It is now possible to manually add a subscription with a $0 initial amount.
- Fix: The Stripe express checkout could cause PHP notices when Recurring loaded.
- Fix: The discount check could error in EDD 2.x.
- Fix: The updated admin script might not have loaded due to caching.
- Fix: The Stripe gateway could cause a fatal error with one time trials.
- Dev: Unnecessary files have been removed from the vendors directory.
Version 2.11.8, November 9, 2022
- New: Subscriptions can now be exported to a CSV file.
- New: The subscriptions table now has a filter bar to filter by product or subscription status.
- New: The subscription_details email tag has been registered for purchase receipt emails.
- New: subscription_details, subscription_period, and subscription_term email tags have been registered for the renewal and expiration emails.
- New: One time discounts can be enabled on an individual discount basis.
- Improvement: The admin subscription forms have been completely rewritten to be more accessible, responsive, and intuitive.
- Improvement: The subscriptions tables have been updated to be more consistent with WordPress and EDD.
- Improvement: Subscriptions now have their own tab when viewing customer details.
- Fix: In EDD 3.0, updating the customer for an order did not update the related subscription.
- Fix: The Content Restriction integration could have had an undefined variable.
- Fix: In certain cases, the order items migration appeared to never stop, even though it was done.
- Fix: It is now possible to purchase a product with a free trial using PayPal Commerce.
- Fix: When erasing a customer's data, active subscriptions are now cancelled automatically.
- Dev: The minimum PHP version is now 5.6; the minimum EDD version is 2.9.
- Dev: How the plugin loads has been updated.
Version 2.11.7, May 31, 2022
- Improvement: The payment method update form now uses the Stripe action hook to load the credit card form instead of calling it directly.
- Change: The EDD Subscriber role will not be registered for new installs.
- Change: Renewal orders will now be assigned a unique payment key.
- Fix: The EDD Subscriber role capability was not correctly registered.
- Fix: Manually creating a subscription for a single price product could throw a PHP notice.
- Fix: If a renewal transaction failed in PayPal Commerce, it was not marked as failed in EDD.
- Fix: Manually creating a subscription did not set the correct payment mode when test mode was enabled.
- Dev: The subscriptions
count
method used an ambiguous column reference for the primary key. - Improvement: EDD 3.0 - subscription information will be moved to the order details tabs.
- Fix: EDD 3.0 - the Stripe gateway now checks for the `complete` order status when checking if a subscription can be reactivated.
- Fix: EDD 3.0 - Renewal orders were setting an incorrect price ID for single price products.
- Fix: EDD 3.0 - Renewal orders no longer run ledger functions to update download/customer statistics.
- Fix: EDD 3.0 - The
edd_subscription
order status has been added to the arrays of complete, refundable, net, and gross order statuses. - Fix: EDD 3.0 - Manually added subscription orders did not set the correct order item status.
- Dev: EDD 3.0 - Order items in will be migrated to have the correct status. This affects existing 3.0 installs only.
- Dev: EDD 3.0 - Unit tests have been updated for EDD 3.0 compatibility.
Version 2.11.6, February 8, 2022
- Fix: The transaction list in the edd_subscriptions shortcode now shows the correct date.
- Fix: Content Restriction -- The active subscription check for a specific product in the shortcode attributes has been fixed.
- Change: Content Restriction -- When the subscription parameter is added to the shortcode, the Content Restriction messages are used if a user does not have access to the content.
Version 2.11.5, January 26, 2022
- Improvement: The "View Invoice" link on the front-end subscription page has been replaced with a "View Transactions" link. This allows the customer to view all transactions associated with a subscription, instead of just the first one.
- Improvement: Stripe - Activate EDD subscriptions via webhook. This fixes an edge case scenario where the Stripe payment was taken but the EDD subscription was not activated.
- Fix: Content Restriction - When using the
edd_restrict
shortcode, themessage
parameter was ignored when subscription check is set. - Fix: Content Restriction - The
edd_restrict
shortcode wasn't working well when using a mixture of recurring and non-recurring products. - Fix: PayPal - Subscription status incorrectly changed to "expired" after subscription has completed. (When using the "Times" field.)
- Fix: Renewal payments don't show the subscription status on the admin Payment Details page.
- Fix: Add an additional check to ensure renewal reminders are not sent for cancelled subscriptions.
Version 2.11.4, December 7, 2021
- Refactor: Recurring email settings have been moved to the "Emails" tab in their own section.
- Refactor: Recurring settings have been moved to the "Payments" tab if you're on EDD 2.11.3 or higher.
- Improvement: Allow all email template tags (including ones from EDD core and other extensions) to be used in recurring payment emails.
- Improvement: When viewing a payment that has an associated subscription, the status of that subscription is now shown next to the ID.
- Improvement: Better error message logging when the PayPal Commerce
PAYMENT.SALE.COMPLETED
webhook fails. - Fix: Potential undefined index error when calling
edd_get_settings_tabs()
. - Fix: The cron job that auto updates subscription statuses to "expired" now also checks for "trialling" subscriptions in addition to "active" ones.
- Fix: PHP notice when downloading a file under certain circumstances.
- Fix: PHP warnings when viewing a subscription whose parent payment has been deleted.
- Dev: Refactor how licensing gets instantiated.
Version 2.11.3, September 28, 2021
- New: When signing up for a free trial, the renewal amount is now displayed before the submit button.
- Fix: Refunding a subscription payment in PayPal not updating the status in EDD.
- Fix: Trial subscriptions created before the PayPal subscription was activated.
Version 2.11.2, September 20, 2021
- Improvement: Add
currency
to the PayPal Commerce$plan_string
logic. This ensures different PayPal plans are created for different currencies. - Fix: Software Licensing - when upgrading a license key via PayPal Commerce, the subscription renewal date was not matching the license key's expiration date.
- Fix: EDD occasionally reporting an incorrect subscription expiration date after an upgrade. (EDD's date did not match the payment gateway's renewal date, which was the correct one.)
- Fix: PayPal trials occasionally being created for the wrong amount of time.
Version 2.11.1, August 30, 2021
- Improved: Better compatibility with caching pages when using the PayPal Commerce Gateway.
Version 2.11, June 7, 2021
- New: Add support for the PayPal Commerce gateway.
- Fix: Software Licensing - The wrong expiration date could be calcualted when using one-time trials.
- Fix: Software Licensing - Upgrade logic now accounts for different license lengths with variable prices.
- Fix: PayPal Express - Renweal IPN could have incorrect payment amount recorded in EDD.
- Fix: A discount code could modify a $0 trial to a non-zero amount.
- Fix: Tax calculations were improved when using Signup Fees.
- Fix: EDD 3.0 - Updated more references to the `post_` function calls.
- Fix: EDD 3.0 - Orders table viwes were still using wp_count_posts for payments.
- Fix: EDD 3.0 - Recurring Payments may overwrite the order status parameter when querying orders.
Version 2.10.5, June 7, 2021
- Fix: Stripe - Renewal payments not being recorded correctly for zero decimal currencies.
- Fix: EDD 3.0 - Unable to capture Stripe payment intents with zero decimal currencies.
- Fix: EDD 3.0 - Automatic renewal payments not inheriting tax rate from parent order.
Version 2.10.4, May 24, 2021
- Improvement: Added HTML IDs to Software Licensing error notices.
- Fix: "Cancel Subscription" checkbox shows even if there is no subscription associated with the payment.
- Fix: Undefined index error in
add_subscription_cart_details()
method. - Fix: It was possible to have a note added to a subscription about a status change, even if the actual status change failed. Now the note is only added if the database record updated successfully.
- Fix: Fatal errors when running old database upgrades.
- Dev: Ensure PayPal functions file is always loaded.
- EDD 3.0: Add "Cancel Subscription" checkbox to the new refund UI.
Version 2.10.3, April 29, 2021
- Improvement: Template tags can now be used in the Payment Received/Failed email subjects.
- Improvement: The width of the "Times" input box has been increased.
- Fix: Stripe integration not properly checking zero decimal currencies when creating a Stripe plan/product.
- Fix: Automatic license renewals not showing in Software Licensing "License Renewals" report.
- Fix: Renewal payments weren't setting the "completed_date".
- Fix: Deprecation notices in PHP 8.
- Fix: Unnecessary files being included in build.
Version 2.10.2, March 4, 2021
- Fix: A customer could end up with two subscriptions if they have a failing one and then manually renew. The failing one is now cancelled when the new one is created.
- Fix: JavaScript errors when updating a payment method for a Stripe subscription.
- Fix: Old subscription not cancelled when upgrading via the Test Gateway.
- Fix: Addresses for renewal payments could be empty if the customer record doesn't have an associated address, but the original payment did.
- Fix: Fatal error when manually creating a subscription with an invalid payment ID.
- Dev: EDD 3.0 compatibility with earnings export.
Version 2.10.1, February 1, 2021
- Fix: One time trials in not honored when purchasing via PayPal Express.
- Fix: Tax rates stored incorrectly when using tax rates with more than one decimal place.
- Fix: "Non-numeric value" error when viewing certain subscription records.
- Fix: Undefined index errors.
- Fix: Invalid timestamp error when upgrading from a lifetime license to a recurring subscription.
- Fix: Incorrectly being offered pro-rated amount when upgrading from a free trial.
- Fix: 2Checkout off-site payments not working in sandbox mode.
- Fix: Tax rates not being stored for renewal payments.
- Fix: Deprecation notices when the 2Checkout gateway is enabled.
- Fix: "unexpected output during activation" when first activating the plugin.
- Fix: Unable to remove a trial from a variable price when it was saved previously.
- Improvement: Replace hard-coded date/time formats with site options.
- Dev: Compatibility with EDD 3.0 release.
- i18n: Added German translation.
- i18n: Allow trial duration unit string to be translated.
Version 2.10, September 2, 2020
- Fix: Improved compatibility with PHP 7.3 and 7.4.
- Fix: Replayed Stripe webhooks could cause duplicate actions to be taken.
- Fix: Translatable strings were having capitalization forced.
- New: Added support for Stripe PHP Library 7.x
- New: Stripe - Now creates refund objects in the Stripe API.
- New: Stripe - Switched to using the edds_api_request wrapper function.
Version 2.9.11, August 6, 2020
- Fix: Improve support for increased Stripe object identifiers.
- Fix: With Stripe, schedules could cause overflows with some configurations.
- Fix: The checkout during an upgrade could show the incorrect renewal amount for the new subscription that will be created.
- Fix: The estimated recurring revenue on the Admin Dashboard was not extremely accurate.
Version 2.9.10, May 4, 2020
- Fix: Content Restriction - Improved compatibility with the 'Active Subscribers Only?' setting.
- Fix: Corrected an issue that caused a PHP notice to be thrown in edge cases where the PayPal Standard IPN did not contain the array key.
Version 2.9.9, March 24, 2020
- Fix: PayPal Express: Licensed upgrades could cause incorrect profile renewal date within PayPal.
- Fix: Taxes were being added to renewal payments for products marked as "Exclusive of tax".
- Fix: There was a PHP warning about a non-countable variable.
- New: 3rd Party Gateways can now be returned from the get_gateway_class using the edd_recurring_gateway filter
Version 2.9.8, February 3, 2020
- Fix: Stripe - Corrected an issue causing subscriptions to have an invalid expiration date.
- Fix: Stripe - Added a check for subscriptions that will automatically sync invalid expiration dates with the subscription record in Stripe.
Version 2.9.7.1, January 30, 2020
- Fix: Stripe - Ensure expiration date for renewal always exists.
Version 2.9.7, January 30, 2020
- Fix: Prevent a conflict in the billing_cycle_anchor when the date calculated is later than the natural billing date due to months having a different number of days.
Version 2.9.6, January 21, 2020
- New: Authorize.net logic was moved into the Authorize.net extension (version 2.0+).
- New: Added protection to avoid collision between trials and billing_cycle_anchors.
- New: Partial refunds in Stripe are now handled by the Stripe extension (version 2.7.5+).
- Fix: When a server's time is slightly out of sync, purchases could fail.
- Fix: Corrected an issue where Custom Prices would cause subscription renewal dates of 1/1/1970.
Version 2.9.5, December 18, 2019
- Fix: Stripe MRR reporting was incorrect because free trials were used to offset initial subscription payment. It is now switched to billing_cycle_anchor which resolves it.
Version 2.9.4, December 4, 2019
- Fix: Auto Register race condition was causing unverified new accounts or no user login to happen.
- Fix: Multiple cancellation calls were going out to Stripe during a Software Licensing upgrade. Fixed by adding a "cancel_immediately" method to the gateways.
- Fix: Legacy variable prices were getting the wrong recurring amount after a manual renewal via Software Licensing.
Version 2.9.3, October 25, 2019
- New: Integrate with PayPal's new requirements of 1 recurring item per checkout.
- New: Added a checkbox to cancel a subscription when refunding a payment.
Version 2.9.2, September 20, 2019
- Fix: Corrected an issue in the subscriptions table that caused some subscriptions to be skipped in the last upgrade routine. Please run the new upgrade routine to ensure all price IDs are assigned correctly.
- Dev: Added a new generic hook for Stripe events: `edd_pre_recurring_stripe_event`
Version 2.9.1, September 16, 2019
- Fix: If a product was deleted, it could cause subscription lists and emails to fail.
- Fix: Updated .pot file for translators.
- Fix: Stripe - Subscriptions were failing to be created on new purchases with Quarterly or Semi-Year periods.
Version 2.9, September 12, 2019
- New: Stripe - Support for SCA/3DS2.
- New: Stripe - Support was added for mixed carts.
- New: Added the {subscription_id} email tag.
- New: Admins can not configure and recieve emails when a customer cancels their subscription.
- New: You can now customize the text used for the 'Cancel' link.
- New: Subscriptions can now have their price ID association changed.
- New: You can now choose to count completed subscriptions as active, when limiting file downloads to active customers.
- Fix: Reactivating a cancelled subscription did not properly charge the customer with Stripe.
- Fix: The Invoice 'closed' property was deprecated.
- Fix: Avoid an exception when trying to set the 'id' of an invoice.
- Fix: Verify that the PayPal Express and Pro gateways only listen for their own IPN calls.
- Fix: Prevent a bug that caused renewal reminders to not be sent when a user was not connected to the customer.
Version 2.8.8, July 26, 2019
- Fix: Free trials with variable priced products do not work in PayPal Express
- Fix: Subscription payments improperly recorded as Complete in PayPal Standard when renewal payment fails
Version 2.8.7, June 5, 2019
- Fix: Recurring tax recorded on renewal payments was incorrectly calculated.
- Fix: Tax on renewal payments after an upgrade was not properly calculated.
- Fix: Stripe failed upgrade attempts were causing duplicate subscriptions.
- Fix: Warning due to checking for trials on checkout.
- Fix: Prevent errors happening upon renewal emails in edge-case situations where no product is attached to a subscription.
- Fix: Added defensive checking for errors in the response from PayPal Express.
Version 2.8.6, April 2, 2019
- Fix: PayPal Express and Pro currency check was failing for IPNs.
Version 2.8.5, March 22, 2019
- Fix: PayPal Express no longer supports multiple subscriptions per checkout. See https://docs.easydigitaldownloads.com/article/1147-recurring-payments---paypal-express-gateway-configuration for more information.
- Fix: Subscriptions with "Times" were not being cancelled/completed for all gateways.
- Fix: Corrected an issue causing subscriptions to not be cleared from object caching.
- Fix: Discount codes from parent payment were stored on renewal payments.
- Fix: Email template tags were using the incorrect method of getting a Download name.
- Fix: PayPal Pro IPN was storing the currency supplied, instead of comparing it.
- Fix: 2Checkout gateway was sometimes running when it should not have been.
Version 2.8.4, February 20, 2019
- Fix: The dashboard widget and stats api endpoint were not including renewal payments.
Version 2.8.3, February 19, 2019
- Fix: The front-end JavaScript for recurring is always registered now, instead of only when it needs to be enqueued.
- Fix: Corrected an issue causing the "Times Billed" to always be "1".
- Fix: Improved the performance of the Subscriptions list table by removing the "Times Billed" column.
- Fix: The edd_get_total_earnings() function was not including Recurring Payments renewals in the returned value.
- Dev: When Recurring Payments creates objects in Stripe, metadata is added to the object within Stripe, to improve debugging.
Version 2.8.2, January 3, 2018
- Fix: When prices were set to be inclusive of tax, renewals were recorded with tax being exclusive.
Version 2.8.1, December 23, 2018
- Fix: A PHP notice appeared during the subscription table upgrade on sites running PHP 7.2.
Version 2.8, December 20, 2018
- New: Tax amounts are now shown on the subscription details page.
- Fix: Started using EDD_Payments_Query to calculate the total number of payments on a subscription.
- Fix: Tax details are now stored in the subscriptions table for initial tax and recurring tax.
- Fix: Tax details are no longer sent to the gateway, preventing different math results for rounding. Tax reports should now be pulled from EDD and not from the gateway.
- Fix: Content Restriction Integration: Recurring Payments was preventing access for non-recurring purchases.
- Fix: Content Restriction Integration: Use new/proper hook for metabox checkbox.
- Fix: Reactivating a subscription from the [edd_subscriptions] shortcode did not reactivate the subscription at Stripe.
- Fix: Any free trial in the cart would apply a free trial to all products in the cart, even if they were not free trial-enabled. Now free trials cannot be purchased alongside non-free trial products.
- Fix: Paypal Pro/Express IPN currency check was done against the store currency, but should have been against initial payment currency.
- Fix: The pagination's total count on subscription search results was incorrect.
- Fix: Paypal eCheck was not being handled correctly for subscriptions.
- Fix: If a Stripe subscription was failing, cancelling the subscription via EDD didn't cancel at Stripe.
- Fix: Renewal reminder emails were not always being sent out.
Version 2.7.28, July 12, 2018
- Fix: Paypal IPN date could be a different timezone than Recurring was expecting.
- Fix: The {expiration} email tag was not being updated before sending the renewal notifcation.
- Fix: Variable pricing free trials would not reduce the initial purchase cart value on some versions of PHP.
- Fix: Some translations were not correctly being done on checkout for billing frequency.
Version 2.7.27, June 18, 2018
- Fix: Payments for overdue balances not recorded in EDD after being processed in PayPal Express and PayPal Pro
- Fix: Unable to manually change subscription status from Cancelled to Active
- Fix: Incorrect renewal date assigned to subscriptions when upgrading license keys
- Tweak: Added debug logging to PayPal Pro / Express IPN processing
Version 2.7.26, May 30, 2018
- Fix: Subscriptions set to Cancelled incorrectly for Stripe when they should be set to Completed.
Version 2.7.25, May 10, 2018
- Enhancement: Added support for Stripe Connect when used with the Stripe payment gateway add-on.
- Enhancement: When viewing a customer's subscriptions, the currency shown will match that of the parent subscription.
Version 2.7.24, May 6, 2018
- Fix: Subscriptions not cancelled at merchant processor when calling $subscription->cancel()
- Fix: Subscription not cancelled when changing status from Active to Cancelled in the details screen
- Fix: "This subscription cannot be cancelled" error message shown when double-clicking cancel link
- Fix: PHP undefined notices when profile ID is not set in PayPal Express
- Fix: PayPal Express / Pro: recurring_payment IPN does not check that payment was successful
- Fix: Subscriptions with free trials set incorrect license expiration when renewal is processed
Version 2.7.23, April 2, 2018
- Fix: Corrected an issue where One-Time Discounts and prices inclusive of tax could cause differences in the amount charged by the gateway.
Version 2.7.22, March 27, 2018
- Fix: Removed dashicons from being enqueued on the front end.
- Fix: Gateway webhooks and IPNs now only renew the subscription if a renewal payment is generated.
- Fix: Subscription renewal payments were not adding the payment mode, which prevented the 'Refund in Gateway' checkbox from appearing.
- Fix: Subscription and License renewal now is aware of the renewal payment ID, allowing proper data associations.
- New: Added filters to renewal reminder and renewal processed emails.
- Tweak: Removed direct calls to get_post_meta in favor of using EDD_SL_License object properties.
- Tweak: Renewal payments were not triggering the after payment actions.
- Tweak: 2Checkout - Added debug logging to INS processor when EDD's debugging is enabled.
Version 2.7.21, March 7, 2018
- Fix: Stripe initial and recurring amounts were incorrect if Software Licensing and Taxes were enabled.
Version 2.7.20, March 6, 2018
- Fix: Added backwards compatibility check for plans created on old API when doing backfills.
Version 2.7.19, March 1, 2018
- New: Subscription amount is now updated automatically in EDD if it changes in Stripe
- Fix: New plans cannot be created on latest version of Stripe API
- Fix: Incorrect expiration date when upgrading licenses with different durations
Version 2.7.18, January 28, 2018
- Fix: Adding a renewal payment to a subscription via the admin produced 'non-numeric value' PHP errors.
- Fix: Renewal payments were not included in the Earning Report.
- New: You can now define a specific Stripe API version to use for Recurring Stripe payments with the 'EDD_STRIPE_API_VER' constant.
Version 2.7.17, January 28, 2018
- Fix: Taxes can be charged on recurring amount in Stripe even when not enabled
- Fix: Bill times are incorrect in PayPal Standard when initial and recurring amounts are the same
Version 2.7.16, December 26, 2017
- Fix: Payments marked as failed in some cases due to invalid amount in PayPal IPN
Version 2.7.15, December 20, 2017
- Fix: Trial period shows on PayPal Standard even when not needed.
- Fix: Adding manual renewal payments to subscriptions does not properly record the payment total.
- Fix: Subscription status notes are reversed.
- Fix: Subscriptions automatically cancelled through a license upgrade should not be able to be reactivated.
- Fix: Marking subscription as failing through the admin does not trigger the failing subscription hooks.
- Fix: Renewal payments do not record tax amounts.
- Tweak: Subscription status change notes now indicate whom made the change.
Version 2.7.14, October 27, 2017
- Fix: Corrected an issue which caused sensitive data to be stored on PayPal Pro purchase errors, and removes any existing sensitive data.
- Fix: Incomplete subscription purchases that included a trial prevented a second trial purchase attempt.
- Fix: Improved reliability of status changes performed on Subscriptions.
- Tweak: Improved the abstraction of displaying the subscriptions shortcode.
Version 2.7.13, October 23, 2017
- Fix: Unpaid invoices not cancelled in Stripe when cancelling subscription, resulting in failed payment notifications being sent erroneously.
Version 2.7.12, October 10, 2017
- Fix: Upgrading from a lifetime license to a time-limited license caused errors at checkout.
- Fix: PayPal Standard: Fixed issue cusing `You must specify valid values for parameters` errors.
- Fix: Cancelling a subscription sometimes showed a blank screen with "error" message.
- Fix: Stripe: An error was shown when attempting to reactivate a cancelled subscription.
- Fix: Stripe: Retrieve and set a customer ID when not set on the account.
- Tweak: Moved cron jobs for recurring related tasks to a custom schedule.
Version 2.7.11, August 21, 2017
- Fix: Expiration date on license keys in Software Licensing incorrect when free trials are used
Version 2.7.10, August 17, 2017
- New: Added support for Stripe subscriptions to be reactivated after cancelled
- New: Added option to manually retry failing subscriptions
- Tweak: Updated the process that updates billing method on a subscription to automatically retry a failing subscription
- Fix: Cancelling an already cancelled subscription shows an error message
- Fix: Free trial period not populate properly when price ID is 0
Version 2.7.9, July 31, 2017
- Fix: Incorrect transaction ID stored in 2Checkout
- Fix: Renewal payments not recorded in 2Checkout due to duplicate transaction IDs being stored
- Fix: Fatal error when processing cancellation in 2Checkout INS
- Fix: Incorrect initial amounts recorded when using Discounts Pro
- Fix: INVOICE_STATUS_CHANGED webhook from 2Checkout not processed
- Tweak: Added a filter that allows the license keys affected by a renewal payment to be adjusted
- Tweak: Added a .gitattributes file to prevent certain files from being included in release builds
Version 2.7.8, July 26, 2017
- Fix: Fix error message handling for subscriptions that fail on initial purchase.
Version 2.7.7, July 21, 2017
- Fix: Checks were incorrectly returning true when 0 was used for variable pricing free length.
Version 2.7.6, July 20, 2017
- New: Free trials can now be defined for each variable price option separately
- Tweak: Better error messages shown in Stripe gateway when purchase fails
- Fix: Subscriptions not cancelled in Stripe when the subscription is completed
- Fix: Fatal error on purchase confirmation with some PayPal accounts
- Fix: Compatibility problems with Currency Switcher plugin and Stripe gateway
- Fix: Currency code improperly checked in PayPal IPN when a store's currency code is different than the subscription
- Fix: Upgrading license keys in PayPal Standard fails when the expiration date is greater than 90 days away
Version 2.7.5, July 10, 2017,
- Fix: Not all subscriptions created properly when purchasing multiple items with PayPal Express
- Fix: Manually created subscriptions in Stripe link to Test mode incorrectly
- Fix: Subscription notes display slashed data
- Fix: "Error: Nothing to invoice for customer" notice on checkout when purchasing with Stripe
- Tweak: Added support for upcoming "Image URL" feature of PayPal
Version 2.7.4, July 7, 2017
- Fix: maybe_set_cart_total and cart_has_free_trial were not set to static methods.
- Fix: Querying API by subscription ID returned no results.
- Fix: Stripe: Add error handling around the call to set the customer currency.
- Fix: Invalid whitespace character returning in API response for subscriptions.
- Fix: Stripe: Upgrading of license & subscription could cause customer balance to be incorrectly set.
Version 2.7.3, June 14, 2017
- Fix: Stripe Checkout shows incorrect initial purchase amount with free trials.
Version 2.7.2, June 1, 2017
- Fix: Updating subscription payment method via Stripe could throw error about using a token twice.
Version 2.7.1, May 24, 2017
- New: Cancel subscriptions when Fraud Monitor confirms a payment as fraud (Requires Fraud Monitor 1.1.1 or later).
- New: Show renewal payment status in Subscriptions metabox.
- New: Add support for the new Last 30 Days report date range.
- New: Add payment meta item for when existing cards were used.
- New: Support additional cards for Stripe (Requires Stripe Gateway 2.6 or greater).
- Tweak: Selectively load the front-end JavaScript.
- Tweak: Remove safe_mode checks in upgrades routine.
- Tweak: Use helper function to get stripe customer ID.
- Tweak: EDD_Subscription::get_child_payments() now returns `EDD_Payment` objects instead of `WP_Post` objects.
- Fix: Software Licensing - Expiration dates were incorrect with license upgrades.
- Fix: Incorrect # of args were sent to the can_cancel() method.
- Fix: Stripe - Initial payments sometimes triggered renewal payments to be recorded.
- Fix: Trialling subscriptions were not cancelled if upgraded during the trial.
- Fix: Fatal error caused if 2checkout is active but has the wrong directory name.
- Fix: Wrong parameters sent to wp_die function call.
- Fix: Trying to get property of non-object in add_upgrade_and_renewal_flag().
Version 2.7, April 25, 2017
- New: Added refund statistics to Subscription Renewals report
- New: Added ability to record notes on subscription records
- New: Expiration date and status changes now recorded automatically as subscription notes
- New: Cancellation option now available on free and test subscriptions
- New: Added support for In-Context payments with PayPal Express
- New: Subscriptions can now be searched by customer email and product name
- Tweak: Free trials automatically disabled when renewing or upgrading a license
- Tweak: Improved display of subscription ID on the View Order Details screen of renewal payments
- Tweak: Renew link now removed on license keys when association subscription is failing
- Tweak: Expiration date on license keys automatically reset when refunding a renewal payment
- Fix: Incorrect amount sent to Stripe with zero-decimal currencies
- Fix: Duplicate subscription records created when a signup payment is recovered
- Fix: get_child_payments() method can incorrectly retrieve renewal payments from other subscriptions
- Fix: Searching subscription records by product_id, customer_id, or any other "id" fails
- Fix: Missing filter for arguments sent to PayPal Express
- Fix: Creation Date incorrectly set to required when manually creating subscriptions
- Fix: Refund webhooks in Stripe incorrectly mark the original payment as refunded instead of the renewal
Version 2.6.14, March 23, 2017
- Fix: Free trial length was applied to licenses generated with Software Licensing when a customer was ineligible for another trial period.
- Fix: Authorize.net now runs an authorization check on the payment method before creating the subscription records.
- Fix: PayPal Pro/Express API would create incorrect free trial periods due to incorrect API parameters being sent.
Version 2.6.13, February 21, 2017
- Fix: Incorrect amounts charged in Stripe during subscription/license upgrades. Important! A flaw in an improvement introduced in 2.6.10 was discovered. If you use Stripe and allow customers to upgrade license keys through Software Licensing, you must upgrade immediately.
Version 2.6.12, February 21, 2107
- Important Fix: Security flaw with PayPal Standard. Please update.
Version 2.6.11, February 16, 2017
- Fix: The edd_pre_get_payments filter wasn't allowing filtering the query by download.
Version 2.6.10, February 2, 2017
- Fix: 2Checkout - Respect the REFUND_ISSUED INS status.
- Fix: 2Checkout - Respect fraud status checks in INS.
- Fix: PayPal Express - Subscriptions marked as completed instead of cancelled.
- Fix: Stripe - Free trials could result in a 'renewal' being triggered immediately after trial started.
- Fix: Software Licensing - Manual subscriptions do not connect Customer to License.
- Fix: Infinite JS error popup when using PayPal Standard and entering "1" as the number of times to bill.
- Fix: Software Licensing - Expiration date incorrect with license upgrades.
- Fix: PayPal Express - Trial billing cycles parameter not set.
- Fix: PayPal Pro - Incorrect profile start date with free trials.
- New: Include edd_subscription in payment stats.
- New: Add filter to cancellation redirect.
Version 2.6.9, February 2, 2017
- Fix: Discount codes do not work properly with free trials. Note: one-time discount codes cannot be used with free trials.
- Fix: Flat rate discount codes and free trials result in incorrect payment totals and errors with PayPal Pro / Express
Version 2.6.8, January 26, 2017
- Fix: Expiration dates not properly calculated when renewing quarterly and semi-yearly subscriptions
Version 2.6.7, January 25, 2017
- Fix: Cart total sometimes shows incorrect amount when a free trial is in the cart
Version 2.6.6, January 23, 2017
- Tweak: Expiration dates are now checked with merchant processors before marking subscriptions as expired in order to keep expiration dates in sync.
Version 2.6.5, January 12, 2017
- Fix: PayPal Pro and PayPal Express IPNs not respecting the verification.
- Fix: Upgrade routine for 2.4 could cause PHP notice of undefined index.
- New: Support upcoming Software Licensing per item renewal discounts (Requires Software Licensing 3.5)
Version 2.6.4, December 21, 2016
- Fix: Undefined indexes during PayPal IPN processing
- Fix: Customer ID not always set / retrieved in Stripe, resulting in an error message on checkout
- Fix: Text string was missing the translation function
- Fix: Tax amount is incorrect if a discount code is used during purchase
- Fix: Billing card cannot be updated if only Stripe Checkout is enabled
- Fix: Billing card cannot be updated during free trials
- Fix: Erroneous hyphen in product name when products do not have variable prices
Version 2.6.3, December 8, 2016
- New: Existing subscriptions now cancelled automatically and replaced with a new one when manually renewing license keys from Software Licensing
- Fix: Trialling subscriptions do not get included in estimated revenue stats
- Fix: 400 error when attempting to cancel an already-cancelled PayPal subscription
- Fix: Undefined index notices in PayPal Pro / Express IPN listener
- Fix: Billing cards cannot be updated during trial subscriptions
- Fix: PE103 error in 2Checkout due to lack of decimal rounding
- Fix: Sometimes incorrect recurring amount on subscriptions when renewal discounts from Software Licensing are applied
- Fix: Subscriptions that are marking as failing cannot be cancelled
- Fix: Initial payments not marked as complete in PayPal Express when subscription fails to be created
Version 2.6.2, November 5, 2016
- Fix: Possible PHP warnings when using edd_has_user_purchased with Recurring Payments renewals.
Version 2.6.1, November 5, 2016
- Fix: Errors if calling methods for display subscription terms on purchase buttons directly in theme files
- Fix: Status of object not set properly in cancel() and renew() methods of EDD_Subscription
- Fix: New license keys improperly generated when renewing a license that is connected to a subscription
- Fix: Payment statuses improperly removed from payments query in purchase history shortcode
- Fix: Unexpected output on plugin activation
Version 2.6, October 26, 2016
- New: Added support for free trials
- New: Added support for EDD Invoices extension
- Fix: Partial refunds in Stripe could result in the associated order being marked as wholly refunded
- Fix: Subscription terms shown on cart not correct if item is added to cart and then terms are changed on item
- Fix: Cancellation emails sent twice in some circumstances
- Fix: REST API endpoint returns data even if queried customer has no subscriptions
Version 2.5.2, October 5, 2016
- New: Added an option to control the Sign Up fee label text
- Fix: Customer name / email not shown on subscription details page if customer does not have a name entered
- Fix: Renewal payments not recorded in Authorize.net gateway due to MD5 hash validation failing
- Fix: Non-recurring products with Custom Prices cannot be purchased if Recurring Payments is active
- Tweak: Better description text on item quantities setting
- Tweak: Better description on "Disable Guest Checkout" setting
- Tweak: Subscription status now shown on customer details page
Version 2.5.1, August 29, 2016
- Fix: Incorrect key used for validating MD5 hash from Authorize.net
- Fix: Negative fees should not have tax calculated on them
Version 2.5, August 8, 2016
- New: Added support for quarterly and semi-annual subscriptions
- New: Added support for Custom Prices extension
- New: Added a search form to Subscriptions page
- New: Added Refund / Cancellation support to PayPal Standard
- New: Added support for manually renewing subscription records
- New: Added support for manually creating subscription records
- New: Added support for updating the product a subscription is assigned to
- New: Added support for purchasing subscriptions and free products simultaneously
- New: Abandoned subscription records left as pending are now cleaned up automatically
- Tweak: Item quantities now automatically disabled on carts that contain subscriptions
- Tweak: Subscription records now deleted when associated customer is deleted
- Tweak: Replaced get_post_meta() usage with edd_get_payment_meta() for better future-proofing
- Tweak: Added license renewal link to subscriptions shortcode when subscription is expired
- Fix: "was renewal" flag not set properly for renewal payments connected to a license key
- Fix: Variable price name not shown at PayPal
- Fix: Incorrect notice for updating billing in Stripe when second subscription is being purchased
Version 2.4.15, July 7, 2016
- Fix: 2Checkout: when Recurring Payments is active, INS in non-recurring gateway fails
- Fix: get_status_label does not currently have 'Completed'
- Fix: Stripe: subscriptions not cancelled when bill_times is reached
- Fix: Incorrect column name when querying subscriptions by date
- Fix: Purchase Confirmation Subscription Details list in reverse order
- Fix: Changing the customer of a payment does not update the customer_id of the subscription
- Tweak: Update all calls to wp_remote_* for new response types enhancement
- New: Update PayPal Standard to pull API keys from core enhancement
- New: Add subscription stats to Sales Summary widget enhancement
Version 2.4.14, June 14, 2016
- Fix: Undefined index "tax" notice in PayPal Standard
- Fix: Missing amount verification in PayPal Standard
- Fix: Currency not set properly when first creating customers in Stripe
- Fix: Missing rounding in PayPal Pro / Express resulting in "Bill amount must be greater than 0" error
- Fix: Clicking Cancel then Update after editing profile ID of subscription level still updates the profile ID
- Fix: Too many parameters passed to update_option() call
- Fix: Card declines now handled gracefully when purchasing multiple subscriptions through Stripe and only purchase of some subscriptions fail
Version 2.4.13, June 8, 2016
- Fix: Software Licensing - Renewal link not shown for keys with a non-active subscription.
- Fix: Purchase of subscription and non-subscription wrongly permitted.
- Fix: Processing subscription checkout should try and use User ID before email.
- Fix: Stripe Source ID incorrectly referenced in edd_recurring_fix_24_stripe_customers() upgrade routine.
- New: Update profile ID link to go to the new subscription details page in the Stripe dashboard for subscriptions purchased via Stripe.
Version 2.4.12, June 2, 2016
- Fix: Refunding payments with already cancelled subscriptions produces exceptions in Stripe and PayPal Express.
- Fix: Stripe plan amount can sometimes contain decimals
Version 2.4.11, May 20, 2016
- Fix: Parent payment box does not show on View Order Details for refunded renewal payments
- Fix: Transaction IDs not logged reliably in Stripe
- Fix: Missing quotes around transaction_id column WHERE in get_subscriptions() method
- Fix: Cancelling a subscription in Stripe's Dashboard does not update the subscription in EDD
- Fix: Refunding a payment via Stripe's Dashboard does not mark the payment as refunded in EDD
- Fix: Refunding payments from View Order Details does not cancel associated subscriptions in Stripe or PayPal
- Fix: Payments sometimes marked as Failed with error "No profile_id set on subscription object"
- Fix: Not all metadata properly added to renewal payments
- Fix: Times option is inconsistent between gateways
- Tweak: Improved performance for EDD_Subscription when instantiating with a profile_id
- Tweak: Subscriptions are now cancelled automatically in Stripe and PayPal when initial payments are refunded from View Order Details
- Tweak: Added support for auto-confirmation in PayPal Express
- Tweak: Added indexes to subscriptions database table
- Tweak: Added Statement Descriptor to plans created in Stripe
- Tweak: Improved performance of add_payment() method in EDD_Subscription calss
Version 2.4.10, April 21, 2016
- Fix: In some cases subscriptions could be created in Stripe but no in EDD.
Version 2.4.9, April 20, 2016
- Fix: Some subscriptions could get improperly flagged for cancellation in upgrade routine introduced in version 2.4.6
Version 2.4.8, April 20, 2016
- Fix: Stripe - Incorrect charge amounts when multiple subscriptions are purchased and Software Licensing renewal discounts are configured.
- Fix: Auto Register integration - during checkout, when a logged out user enters the email address of an existing customer, they are prompted to log into the existing account.
Version 2.4.7, April 15, 2016
- Fix: PayPal Pro shows error if taxes are enabled
- Fix: PayPal Express shows error if taxes are enabled
- Fix: Missing description on email receipt through PayPal Express
- Fix: tax_percent parameter not sent to Stripe
Version 2.4.6, April 11, 2016
- Fix: Resolved urgent issue with customers from before version 2.4 sometimes getting their Stripe ID mixed up with other Stripe customers.
- Fix: File downloads not permitted on renewal payments.
Version 2.4.5, April 6, 2016
- Fix: Renewal payments not increasing customer's purchase value
- Fix: Upgrade routine notice being shown on new installs after creating recurring product
- Fix: Translation type for shortcode-subscriptions.php
- Fix: Renewal payments not being associated with customer record
- Fix: Remove usage of deprecated _edd_recurring_status usermeta
- Fix: Stripe - Properly catch ZIP/Postal Validation errors
- Fix: Stripe - Properly catch unsupported card errors
- Fix: Cancelled subscriptions past expiration considered 'active'
- Fix: Recounting customer stats in EDD removed renewal payments from customer record
Version 2.4.4, April 1, 2016
- Fix: add_payment() method can add incorrect products to renewal payment record
- Fix: Erroneous renewal payments recorded sometimes during initial signup
- Fix: Undefined variable $payment_id
- Fix: Amounts not rounded in PayPal, sometimes resulting in purchase being rejected
- Fix: When purchase is declined in PayPal Express, redirect back to PayPal
- Fix: PayPal Express subscriptions cannot be cancelled from inside the WP admin
- Fix: Go Back link goes to incorrect page when editing email notices
- Fix: Notice when updating payment method for Stripe subscription includes inactive subscriptions
- Tweak: Added status parameter to /subscriptions endpoint of REST API
- Tweak: Change "Edit" to "Cancel" when editing subscription values
- Tweak: Subscription profile IDs now linked to details page in mechant
Version 2.4.3, March 23, 2016
- New: PayPal Express now allows multiple subscriptions per-checkout
- Fix: Install routine not running
- Fix: Failing subscriptions being marked as expired when being viewed
- Fix: Stripe token used multiple times error
- Fix: Currency for subscription always uses initial payment currency
- Fix: PayPal Pro not always capturing initial payments
Version 2.4.2, March 15, 2016
- Fix: Stripe customer ID for one-time purchases set during subscription purchase
- Fix: Upgrading license key between products does not create a subscription
- Fix: Customers cannot restrict content in Content Restriction extension if restricted to multiple subscriptions
- Fix: Fatal error during upgrade routine if customer record is deleted in Stripe
- Fix: Replace soon-to-be deprecated edd_get_success_page_url() with edd_get_success_page_uri()
- Fix: Some signups erroneously marked as Failed in PayPal Express
- Fix: Subscriptions with failing payment methods cannot have their payment method updated
- Fix: Incorrect HTTP version in PayPal Pro API request
- Fix: Subscriptions not cancelled in PayPal Standard when clicking Cancel Subscription
- Fix: Subscription value not properly reflecting refunded payments
- Tweak: Gateways now instantiated with global variable so they can be easily interacted with
- Tweak: Recurring customer IDs now displayed on customer details page
Version 2.4.1, March 2, 2016
- Fix: Discount codes can result in PayPal Express rejecting the subscription
- Fix: Variable price fields disabled when Recurring toggled on/off
- Fix: Plugin causes a fatal error if activated without Easy Digital Downloads activated
- Fix: Non-subscription purchases blocked in PayPal Standard
- Fix: Files from bundled products cannot be downloaded if Limit File Downloads is enabled
- Fix: Undefined variable $user_data
- Fix: Some errors not properly detected during checkout
Version 2.4, February 23, 2016
- This is a major release and cannot be installed automatically. Please read our upgrade guide to install this update. http://docs.easydigitaldownloads.com/article/1217-recurring-payments-upgrading-to-2-4-from-earlier-versions
- New: Added support for multiple subscriptions per customer
- New: Added support for PayPal Express
- New: Added support for PayPal Website Payments Pro
- New: Added support for Authorize.net
- New: Added support for 2Checkout
- New: Added complete subscription management interface
- New: Added customer dashboard for viewing and managing subscriptions
- New: Added improved discount code options
- New: Added renewal payment received emails
- New: Added renewal payment failed emails
- New: Added subscription cancelled emails
- New: Added renewing soon emails
- New: Added expiring soon emails
- New: Improved compatibility with Software Licensing, including upgrade paths and automatic license renewals
- New: Improved compatibility with Content Restriction extension
- New: Improved compatibility with EDD Auto Register extension
- New: Improved compatibility with Discounts Pro extension
- New: Improved compatibility with Simple Shipping extension
- New: Developer APIs for interacting with subscription and subscription records
- New: Added REST API endpoint
- New: Added support for limiting the total number of renewal payments in Stripe
- New: Added support for resetting subscription data through the Recount Stats tool
- New: Added renewal revenue report
- Fix: Compatibility issue with EDD Wallet
- Fix: Transaction ID tracking unreliable
Version 2.3.6, December 9, 2015
- Fix: Signup fees not honoring prices inclusive of tax
- Fix: Add support for EDD Auto-Register extension
Version 2.3.5, December 4, 2015
- Fix: PHP Warning being displayed
Version 2.3.4, December 4, 2015
- Fix: Customers can purchase subscriptions while logged out
- Fix: Customer can incorrectly purchase multiple subscriptions
Version 2.3.3, September 21, 2015
- NEW: Cards are able to be updated even when account is cancelled or expired
- FIX: Some purchases don't show in user's purchase history
- FIX: Renewal Notices Sent on Recurring Payment Purchases
Version 2.3.2, September 14, 2015
- FIX: Protect single product files from being accessed through bundle purchases when subscriber's status is expired. Requires EDD 2.4.4 or greater.
Version 2.3.1, April 20, 2015
- FIX: XSS vulnerability in query args
Version 2.3, April 10, 2015
- Fixed a bug with the price option not showing in PayPal
- Fixed a bug with subscription payments not showing in payment history for customers
- Fixed a bug with subscription payments not being included in the dashboard summary widget
- Fixed a bug with customer lookups in EDD v2.3+
- Added new API for allowing customers to update their billing credit/debit card (supported through individual payment gateways)
- Updated translation files
Version 2.2.13, February 14, 2015
- Fixed fatal error on the frontend of the site when EDD is not active
- Added new filters to provide greater flexibility
Version 2.2.12, January 23, 2015
- Fixed an issue with renewal payments showing in the download history short code.
Version 2.2.11, November 24, 2014
- Fixed an undefined index error
- Fixed an issue with the plugin updater
Version 2.2.10, October 20, 2014
- Fixed a bug with the cancellation link showing even after a member has cancelled their subscription
Version 2.2.9, September 22, 2014
- Fixed another issue with invalid foreach() notices.
Version 2.2.8, September 15, 2015
- Fixed an invalid foreach() notice.
Version 2.2.7, September 5, 2014
- Added support for upcoming Content Restriction v2.0 update.
Version 2.2.6, August 17, 2014
- Fixed a bug with recurring amounts that included tax and a signup fee.
Version 2.2.5, August 13, 2014
- Fixed a bug with active subscribers being unable to download files.
Version 2.2.4, July 29, 2014
- Fixed a bug with duplicate signup payments being created via PayPal
Version 2.2.3, July 17, 2014
- Better checks during the recurring payment logging process
Version 2.2.1, June 27, 2014
- Fixed a bug with $0.00 signup fees showing on checkout
Version 2.2, June 23, 2014
- Subscription payments are now shown in Payment History
- Added a Subscription Payments filter link to Payment History
- Added support for downloading PDF Invoices of recurring payments
- Subscription payments are now shown in customer's purchase history
- Improved the display of subscription payments on the View Order Details of initial signup payments
- Fixed an SQL syntax error in the payment_exists() method
- Fixed an invalid variable name the record_subscription_payment() method
Version 2.1.7, June 14, 2014
- Fixed a bug with signup fees getting erroneously removed
Version 2.1.6, June 12, 2014
- Fixed a bug with the signup fee (or discount) incorrectly applying to non-recurring purchases
Version 2.1.5, June 4, 2014
Fixed a bug with cancelled payments revoking access too early.
Version 2.1.4, April 28, 2014
Fixed a bug with duplicated subscription payments getting recorded.
Version 2.1.3, April 14, 2014
Fixed a bug with recurring payments in PayPal not getting tracked properly.
Version 2.1.2, March 17, 2014
Fixed a minor conflict with Software Licensing and/or Purchase Limit
Version 2.1.1, March 1, 2014
Fixed an issue with HTML5 validation of the signup fee option that prevented it from being negative (for a discount).
Version 2.1, February 6, 2014
Added numerous new hooks to allow other plugins to perform actions during various events.
Fixed a bug with users not getting the EDD Subscriber role properly.
Version 2.0.1, December 15, 2013
Fixed an issue with cancelled users being able to access content until end of term.
Version 2.0, December 12, 2013
Added a new Edit Subscriber screen that allows you to manually modify subscriber\\\'s expiration date, status, and recurring ID.
Added a Edit Subscriber link to both the Subscribers report table and also the standard WordPress user table.
Version 1.1.8, December 4, 2013
Fixed a bug with prematurely disabling access to purchased files when users cancel their subscriptions.
Version 1.1.7, November 4, 2013
Fixed a bug with the initial payment amount when using signup fees and PayPal.
Version 1.1.6, October 25, 2013
Fixed a bug with empty item descriptions after going to PayPal.
Version 1.1.5, October 23, 2013
Fixed a bug that prevented cancelled, but still active, customers from downloading files. Requires EDD 1.8.3 to fix bug.
Version 1.1.4, October 14, 2013
Fixed a bug that prevented the Signup Fee option from saving when not using Variable Prices.
Version 1.1.3, October 14, 2013
Fixed a bug in the Subscribers report pagination.
Version 1.1.2
Fixed a bug with cancelled users not having access until end of term.
Version 1.1.1
Fixed a bug with PayPal subscribers not getting activated.
Version 1.1
Added support for charging signup fees on new signups/
Version 1.0.7
Fixed a bug with tracking subscription payments correctly.
Version 1.0.6
Fixed an issue with double payments getting recorded.
Fixed an issue with cancelled payments not getting included in reports.
Version 1.0.5
Fixed a bug with file downloads for recurring customers.
Version 1.0.4
Fixed a compatibility bug with EDD v1.6.
This version requires EDD v1.6 or later.
Version 1.0.3
Fixed a bug with taxes not carrying over to PayPal.
Version 1.0.2
Fixed an issue with initial subscriber signups causing the earnings reports to be off.
Version 1.0.1
Fixed a bug with displaying customer expiration dates in the Reports page.
Added a few additional helper functions for gateways.
Version 1.0
Initial release.
You’re probably already selling one-time digital products to your customers. But do you also have products you can sell on a recurring basis to them?
Recurring revenue provides more predictable income and allows you to make better forecasts and major decisions for your business.
Why use recurring billing
- Billing is automated, which means no more hassle of requesting a renewal payment or sending invoices every month or year.
- With an automated system, there are fewer late or missing payments.
- The risk of fraud is reduced because there’s less circulation of sensitive information.
- Customer retention usually goes up because they don’t have to make a new buying decision or take the time to re-enter their payment information every month or year.
The truth is, setting up recurring revenue with your online store might just be the most important business decision you ever make.
Multiple payment gateway support
Recurring Payments works with the following payment gateways:
- Stripe Standard (included with Easy Digital Downloads)
- Stripe Pro
- PayPal Standard (included with Easy Digital Downloads)
- PayPal Commerce Pro
- Authorize.net
- NETbilling Gateway (3rd party)
- Paddle Payment Gateway (3rd party)
- Payfast for Easy Digital Downloads (3rd party)
We highly recommend pairing Recurring Payments with our Stripe Pro Payment Gateway extension. It’s our most popular premium gateway for Easy Digital Downloads and how this site itself processes most of its transactions.
This is extremely powerful for anyone selling licenses for software, services, courses, all access passes, and more. Streamlined and fully integrated with the Recurring Payments extension, there’s no need for customers to manually return and purchase again.
In addition to Stripe being the preferred payment gateway for Easy Digital Downloads, we are also officially a Stripe verified partner. The Stripe partner program recognizes applications which meet their strict quality requirements and allows us to provide even better services to our customers.
Recurring Payments features
Flexible recurring payments
Easily set up recurring payments on any product, including daily, weekly, monthly, quarterly, semi-annually, and yearly.
You can easily adjust the recurring periods, the number of times they recur, and how much they cost. Products with variable pricing can have recurring and non-recurring price options.


Customer emails
Deliver automated emails to customers when their subscription is nearing renewal, a renewal has been processed, a subscription has been cancelled, a renewal payment fails, and more.
By reminding your customers about anything related to their subscription you should see a drop in refunds and payment disputes. You can even include reasons they may want to renew, upgrade or subscribe to additional products from your store.

Multiple subscriptions
If you sell multiple recurring digital products, your customers can maintain any number of individual subscriptions to each one. This way they can easily cancel or renew as needed from their account area on your site.
Free trials
Want to let your customers try your product before they’re charged? You can set your subscription products to include free trial periods of any length. Billing details are collected during registration and customers are then charged automatically when the free trial is completed.

Signup fees
If you want to charge your customers a larger up-front payment, simply add a signup fee. For example, to charge subscribers $50 up front for a $20 per month product, just add a $30 signup fee.

Subscription management
With a complete interface for viewing and managing subscriptions, taking care of your customers and keeping an eye on your subscriptions is simple. Search by customer or filter by subscription status such as active, pending, and cancelled.
Select a subscription to drill in and find their payment in Stripe, PayPal, or other payment gateways. Manually change a subscription’s status, add notes and record manual payments with a couple of clicks.


Renewal revenue reports
Track your recurring revenue through beautiful, easy-to-read earnings graphs. See a breakdown of new purchases alongside renewal payments to get a better picture of your returning customer sales.

Limit file downloads
Optionally restrict file downloads of recurring products to just those customers with an active subscription. This way you can ensure customers who cancel their subscription no longer have access to your product downloads until they decide to purchase again or renew.
Discount codes
Discount codes can be set up to apply to the initial payment only or to each and every renewal payment.

Customer dashboard
Your customers can have a complete dashboard for viewing and managing their subscriptions. After logging in they can view their invoice, update their payment method, cancel their subscription, or even renew recently expired subscriptions.
When used with our Stripe Payment Gateway extension, your customers can quickly update their payment card without needing a store admin to do it.

Software Licensing integration
Recurring Payments is fully integrated with the Software Licensing extension to provide automatic license renewals anytime a subscription payment is processed. Customers can also view and copy their license keys from their dashboard at any time.
See our docs for integrating Recurring Payments with Software Licensing.
All Access integration
Recurring Payments is fully integrated with the All Access extension to make it possible for you to sell memberships to your customers which give them access to all of your store’s products. Recurring Payments will automatically renew an access period for the customer when it expires. If you need to limit access to specific products or set different durations for each pass, you can do that too! See all customizations.
When using Recurring Payments, Software Licensing, and All Access together, you can create “Master Licenses” which work for all products and allows pro-rated upgrades.

Content Restriction integration
Recurring Payments is fully integrated with the Content Restriction extension to make it possible for you to restrict posts, pages, bbPress forums, etc. to only those users who have purchased specific products and have an active subscription that is not expired.

Custom Prices integration
Recurring Payments includes complete support for Custom Prices, allowing site administrators to give customers the option of “pay what you want” subscriptions. This is a great solution if you’re accepting donations.
Learn more about Recurring Payments with Easy Digital Downloads
If you want to better understand how our Recurring Payments extension works and how it can be configured, take a look at our documentation. Lastly, if you still have unanswered questions, get in touch with us! We’re happy to help.