Back to blog

WooCommerce subscription payment failures: how to stop losing recurring revenue

A one-time failed payment costs you a sale. A failed subscription payment costs you a customer — and every renewal they would have made after that. If you're running WooCommerce Subscriptions, this is quietly one of the most expensive problems in your business.

This is called involuntary churn — customers who didn't choose to cancel, but stopped paying because their card expired, got declined, or their bank flagged the charge. Unlike voluntary churn, it's almost entirely preventable with the right retry and follow-up system in place.

20-40%
of subscription churn is typically involuntary — failed payments, not customer choice
~70%
of failed recurring payments can be recovered with a proper retry and dunning sequence

Why subscription payments fail even when the card worked last month

A card that worked fine for the initial purchase can fail on a later renewal for reasons that have nothing to do with your store:

None of these mean the customer wants to cancel. Most would happily update their card if asked at the right moment. The problem is almost never intent — it's friction.

Step 1: turn on WooCommerce's built-in retry system

If you're using WooCommerce Subscriptions, there's a retry system built in that many stores never actually configure. Go to WooCommerce → Settings → Subscriptions → Failed Recurring Payment Retry System and make sure it's enabled.

By default, it retries a failed payment automatically at set intervals — commonly after 1, 2, and 3 days — before marking the subscription as failed. This alone recovers a meaningful share of failures, since a lot of declines are temporary (insufficient funds today, funds available in two days).

Step 2: build a dunning email sequence

Retries alone don't catch everything — particularly expired cards, which will never succeed no matter how many times you retry the same card number. That's where dunning emails come in: automated messages that tell the customer their payment failed and ask them to update their card.

Day 0 — Payment fails

Friendly first notice

"Your payment didn't go through — here's a quick link to update your card." Warm tone, no urgency yet. Most recoveries happen at this stage.

Day 3 — First retry fails

Second reminder

Slightly more direct. Mention what they'll lose access to if the subscription lapses.

Day 7 — Final retry fails

Last chance notice

Clear deadline — "Your subscription will be cancelled in 48 hours unless payment is updated." Urgency is appropriate here since this is genuinely the last step.

Day 9-10 — No response

Cancellation + win-back

Subscription cancels. Send one final "we'd love to have you back" email with a direct resubscribe link, a few weeks later.

Tools that handle this well for WooCommerce: FluentCRM for building the automation yourself, or a dedicated dunning plugin like Smart Dunning by Putler if you want something purpose-built out of the box.

Tone matters more than people expect

Dunning emails that sound robotic or threatening get ignored or trigger spam complaints. The best-performing sequences read like a helpful nudge from a real person, not an automated warning. Keep the first email especially light — most customers didn't cancel on purpose and just need a one-click way to fix it.

Step 3: know when it's happening, not just after the fact

Retry logic and dunning emails both assume you already know a payment failed. The gap most stores don't think about is upstream of that — actually catching the failure event reliably in the first place.

If your webhook delivery has issues (a common problem — see our guide on Stripe payments succeeding but orders not being created), your retry and dunning systems never even trigger, because WooCommerce never registered the failure to begin with. The subscription just quietly stops renewing with no email sent at all.

This is why real-time gateway monitoring matters even for subscription businesses specifically. ZextaPay watches every transaction — including recurring charges — and flags failures immediately with a plain-English reason, independent of whether your dunning automation correctly triggered. It's the safety net underneath your recovery system, not a replacement for it.

See every failed renewal as it happens

Free WooCommerce plugin. Live transaction dashboard, revenue at risk tracking, gateway health monitoring.

Install ZextaPay free

Bottom line

Involuntary churn is one of the few subscription business problems that's genuinely fixable with process, not luck. Turn on WooCommerce's retry system, layer a warm dunning sequence on top, and make sure you have visibility into failures happening in the first place — in that order. Most stores are missing at least one of these three, and each one compounds the other two.

Related reading
Why WooCommerce payments fail (and how to actually fix it)
Related reading
Stripe payment succeeded but WooCommerce order failed? Here's why

Frequently asked questions

Does WooCommerce automatically retry failed subscription payments?

Yes, if you're using WooCommerce Subscriptions, it has a built-in retry system that attempts failed payments again after 1, 2, and 3 days by default. This needs to be enabled and configured under WooCommerce → Settings → Subscriptions → Failed Recurring Payment Retry System.

What is dunning and why does it matter for WooCommerce subscriptions?

Dunning is the process of automatically contacting customers whose recurring payment failed, asking them to update their payment method. A good dunning sequence recovers a meaningful percentage of failed subscription payments that would otherwise result in involuntary churn.

Why do subscription payments fail even with a previously valid card?

The most common reasons are expired cards, banks flagging recurring charges as suspicious, insufficient funds at the billing date, and cards being replaced after a data breach. None of these are within your control, but a retry and dunning sequence recovers a large share of them.