The dunning email sequence that recovers 72% of failed subscription payments
A dunning sequence is the email cadence you send after a subscription payment fails. Done well, it recovers 60-80% of failed charges. Done badly, it recovers under 30%, annoys customers, and increases voluntary churn from people who would have stayed if you hadn't emailed them five times in a row.
This is the cadence that gets 72% median recovery across our customer base.
The 5-touch cadence
The structure: five emails, none of them annoying, each one routed by the underlying decline code.
- Email 1 — T+0 (immediate). Subject: "Quick heads up about your subscription." Goal: acknowledge, no urgency.
- Email 2 — T+24h. Subject: "Still trying — here's an update." Goal: soft retry notification.
- Email 3 — T+72h. Subject: "We tried again — can you take a look?" Goal: action ask.
- Email 4 — T+5 days. Subject: "We don't want to interrupt your access." Goal: introduce stakes.
- Email 5 — T+10 days. Subject: "Last note before we pause." Goal: final.
That spacing matters. Too tight (daily emails) trains people to ignore you and tank your domain reputation. Too loose (weekly only) and you lose the people who would have updated on day 2 if asked.
The most important rule
Every email goes to the customer's inbox, not a billing screen. People do not log in to "check their billing." They open email. If the dunning workflow requires the customer to log in before they see the message, you've lost 60% of recoverable revenue.
Decline-code routing
The biggest mistake in most dunning sequences: every customer gets the same email regardless of why their card failed. That's wrong because the action you need from them is different:
insufficient_funds:** No action needed from the customer. Tell them the next retry is on a specific date (and pick a smart date — see timing-optimized retries). Don't ask for a card update on this one — they don't need to update; they need their paycheck to clear.expired_card/incorrect_cvc:** Direct ask for a card update with a one-click link.generic_decline/call_issuer:** Ask them to call their bank, with a friendly explanation that this is usually a fraud-prevention flag, not anything wrong on your side.lost_card/stolen_card:** Card update, with empathy that they probably know about this already.
Sending the same "Update your card" email to every customer turns 50% of recoverable insufficient-funds customers into voluntary churn ("if I have to update something, I'm just going to cancel").
Voice and tone
Three guidelines that consistently outperform:
1. Lead with the specific subscription. "Your subscription to [Product Name]" is far more effective than "Your account." People have many subscriptions; remind them which one. 2. No urgency on email 1 or 2. "Your account is in danger" on the first email reads as a scam. Save the stakes for email 4. 3. Be a human. "We tried your card today and it didn't go through. No big deal — banks decline cards for all sorts of reasons" outperforms the corporate "Your payment method has been declined."
The exact copy direction per email
### Email 1 (T+0): Acknowledge
- Subject: Conversational. Not "Payment failed" or "Action required." Try "Quick note about your [Product] subscription."
- Body: Three short paragraphs. (1) Heads up that the card didn't go through. (2) What we're going to do (retry on a specific date, or wait for them). (3) No action needed from them unless they want to update the card now.
- CTA: Soft. "Update card if you like" — not "Update now or lose access."
### Email 2 (T+24h): Soft retry notification
- Subject: "Still trying your card — here's the status."
- Body: Brief. We tried again, here's what happened, here's what's next.
- CTA: Same soft "update if you want" link.
### Email 3 (T+72h): Action ask
- Subject: "Can you take a look at your subscription?"
- Body: This is where the tone changes from "no action needed" to "if you don't act, we'll need to pause."
- CTA: Bigger button: "Update payment method."
### Email 4 (T+5 days): Stakes
- Subject: "We don't want to interrupt your [Product] access."
- Body: Concrete. We've tried four times. Next attempt is in 5 days. After that we'll pause your subscription.
- CTA: "Update card and keep your access."
### Email 5 (T+10 days): Last note
- Subject: "Last note before we pause your [Product] subscription."
- Body: Acknowledges it's the last email. Reminds them what they lose. Offers a downgrade or pause option if you have one.
- CTA: Update card or contact us. Final.
The three mistakes that kill dunning rates
1. Subject-line spam patterns. "URGENT" or "ACTION REQUIRED" in caps triggers inbox filters and reads as predatory. Test your subject lines against Mail-Tester and aim for spam scores under 2. 2. No domain warm-up. Dunning emails go to people who haven't engaged in a while. If your sending domain doesn't have a strong reputation, dunning emails land in promotions or spam. Send dunning from a subdomain you've warmed up (e.g., billing@) and authenticate properly (SPF, DKIM, DMARC). 3. No A/B testing. Treat dunning copy as conversion copy. Test subject lines, CTAs, and tone every quarter. Most stores running default Stripe dunning leave 20-30% recovery on the table relative to a tuned sequence.
What "72% median recovery" actually means
The 72% number across Omesta customers is for failed payments where the underlying card is still valid (so excluding closed accounts, fraud declines, etc.). Across all failed payments including hard declines, the gross recovery rate is closer to 60%.
The remaining 30-40% are unrecoverable through any sequence — closed accounts, fraud cancellations, customers who genuinely no longer want the product. For those, the best move is a clean cancellation with a "come back" offer for 90 days later.
How Omesta runs this
Each Omesta account ships with the cadence above, with decline-code routing built in. You can customize the copy, the timing, or the number of touches. Or leave it on default and ship.
Most customers see first recoveries within 72 hours and hit the platform's $1,000 earn-back threshold within 2-4 weeks.