Skip to content
Ecommerce

EDD Recurring Payments: Subscription Setup Guide

· · 12 min read
Setting up recurring payments and subscriptions in Easy Digital Downloads

Selling one-time digital products is a great start. But recurring revenue, subscriptions that charge customers monthly or yearly, is what transforms a side project into a sustainable business. Easy Digital Downloads (EDD) supports recurring payments through the Recurring Payments extension, and this guide walks you through the complete setup.

You will learn how to create subscription products, configure Stripe for recurring billing, handle upgrades and downgrades, manage cancellations, and track subscription revenue. If you have not set up EDD yet, start with our complete EDD setup guide first.

What You Need

Before setting up recurring payments, make sure you have:

  • Easy Digital Downloads (free core plugin, or a paid pass for the Recurring Payments extension)
  • Recurring Payments extension, which EDD now bundles into every paid pricing tier starting with the entry-level Personal Pass, rather than selling as a standalone add-on the way it once did
  • A compatible payment gateway: Stripe (recommended), PayPal Commerce, or Authorize.net
  • SSL certificate, required for processing payments and for Stripe’s webhook delivery to work at all

Stripe is the recommended gateway for recurring payments because it handles subscription billing natively, supports automatic retries for failed payments, and provides detailed subscription analytics. Our Stripe and PayPal gateway guide covers the initial gateway setup.

Recurring revenue is the single most important metric for digital product businesses. A subscription model with even modest monthly pricing creates predictable income that compounds over time, making your business more valuable and easier to plan around.

What Recurring Payments Actually Costs Now

EDD restructured its pricing a while back, and a lot of guides still describing Recurring Payments as a $99 standalone add-on or something bundled only into a top “Pro” tier are out of date. As of this writing, EDD sells access through tiered annual passes rather than piecing extensions together individually:

  • Personal Pass: the entry tier, usable on one site, and it already includes “Subscriptions & Free Trials” alongside Stripe, PayPal, and Apple Pay support. This is the tier most solo sellers need for recurring billing specifically.
  • Extended: adds Authorize.net, 2Checkout, Zapier, and Software Licensing on top of everything in Personal.
  • Professional: adds multi-vendor marketplace tools, commissions and payouts, physical product shipping, post-purchase funnels, and advanced reporting.
  • All Access: the top tier, covering three sites and every available extension.

Pricing on all tiers is frequently discounted from list price through EDD’s own promotional pages, so treat any specific dollar figure as a starting point and confirm the current number on EDD’s official pricing page before you buy. The practical takeaway that matters for this guide: you do not need the most expensive tier just to accept subscriptions. Recurring Payments comes with the cheapest pass EDD sells.

Step 1: Install and Activate Recurring Payments

If you are on any current paid EDD pass, Recurring Payments ships as part of your license. Activate it from Downloads → Extensions.

If you are working from an older license type that still lists it as a separate download:

  1. Download the extension from your EDD account
  2. Go to Plugins → Add New → Upload Plugin
  3. Upload the ZIP file and activate
  4. Enter your license key under Downloads → Settings → Licenses

Once activated, you will see new options when creating or editing downloads.

Step 2: Create a Subscription Product

Go to Downloads → Add New (or edit an existing product). Scroll to the Download Prices section.

Simple Subscription (Single Price)

  1. Set your price (for example, $19.99)
  2. Check “Recurring” to enable subscription billing
  3. Configure the subscription details:
SettingDescriptionExample
PeriodBilling frequencyMonth, Quarter, Semi-Year, Year
TimesNumber of billing cycles (0 = unlimited)0 for ongoing, 12 for one year of monthly
Signup FeeOne-time fee charged on first payment$49 setup fee
Free TrialTrial period before first charge14 days, 1 month

Variable Price Subscriptions (Tiered Plans)

Most SaaS and membership products offer multiple tiers. EDD handles this with variable pricing:

  1. Enable “Variable Pricing”
  2. Add your price options (for example, Starter, Professional, Agency)
  3. Check “Recurring” for each price option that should be a subscription
  4. Configure period, times, and trial for each tier independently

Example tier structure:

TierMonthly PriceAnnual PriceTrialFeatures
Starter$9/mo$89/yr7 days free1 site license, basic support
Professional$29/mo$289/yr7 days free5 site licenses, priority support
Agency$99/mo$989/yrNoneUnlimited sites, white-label, dedicated support

If you are selling software with license keys, combine Recurring Payments with the Software Licensing extension to automatically manage license activations tied to subscription status.

Step 3: Configure Stripe for Recurring Billing

Stripe is the most reliable gateway for EDD subscriptions. Here is how it works behind the scenes:

  1. Customer completes checkout on your site
  2. EDD creates a Stripe Customer object and stores the payment method
  3. Stripe creates a Subscription object with the billing schedule
  4. On each billing date, Stripe automatically charges the stored payment method
  5. EDD receives a webhook notification and records the renewal payment
  6. If payment fails, Stripe retries according to your retry rules

Most current EDD installs connect to Stripe through a one-click “Connect with Stripe” flow under Downloads → Settings → Payments → Stripe, which authorizes your account via OAuth and provisions the webhook automatically. If you are on an older setup that still uses manually entered API keys, or you are troubleshooting a webhook that stopped firing, the manual steps below explain what that automatic flow is doing for you under the hood.

Stripe Webhook Configuration (Manual Method)

Webhooks are critical for recurring payments. Without them, EDD will not know about successful renewals or failed payments, even though Stripe is charging the customer correctly on its end.

  1. Go to your Stripe Dashboard → Developers → Webhooks
  2. Click “Add endpoint”
  3. Set the URL to: https://yourdomain.com/?edd-listener=stripe
  4. Select the events to listen for. At minimum: invoice.paid (Stripe’s current primary event for successful recurring payments, alongside the older invoice.payment_succeeded some integrations still reference), invoice.payment_failed, customer.subscription.deleted, and customer.subscription.updated
  5. Save and copy the webhook signing secret to EDD settings

Stripe Billing Settings

In Stripe Dashboard, configure smart retries under Settings → Billing → Subscriptions and emails:

  • Smart Retries: enable to let Stripe automatically retry failed payments using its own revenue-recovery logic to pick better retry timing than a fixed schedule
  • Failed payment emails: enable to notify customers directly when their payment fails, in addition to whatever EDD sends
  • Upcoming renewal emails: enable to send a heads-up before each renewal charge, which measurably reduces disputed charges

Understanding Subscription Status in Stripe

A subscription is not simply “active” or “cancelled.” Stripe tracks a specific set of statuses, and EDD’s own subscription state should track them closely if your webhook is configured correctly. Knowing these statuses matters when a customer emails asking why their access disappeared:

StatusWhat it means
trialingInside a free trial period; no charge has happened yet, and access should already be provisioned
activeIn good standing; the most recent invoice was either paid or is not yet due
past_dueThe latest invoice failed or was not attempted; Stripe is still retrying based on your Smart Retries settings
unpaidRetries have been exhausted and the invoice is still unpaid; access should be revoked at this point
canceledTerminal state; the subscription will not bill again

The most common support issue in EDD stores running subscriptions is a mismatch between what Stripe thinks the status is and what EDD shows, almost always traced back to a webhook event that was never delivered or was silently failing. If a customer says they paid but still see “past due,” check the Stripe Dashboard’s webhook logs for delivery failures before assuming it is a plugin bug.

Step 4: Handle Upgrades and Downgrades

Customers will want to change their subscription tier. Recurring Payments supports this directly:

Enabling Upgrades and Downgrades

  1. Go to Downloads → Settings → Extensions → Recurring Payments
  2. Enable “Allow Upgrades” and “Allow Downgrades”
  3. Choose the proration method:
Proration MethodHow It Works
Prorate immediatelyCustomer pays the difference right away and the new plan starts immediately
Prorate at next renewalNew plan pricing takes effect at the next billing date
No prorationCustomer pays full price of the new plan immediately

Customer Experience

When upgrades are enabled, customers see an “Upgrade” or “Change Plan” button on their subscription management page. The flow is:

  1. Customer clicks “Upgrade” on their current subscription
  2. They see available tiers with pricing differences clearly shown
  3. They select the new tier and confirm
  4. EDD calculates proration and processes the payment change
  5. The customer gets immediate access to the new tier’s features

Step 5: Manage Cancellations

Cancellations are inevitable. How you handle them affects both retention and how customers talk about your product afterward.

Self-Service Cancellation

By default, EDD allows customers to cancel their own subscriptions from their account page. When a customer cancels:

  • The subscription status changes to “Cancelled”
  • Access continues until the current billing period ends
  • No further charges are made
  • The customer can resubscribe at any time

Admin Cancellation

To cancel a subscription from the admin:

  1. Go to Downloads → Subscriptions
  2. Find the subscription and click to edit
  3. Change status to “Cancelled”
  4. Optionally issue a refund for the current period

Reducing Cancellations

Use these strategies to reduce churn:

  • Cancellation surveys: ask why they are leaving and offer alternatives such as a pause, a downgrade, or a discount
  • Win-back emails: send a short series of emails after cancellation with incentives to return
  • Grace period: give customers a few days after a missed payment before suspending access outright
  • Annual discount: offer roughly 15-20% off annual plans to lock in customers for longer and reduce the number of billing events that can fail

Testing Recurring Payments Before You Go Live

Do not test subscription billing with real cards. Stripe’s test mode uses a completely separate set of API keys and a dedicated test card number, so nothing charges a real customer while you are working through the flow. Switch EDD’s Stripe settings to test mode, run through a full signup with a trial, then simulate what happens weeks or months later without actually waiting weeks or months.

Stripe’s test clocks are the tool for this: they let you advance simulated time for a test customer so a trial can “end” and a renewal can “fire” within minutes, so you can watch EDD’s subscription status update and confirm the renewal emails and license activation actually happen the way you expect. Skipping this step and finding out your webhook is misconfigured only after the first real batch of renewal dates arrive is a far more expensive way to learn the same lesson.

Step 6: Track Subscription Revenue

EDD provides built-in reporting for recurring revenue:

EDD Reports Dashboard

Go to Downloads → Reports and select the “Subscriptions” tab to see:

  • Monthly Recurring Revenue (MRR): total revenue from active subscriptions normalized to monthly
  • Annual Recurring Revenue (ARR): MRR multiplied by 12
  • Churn rate: percentage of subscribers who cancel per month
  • New subscriptions: number of new subscribers in the period
  • Renewal rate: percentage of subscriptions that successfully renew

Key Metrics to Monitor

MetricWhat It MeansHealthy Benchmark
Monthly Churn RatePercent of subscribers lost per monthUnder 5% for digital products
LTV (Lifetime Value)Average revenue per subscriber over their lifetime3x or more the customer acquisition cost
MRR GrowthMonth-over-month change in recurring revenuePositive and increasing
Failed Payment RatePercent of renewal attempts that failUnder 10%
Recovery RatePercent of failed payments recovered via retriesAbove 50% with smart retries enabled

Subscription Emails

Recurring Payments adds several email notifications. Configure them under Downloads → Settings → Emails:

  • Subscription Renewal Notice: sent when a renewal payment is successfully processed
  • Subscription Renewal Reminder: sent before the renewal date (configure days in advance)
  • Subscription Cancellation: confirmation when a subscription is cancelled
  • Subscription Expired: sent when a subscription reaches its maximum billing cycles
  • Payment Failed: notifies the customer that their renewal payment did not go through

Customize each email with merge tags like {subscription_name}, {expiration_date}, {renewal_amount}, and {update_payment_url}.

Common Subscription Models with EDD

Here are proven models that work well with EDD:

SaaS or Plugin Licensing

Charge annually for software access. Combine with Software Licensing to tie license validity to subscription status. When a subscription lapses, the license expires and updates stop.

Membership or Content Access

Grant access to exclusive content or downloads while the subscription is active. Use EDD’s content restriction features to gate specific downloads or pages behind active subscription status.

Course Access

Combine with an LMS plugin to offer course subscriptions, where students pay monthly and lose access when they cancel. This works well for ongoing learning programs rather than one-off courses.

Support or Maintenance Plans

Sell priority support or website maintenance as a recurring product. Customers get access to a support portal or ticket system while their subscription is active, and access should be revoked automatically the moment a subscription lapses rather than left to manual admin follow-up.

Recurring Payments vs WooCommerce Subscriptions

If you are deciding between platforms, here is how they compare for subscription products, checked against current pricing rather than older figures that have since drifted:

FeatureEDD Recurring PaymentsWooCommerce Subscriptions
Best forDigital products, software, membershipsPhysical and digital products together
PricingBundled into EDD’s entry-level Personal Pass; no separate purchase requiredSold as a standalone extension, currently listed at $279/year for a single site license
Stripe supportNative with smart retriesNative with smart retries
Free trialsYesYes
Signup feesYesYes
Upgrades/downgradesYes, with prorationYes, with proration
Software licensing integrationNative, same ecosystem as Software LicensingRequires a separate third-party plugin
Performance overheadLightweight, digital-only checkoutHeavier, runs the full WooCommerce e-commerce stack

For a deeper comparison, see our EDD vs WooCommerce comparison.

Common Setup Mistakes to Avoid

A handful of mistakes account for most of the recurring-billing support tickets store owners run into after launch, and nearly all of them are avoidable with a bit of care during setup rather than after the first customer signs up.

Skipping the webhook step entirely is the most damaging one. If a store owner sets up Stripe with API keys but never registers the webhook endpoint, initial subscription signups still work fine because that first charge happens synchronously during checkout. The problem shows up thirty days later, when the first renewal is supposed to fire and EDD has no way of knowing it happened, because the notification that would have told it never arrived. The subscription looks abandoned in EDD’s dashboard while Stripe is quietly still charging the customer every month. Testing renewals with a Stripe test clock before launch, as covered above, is what catches this before it becomes a real billing dispute.

Setting “Times” to a fixed number when the intent was an ongoing subscription is a close second. It is easy to type “12” into that field thinking of it as “bill monthly for a year” and forget that Recurring Payments will stop billing entirely after the twelfth charge unless the field is set to 0 for unlimited. Confirm the setting matches the actual business model before the product goes live, not after a customer notices they stopped being charged.

Finally, forgetting to test the downgrade path specifically, not just the upgrade path, leaves a real gap. Upgrades tend to get tested because they involve more money changing hands and store owners naturally want to confirm the charge works. Downgrades and cancellations get skipped, and that is exactly where proration bugs and access-revocation bugs tend to hide, because nobody looked closely at what happens to a customer’s access the moment they choose to pay you less.

Frequently Asked Questions

Which payment gateway works best for EDD recurring payments?

Stripe is the recommended gateway. It handles subscription billing natively, supports automatic smart retries for failed payments, sends customer notifications, and provides detailed subscription analytics. PayPal Commerce is the second-best option and is worth offering alongside Stripe rather than instead of it, since some customers simply prefer paying through PayPal.

Can I offer both monthly and annual billing for the same product?

Yes. Use variable pricing to create separate price options for monthly and annual billing. Each price option can have its own recurring period, amount, and trial settings. Most stores offer a 15-20% discount on annual plans to incentivize longer commitments and reduce churn.

What happens when a subscription payment fails?

Stripe automatically retries using its smart retry logic if you have it enabled. EDD sends a failed payment email to the customer with a link to update their payment method. If all retries fail, the subscription moves to unpaid and, depending on your settings, is cancelled. You can configure the number of retries and their timing in Stripe’s billing settings.

Can customers upgrade or downgrade their subscription?

Yes. Enable upgrades and downgrades in the Recurring Payments settings. You can choose how proration works: charge the difference immediately, apply it at the next renewal, or charge the full new price up front. Customers manage this from their account page without needing to contact support.

Do customers keep access after cancelling?

Yes. When a customer cancels, their access continues until the end of the current billing period. No further charges are made, but they retain access to their downloads and content until the period expires, the same way most subscription services handle a mid-cycle cancellation.

Can I offer a free trial before charging?

Yes. When creating a subscription product, set the free trial period in days. The customer signs up with their payment method on file but is not charged until the trial ends. If they cancel during the trial, they are never charged at all.

Do I need the most expensive EDD pass just to accept subscriptions?

No. Recurring Payments is included starting with EDD’s entry-level Personal Pass, which also covers Stripe, PayPal, and Apple Pay. The higher tiers add unrelated features like multi-vendor marketplaces, physical shipping, and advanced reporting, none of which are required just to sell a subscription product.


Related reading

Complete Easy Digital Downloads Setup Guide

Configure EDD Payment Gateways: Stripe and PayPal

Easy Digital Downloads vs WooCommerce

Leave a Reply

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