A declined card does not have to mean a lost order. This guide explains why WooCommerce payments fail, how much each failure costs your store, and how to build a repeatable day 1 / day 3 / day 7 reminder flow that brings 15–30% of that revenue back — without writing a line of code.
When a checkout ends with the order in Failed status, one of these usually happened:
Failed payments are invisible on your revenue dashboard: the order simply never completes. Multiply them out and it adds up fast. A store with 50 failed payments a month, an $80 average order value and a conservative 20% recovery rate:
Industry benchmarks put recurring-revenue leakage from failed payments around 9% of revenue — most of it recoverable with a reminder and a retry link.
The manual version looks like this:
This works at two failures per week. At twenty, it quietly stops happening — which is exactly when the revenue loss starts to show.
Automation turns the manual playbook into a standing rule. The version that works best in practice:
| Day | Message |
|---|---|
| Day 1 | Friendly reminder: “your payment didn't go through” + one-click retry link |
| Day 3 | Second reminder + small discount (e.g. 5%) to remove hesitation |
| Day 7 | Last call + bigger discount (e.g. 10%) to close the order |
The email has to link straight to the payment page for that order
(the WooCommerce order-pay endpoint with the order key). Anything longer —
“log in and find your order” — loses a large share of customers who would
otherwise have paid.
Lead with the retry link, not a coupon: most failures are card problems, not price problems. Introduce the discount only on the follow-ups, and escalate it. This keeps your average recovered order value high while still winning back the price-sensitive customers on day 7.
Generate the coupon automatically, tie it to one order, set usage limit 1, and let it expire. That prevents the classic mess of a shop full of open-ended 10% codes nobody remembers issuing.
Short beats clever. A template you can send today:
Subject: Your payment didn't go through — order #1234
Hi {{customer.first_name}},
We tried to process your payment for order #1234, but the bank
declined it. Nothing is lost — you can complete the order in one click:
[Complete my payment]
If your card has expired or you'd like to use another one, the
checkout page lets you pick a different payment method.
— {{shop.name}}
On day 3 and 7 add one line with the discount code and its expiry. That's the whole message: no design, no images, just a working link.
Track four numbers per month:
| Metric | How to get it |
|---|---|
| Failed payments | WooCommerce → Orders → Failed |
| Recovered orders | Failed orders that later reached Completed |
| Recovered revenue | Sum of those orders' totals |
| Recovery rate | Recovered ÷ failed |
A recovery rate below 10% usually means the retry link is buried or the timing is off; above 30% is rare and usually means your “failures” are mostly gateway glitches worth investigating separately.
All of the above is what the free PayRetry plugin does out of the box: it watches for failed WooCommerce orders, sends the day 1/3/7 reminders with one-click retry links, and creates the escalating single-use coupons automatically. Works with Stripe, PayPal, WooPayments and any other gateway that fails orders in WooCommerce.
Install PayRetry — free See the ROI calculator
Open the failed order, send the customer a direct payment link for that exact order
(WooCommerce builds it automatically on the order-pay page), then follow up
on days 3 and 7 with a small escalating discount. Automating that sequence is what a
failed-payment recovery plugin does.
Abandoned cart recovery targets shoppers who never reached checkout. Failed payment recovery targets customers who did everything right and whose card was declined at the last step — that order already exists in WooCommerce and usually needs only a retry. The two problems need different emails and different links; a plugin that handles both is the exception, not the rule.
Start with none on day 1 (most declines are temporary), then escalate — a common pattern is 5% on day 3 and 10% on day 7, with usage limit 1 and a short expiry.
Three emails over a week for an order they wanted is a service, not spam — and the messages stop the moment the order completes or expires. Keep them plain-text short and include a working unsubscribe and your shop's physical address, as required by CAN-SPAM/GDPR.
Any gateway that marks the order as Failed in WooCommerce: Stripe, PayPal, WooPayments, razorpay, mollie, and others. The retry link points at WooCommerce's own checkout for that order, so recovery does not depend on the gateway.
No — see the question above. If you want both flows, run them side by side: they address different drop-off points in the funnel.