Pick your payment gateway before you pick between WooCommerce subscription plugins, because the gateway is what decides whether a renewal charges a saved card by itself or emails the customer a link and hopes. Every plugin on this page can create a monthly product; only some combinations of plugin and gateway can take the money in month four without a human involved.
What follows is the criteria I judged each one on, a table of versions, install counts and prices I checked on 25 September 2026, a command that tells you in ten seconds which of your gateways can do automatic renewals, and the specific thing WooPayments removed in version 10.2 that makes most advice written before this year wrong. Tested against WooCommerce 11.1.2 on WordPress 7.1.2.
Automatic renewals are a gateway feature, not a plugin feature
A subscription plugin stores a schedule. It knows that order 1,482 should bill $29 again on the 14th, and it queues a job to make that happen. What it cannot do is charge a card it does not hold, and it never holds one — the card lives with your processor, behind a token.
So the renewal only goes through if your gateway integration declares two things: that it supports tokenised payments, and that it accepts a charge initiated by the merchant rather than by the shopper. In WooCommerce that shows up as a gateway declaring subscriptions in its supports array. A gateway without it is not broken and not useless — the subscription simply falls back to manual renewal, where the customer gets an email with a pay link and roughly a third of them do not click it.
The order this decision goes in. Gateway first, plugin second. If your processor is Stripe or PayPal you have a real choice between all four options below. If you are on a regional gateway, an offline method, or a bank plugin that does nothing with tokens, the plugin you buy will not change that, and you should price a gateway migration before you price a licence.
The five criteria I judged each WooCommerce subscription plugin on
Stated up front so you can reweight them for a store shaped differently from the one I assumed: a US store with between 50 and 2,000 active subscribers, one recurring product line rather than forty, Stripe or PayPal already taking one-off orders, and nobody on staff who wants to reconcile failed renewals by hand every Monday.
- What the free tier does with a failed renewal. This is the one that decides revenue. Cards expire, banks decline, and a plugin that gives up after one attempt quietly churns customers who fully intended to stay. Configurable retry schedules are a paid feature almost everywhere, which is worth knowing before you budget for the free tier.
- Which gateways it speaks, and whether yours is one of them. Not “supports Stripe” in marketing copy — whether the specific integration hands the plugin a reusable token. Check this against the gateway you actually run, not the gateway you plan to switch to.
- Whether customers can change plans themselves. Upgrades, downgrades, pauses and cancellations from the My Account page. Every one of those that requires a support ticket is a cost you pay monthly, forever, and switching with proration is a genuinely hard feature that most free tiers skip.
- Migration cost, in both directions. Subscription data is schedules, renewal history and gateway tokens, and tokens are the part that does not move. Ask how you would leave before you arrive, because a plugin you cannot exit is a plugin that can raise its price.
- Maintenance signals that matter more here than elsewhere. The tested-up-to version, the update cadence, and what the one-star reviews are actually about. This code runs unattended on a schedule and moves money; a stale subscriptions plugin is a different class of risk from a stale gallery plugin.
WooCommerce subscription plugins compared
Versions, install counts and ratings come from WordPress.org and each vendor’s own product page, all checked on 25 September 2026. Read the ratings column carefully — the spread here is much wider than in most plugin categories, and one of these has almost as many one-star reviews as five-star ones.
| Plugin | Free version | Paid price (25 Sep 2026) | Retries and self-service | Where it falls short |
|---|---|---|---|---|
| WooCommerce Subscriptions (Woo) | None — paid only | $279/year, or $446.40 for two years. 30-day money-back guarantee. v9.2.0, 100,000+ installs, tested to WP 7.1 and WooCommerce 11.1, PHP 7.4+ | Configurable retry rules, switching with proration, pause and resume, early renewal, customer-facing changes from My Account | The most expensive row by a distance, and the product page does not state a site limit, so confirm what your licence covers at checkout. Paying $279 before you know whether the model works is a real barrier for a store testing its first recurring product |
| Subscriptions for WooCommerce (WP Swings) | Yes — v2.0.3, 10,000+ installs, 4.5/5 from 180 reviews, tested to WP 7.1.2, PHP 7.4+, updated two weeks ago | Pro $129/yr one site, $269/yr five sites, $529/yr ten sites. 30-day money-back guarantee | Free tier: simple subscription products, trials, signup fees, cancellation. Retry rules, pause/resume and plan switching with proration are Pro | Variable subscription products are Pro, which catches out anyone selling the same box in three sizes. The free/Pro line runs straight through features most stores discover they need in month two rather than month one |
| Subscriptions for WooCommerce with Stripe Recurring Payments (Convers Lab) | Yes — v2.0.0, 1,000+ installs, 4.9/5 from 25 reviews, tested to WP 7.1.2, PHP 7.4+, updated this week | Pro adds Mollie, Razorpay, Xendit and Paddle; the price is not listed on the WordPress.org page | Stripe and PayPal recurring charges in the free plugin, plus admin and customer dashboards and guest checkout | 1,000 installs and 25 reviews is a thin track record for code that bills customers unattended. The rating is excellent and the sample is small — both are true at once, and the second is why you test a full renewal cycle before migrating a live product line |
| YITH WooCommerce Subscription | Yes — v4.21.0, 6,000+ installs, 3.0/5 from 46 reviews, requires WP 6.9 and PHP 8.0, tested to WP 7.1.2, updated four weeks ago | Premium sold on yithemes.com with a 30-day refund; the plugin page I checked does not list the tier price, so get it from their pricing page | Free tier: simple, virtual and downloadable subscriptions via PayPal. Subscription boxes, delivery scheduling, pause/switch and CSV export are Premium | 17 of its 46 reviews are one-star against 19 five-star, and the complaints cluster on support response times and premium features not matching the description. That is a split worth reading yourself before spending money |
One more worth knowing about that I could not verify to the same standard: WPSubscription from SpringDevs publishes a free core plugin and sells Pro from $89/year for one site and $149/year for five, with lifetime licences at $199 and $429 and a 14-day guarantee. Those figures are from their own pricing page on 25 September 2026. I could not pull its WordPress.org listing to check installs and update cadence independently, so treat the four rows above as the verified set and this one as a lead to check yourself.
What WooPayments removed in 10.2, and why old advice is now wrong
For several years the standard cheap answer was: install WooPayments, get subscriptions built in, skip the licence. That answer is dead. WooPayments’ built-in subscriptions engine was removed entirely in version 10.2, for everyone, not just new accounts. Any guide that still recommends it was written before that change and has not been revisited.
What replaced it is Stripe Billing, an off-site billing engine available only to US-based WooPayments merchants, and it carries an additional fee charged on the whole order amount rather than on the subscription line. It also requires the paid WooCommerce Subscriptions extension to be installed anyway, so it is not an alternative to buying the licence. The functional gaps are specific and worth reading before you route a product line through it.
The percentage fee is the part to model properly. A fee on the entire order amount, stacked on top of processing, is a permanent margin cut on every renewal you ever take, and it compounds with the gateway costs you are already paying. Work it out against your average order value alongside the rest of your processing bill — WooCommerce payment gateway fees explained for US stores breaks down the lines that never appear on the headline rate.
Check which of your gateways can actually bill on a schedule
Do this before you spend anything. Every WooCommerce gateway declares its capabilities, and subscriptions is the one that means “I can charge a stored token on my own initiative”. Run this on the live site with WP-CLI and you get the answer for your exact configuration rather than for a generic store.
# Run from the WordPress root. Lists every enabled gateway and whether
# it can take an automatic renewal.
wp eval '
foreach ( WC()->payment_gateways()->get_available_payment_gateways() as $id => $gw ) {
printf(
"%-30s %s\n",
$id,
$gw->supports( "subscriptions" ) ? "automatic renewals" : "MANUAL RENEWAL ONLY"
);
}
'
Two notes on reading the output. Gateways only declare subscriptions when a subscriptions plugin is active, so install the free plugin you are evaluating first and then run it — on a store with no subscriptions plugin every row will say manual. And the official Stripe gateway, currently v11.0.0 with 700,000+ installs and tested to WordPress 7.1.2, supports recurring charges for cards but not for every alternative method it offers at checkout; a customer who paid with a voucher method is on manual renewals even though the gateway as a whole says otherwise.
If WP-CLI is not available on your host, the same information is visible under WooCommerce > Settings > Payments once a subscriptions plugin is active: a gateway that cannot do recurring will not appear as a payment option on a cart containing a subscription product. That is a slower test but it needs no shell access.
Renewals run on Action Scheduler, so fix your cron first
Here is the failure mode that looks like a plugin bug and is not. Renewal charges are queued as Action Scheduler jobs, Action Scheduler is driven by WP-Cron, and WP-Cron only fires when somebody loads a page. On a store with steady traffic that is invisible. On a store with forty subscribers and six visitors a day, renewals run hours or days late, customers get charged on the wrong date, and you start reading refund requests about it.
Check what is queued. The table prefix is wp_ on a default install; substitute yours.
wp db query "SELECT hook, status, scheduled_date_gmt
FROM wp_actionscheduler_actions
WHERE hook LIKE 'woocommerce_scheduled_subscription%'
AND status = 'pending'
ORDER BY scheduled_date_gmt
LIMIT 20;"
If dates in that list are in the past and the status is still pending, your scheduler is not running. The same list is in the admin under WooCommerce > Status > Scheduled Actions if you would rather click. The fix is to stop relying on page loads: disable the pseudo-cron in wp-config.php and drive it from a real system cron.
// wp-config.php — above the "That's all, stop editing!" line.
define( 'DISABLE_WP_CRON', true );
# crontab -e — every five minutes is right for a subscription store.
*/5 * * * * cd /var/www/example.com && wp cron event run --due-now --quiet
# No WP-CLI on the host? Hit the endpoint instead.
*/5 * * * * curl -sS https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Prefer the WP-CLI form where you can have it: it runs as a real process with your PHP CLI memory limit rather than inside a web request that a timeout can kill halfway through a batch of charges. This is the same underlying mechanism behind scheduled posts failing to publish, so if you have seen that symptom you already have the problem — the missed schedule error in WordPress walks through the same diagnosis from the publishing side.
One caching note while you are here. Subscription stores get burned by page caches that serve a cached My Account or checkout response to a logged-in subscriber, which produces support tickets that read like billing bugs. WooCommerce caching plugins: what breaks and what works covers which ones exclude those routes correctly out of the box.
Failed renewals are where the revenue actually leaks
Acquisition gets the attention and involuntary churn takes the money. A card expires, an issuer declines a merchant-initiated charge it does not recognise, a bank reissues a number after a breach — none of these customers decided to leave. Whether you keep them comes down to two things your plugin controls: how many times it retries and on what schedule, and whether the customer ever finds out.
Retry rules are a paid feature in every option on this page, which is the strongest single argument for a licence rather than a free tier once you are past a few dozen subscribers. Do the arithmetic before you decide it is not worth it: 300 subscribers at $29 with a 6% monthly failure rate is 18 failed charges a month, and recovering two-thirds of them is roughly $350 a month against a $129 or $279 annual licence.
The notification half is where stores lose money for a reason they never see. Renewal-failure emails go out through wp_mail() like everything else, so if your store’s mail is landing in spam folders, your dunning sequence is a sequence of messages nobody reads. Confirm that path works before you tune retry schedules — WooCommerce SMTP plugins compared for order emails covers the plugin and service side, and the free option there gives you a log so you can prove a failure notice was delivered rather than assume it.
Two more operational things that only bite recurring stores. Sales tax is recalculated at renewal rather than frozen at signup, so a subscriber who moves states changes what you owe on their next charge — WooCommerce sales tax plugins compared for US stores covers which ones handle that and what the per-transaction cost looks like. And your backup policy needs to cover subscription schedules, because restoring a database from Tuesday can re-queue renewal charges that already ran on Wednesday.
If you are shipping a physical box every month
Recurring physical products add a problem digital subscriptions do not have: the renewal charge and the shipment are two different schedules, and customers care about the second one. “Billed on the 3rd” is fine. “Arrives some time after the 3rd” generates a support ticket every month.
Handling that means a delivery date on the order, not just a billing date. The established option is Order Delivery Date for WooCommerce from Tyche Softwares, which is the safe recommendation and has the longest track record. My own Delivery Manager for WooCommerce covers delivery dates, time slots and per-zone rules from the checkout page. Disclosure: I build and maintain that plugin. Judged by the same criteria I used in the table above, it is the weaker of the two on exactly the measure that matters most here: a much smaller install base and review count, which for code that runs on every checkout is a real argument against it. Tyche’s plugin is the one to install if you want the boring, well-trodden choice; mine is worth a look if you need time-slot capacity limits, which most alternatives do not offer.
Whichever you use, shipping cost on renewals is the thing to model before launch. A renewal is a new order and gets charged shipping again unless you have configured otherwise, and a box priced on flat-rate domestic shipping behaves very differently once subscribers are spread across the country. WooCommerce shipping methods compared for US stores covers what the realistic per-order figures look like.
What to pick at your store’s size
- Testing whether anyone will subscribe at all. A free tier and one simple product. WP Swings’ free version on Stripe or PayPal will tell you whether the model works without spending anything, and you can carry the answer into a paid plugin later. Do not architect for scale before you have twenty subscribers.
- Stripe-only store, straightforward monthly product. The Convers Lab plugin puts Stripe and PayPal recurring charges in the free tier, which none of the others do. Run a full cycle — signup, first renewal, a deliberately failed renewal with a test card — on staging before you trust it with a live product line, because the install base is small.
- Recurring revenue is the business, not a side line. WooCommerce Subscriptions at $279/year. The retry configuration, proration on plan switches, and customer self-service from My Account are what you are buying, and past roughly 200 subscribers they pay for themselves in support time alone. Take the 30-day guarantee seriously and actually test switching inside it.
- You want paid features without the Woo price. WP Swings Pro at $129/year for one site is the mid-market answer, and the five-site tier at $269 is reasonable for an agency. Check specifically that variable subscription products behave the way you need, since that is the feature most likely to be the reason you upgraded.
- On WooPayments and counting on built-in subscriptions. Re-plan. That engine is gone as of 10.2, Stripe Billing is US-only with a fee on the full order amount and needs the paid extension anyway, and several features you probably assumed — switching, manual renewal, free plans — are not available through it.
Frequently asked questions
Do I need the paid WooCommerce Subscriptions extension?
Not to sell a recurring product — several free plugins do that on Stripe and PayPal. You need it when involuntary churn starts costing more than the licence, because configurable retry rules, plan switching with proration and customer self-service are the paid features across the whole category. At $279 a year it is worth buying at the point where you can name the monthly revenue it recovers, and not before.
Which payment gateways support automatic renewals in WooCommerce?
Any gateway whose integration declares subscriptions in its supports array, which in practice means the tokenising ones: Stripe, PayPal, and several others depending on the plugin you pair them with. Rather than trust a compatibility list, run the WP-CLI snippet above on your own store with the subscriptions plugin active — it reports the answer for your exact set of enabled gateways. Anything that comes back as manual renewal only will email customers a payment link instead of charging them.
Why did my WooCommerce renewals charge late?
Almost always WP-Cron rather than the subscriptions plugin. Renewal jobs sit in Action Scheduler and only run when a page load triggers the scheduler, so a low-traffic store processes them late. Check WooCommerce > Status > Scheduled Actions for pending jobs with dates in the past, then set DISABLE_WP_CRON and run the scheduler from system cron every five minutes.
Can I move subscriptions from one plugin to another?
Schedules and history can usually be migrated; the gateway tokens are the hard part, because they are stored against the integration that created them. Expect some subscribers to need re-authorisation, which means an email asking them to re-enter a card, which means losing a percentage of them. Plan a migration for your quietest month, run it on staging against a copy of the live database first, and treat any vendor that cannot explain the token path clearly as a warning sign.
Does WooPayments still include subscriptions for free?
No. The built-in engine was removed completely in WooPayments 10.2. The replacement, Stripe Billing, is limited to US-based WooPayments merchants, charges an extra fee calculated on the whole order amount, and still requires the paid WooCommerce Subscriptions extension. It also does not support switching, early renewal, manual renewal, free subscriptions or editing an existing subscription’s line items.
How do taxes work on WooCommerce subscription renewals?
Each renewal is a new order and tax is calculated fresh against the customer’s current address and the current rate, not frozen at signup. So a subscriber who moves from Oregon to Washington changes what you collect on their next charge without doing anything, and a rate change in their jurisdiction applies automatically. That is the correct behaviour, and it is why a rate-lookup service is worth more to a subscription store than to a one-off store.
The short version
Run the gateway check first — if nothing on your store declares subscriptions, no licence fixes that. Start on a free tier while you are proving the model, and move to a paid plugin at the point where failed renewals cost more per month than the licence costs per year, which for most stores lands somewhere between 100 and 300 subscribers. Fix system cron before launch rather than after the first round of late-charge complaints. And if your plan depended on WooPayments including subscriptions, price the extension into your margin now, because that option no longer exists.
Whatever you pick, take a full backup before the first live renewal cycle and confirm you can restore it, because a broken subscriptions table is the one WooCommerce failure where the data you lose is a schedule of future money. WooCommerce backup plugins compared for store owners covers which ones capture orders taken during the restore window.

Leave a Reply to This Post