7 Dunning Email Templates That Recover Failed Payments
Most dunning emails are terrible — not because founders don't care, but because nobody teaches you how to write them. Here are 7 templates you can steal, with timing and reasoning for each.
Companies recovering 60-70% of failed payments aren't doing anything magical. They're following a few non-obvious principles and sending the right message at the right time.
Why most dunning emails fail
The biggest mistake isn't the copy. It's the assumption that all payment failures are the same. A card expiring is completely different from insufficient funds, which is completely different from a bank blocking an international charge. When you send the same generic "your payment failed" email for all three, you're treating very different situations identically.
Three other common mistakes: adding friction (forcing login to update a card), waiting too long (first email should go out within an hour), and being too aggressive (most failures are accidental — treat them that way).
Template 1: The Soft Alert (Day 0 — within 1 hour)
This is the most important email in the sequence. Most people write it wrong.
Subject: Quick heads up about your [Product] account
Hi [First Name], Bit of an annoying thing — we couldn't process your payment for [Product Name] today. Usually this happens because a card expired or has different billing info than expected. Takes about 30 seconds to fix: → Update Payment Method [link] If you've already updated your card or this looks like an error, feel free to ignore this — we'll retry automatically in a couple days. — [Your Name] [Product] · questions? Just reply to this
Why this works: Non-threatening. Assumes good faith. The "retry automatically" line reduces urgency anxiety — you're not saying "act NOW or we cancel you." That comes later.
Template 2: Specific Decline — Insufficient Funds (Day 0)
When you know the specific reason, use it. Stripe's decline_code field tells you a lot.
Subject: Your [Product] payment — we'll retry in 3 days
Hi [First Name], We tried to process your [Product Name] payment today but the card showed insufficient funds. It happens — no big deal. We'll automatically retry in 3 days. If you'd rather take care of it now or try a different card: → Update Payment Method [link] Either way, your account is staying active through this. — [Your Name]
Why this works: Honest about the reason without being embarrassing. The "retry in 3 days" line suggests you're handling it, which reduces customer anxiety. Some will update immediately; others will let you retry and succeed on payday.
Template 3: Expired Card (Day 0)
Expired cards are the most fixable failure type. Say that explicitly.
Subject: Your card expired — here's the fast fix
Hi [First Name], Looks like the card we have on file for [Product Name] expired recently. Super common — happens to everyone. Update it here (takes 60 seconds): → Update Payment Method [link] Your current card: •••• •••• •••• [Last 4], expired [MM/YY] — [Your Name]
Why this works: Shows you know specifically what happened. Including the last 4 digits and expiry makes it feel genuinely personalized, not automated.
Template 4: The 3-Day Follow-Up (Day 3)
Subject: [Product] — payment still needs attention
Hi [First Name], Just following up — we haven't been able to process your [Product Name] payment yet, and we want to make sure your account stays active. Your access is still on right now, but we'll need to pause things in about 4 days if we can't complete billing. → Update Payment in 60 Seconds [link] If something feels off or you have questions, just reply — we're real people. — [Your Name]
Why this works: Soft countdown without being aggressive. The "real people" line is important — it reduces friction for customers who are confused and might just need to ask a question.
Template 5: The Win-Back Offer (Day 5 — optional)
This is the underused middle email. Add it if you're seeing significant drop-off between day 3 and day 7.
Subject: Something I wanted to offer you
Hi [First Name], We still haven't been able to process your [Product Name] payment, and I just wanted to check in. If cost is the issue, I'd be happy to talk about options — whether that's a plan that fits better, a short pause, or something else. I don't want you to lose access over something we can probably work out. If it's just the payment method, here's the direct link: → Update Payment [link] Either way — just let me know. — [Your Name]
Why this works: For high-value customers especially, this kind of personal outreach converts surprisingly well. The "plan that fits better" line opens a door to retention conversations.
Template 6: The Final Warning (Day 7)
Subject: Your [Product] account pauses tomorrow
Hi [First Name], We've tried a few times to process your payment for [Product Name] without success. Tomorrow, on [Specific Date], we're going to need to pause your account access. Your data stays safe — we keep everything for 30 days so you can reactivate anytime. But access to [Feature 1], [Feature 2] will be paused until billing is resolved. → Update Payment Now — Takes 2 Minutes [link] If you meant to cancel, you don't need to do anything. No hard feelings. — [Your Name]
Why this works: Specific date (not "soon"), specific consequences, data safety reassurance, and explicit permission to leave. That last part sounds counterintuitive but actually reduces churn — it makes people feel respected, not pressured.
Template 7: The Reactivation Email (Day 30)
After account pause. Most companies never send this — a meaningful portion of paused accounts will reactivate if you reach out once more.
Subject: Your [Product] account is waiting for you
Hi [First Name], It's been about a month since your [Product Name] account was paused. We've kept all your data safe, and your account is ready to reactivate whenever you're ready. [One sentence about a new feature or improvement, if applicable.] → Reactivate Your Account [link] And if there's something that made the experience not worth it, I'd genuinely love to hear it. — [Your Name]
Timing that works
| Timing | Open Rate | |
|---|---|---|
| Decline-specific (T1/2/3) | Within 1 hour | ~68-72% |
| 3-day follow-up (T4) | Day 3 | ~52-58% |
| Win-back offer (T5) | Day 5 (optional) | ~45% |
| Final warning (T6) | Day 7 | ~78-82% |
| Reactivation (T7) | Day 30 | ~35-40% |
Day 7 has the highest open rates because people know it's the last chance. Send at 9–11 AM local time. Avoid Friday afternoons.
Four things that kill dunning performance
- Using Stripe's default emails. Open rates around 13-15%. Turn them off and send your own.
- Requiring login to update payment. 80%+ abandon at the login screen. Use Stripe Checkout in setup mode for frictionless payment update links.
- Sending from a no-reply address. All dunning emails perform better from a real address.
- One-and-done sequences. A single email might get you 20-25% recovery. The multi-email sequence above drives 60-70%.
Quick Summary
Dunning emails work when they're:
- Decline-specific (expired card ≠ insufficient funds ≠ generic)
- Frictionless (one-click update, no login required)
- Timed right (first email within 1 hour)
- Human in tone (assume good faith, real reply-to)
- Part of a multi-email sequence
Most companies are leaving 40-50% of their potential recovery on the table. These templates close that gap.
Want this automated?
Revive automates this entire sequence — decline-specific emails, optimal timing, one-click update links, smart retries — for $49/mo flat, no revenue share.
Start recovering payments →Related reading: Dunning Email Best Practices: Timing & Psychology · Complete Failed Payment Recovery Strategies · SaaS Churn Metrics That Actually Matter
About Revive: Payment recovery automation for SaaS. Smart retries, dunning emails, and win-back campaigns. $49/mo flat, no revenue share. Connect Stripe in 3 minutes.