Failed Payment Recovery Playbook Builder
Tell us the payment processor, the failed amount, the decline reason, and the tone you want. Get a 3-email recovery sequence with timing, subject lines, and what to avoid.
0 = it just happened. We'll shift the playbook timing accordingly.
Standard 3-email failed payment playbook
Generic failed payment playbook: works for any decline reason when you don't have the decline_code on hand.
Email 1
Right now (within 1 hour of the failed charge)The customer is still engaged with the product. The fastest email gets the highest reply rate.
Subject: Your last payment for {product} didn't go through
Hi {name},
Just a heads up: your most recent payment for {product} ($49) failed.
This usually happens because of an expired card, a new card number, or a quick bank hold. It's almost never deliberate.
If you can update your card here, we'll retry the charge automatically:
https://billing.stripe.com/p/login/...
Best,
{founder}Link to include
Card-update / billing portal link
Notes
- -Frame the failure as routine (expired card / bank hold), not catastrophic.
- -Plain text only. HTML invoices reduce response rates.
Email 2
Day 3 (72 hours later)The first email gets ignored more than half the time. The day-3 nudge picks up customers who saw the first one but never acted.
Subject: Quick reminder about {product}
Hi {name},
Following up on the payment that didn't go through. We've retried a couple of times but the charge is still failing.
You can update your card here:
https://billing.stripe.com/p/login/...
Your access to {product} stays active for another few days while we keep trying. After that the subscription will pause automatically. I'd rather not let that happen if it can be avoided.
Best,
{founder}Link to include
Card-update / billing portal link
Notes
- -Surface the consequence (subscription will pause) without making it feel like a threat.
- -Reference the previous retry attempts so the customer knows it isn't a fluke.
Email 3
Day 7 (final notice before auto-cancel)Most recovery happens in the first three emails. The third is the last chance before the subscription is auto-cancelled.
Subject: {product} subscription is about to pause
Hi {name},
Last note from me. Your {product} subscription will pause tomorrow if the payment doesn't go through.
Updating your card takes 30 seconds:
https://billing.stripe.com/p/login/...
If you've moved on from {product}, no worries. Reply and let me know and I'll close it cleanly. But if you still want access, this is the moment.
Best,
{founder}Link to include
Card-update / billing portal link
Notes
- -Offer a clean exit (reply to close) so customers who genuinely left don't feel hassled.
- -Last chance, but not melodramatic.
Do
- +Send from the founder's actual email, not billing@.
- +Use plain text. No HTML invoice block.
- +Match the message to the decline_code when you have it.
- +Stop sending the moment the payment recovers.
Don't
- -Don't apologize for the failed charge. It's not your fault.
- -Don't offer a discount in the recovery flow.
- -Don't include unsubscribe footers. This is a billing email, not a newsletter.
- -Don't blindly retry expired_card, lost_card, or fraudulent declines.
Copy this manually, or let ChurnNote run failed payment recovery automatically.
Connect Stripe or Lemon Squeezy and ChurnNote runs decline-aware dunning from your founder address, with the right template for each decline reason, sent at the right time.
Try ChurnNoteFrequently Asked Questions
How is a playbook different from the dunning swipe file?
The swipe file gives you fixed templates organized by scenario. The playbook builder generates a specific 3-email sequence customized to your processor, the failed amount, the decline reason, and the tone you want. Same underlying templates, but assembled into a tailored sequence with timing notes.
What's the right cadence for failed payment emails?
Day 1 (within an hour), day 3, day 7. That matches Stripe's smart retries and Lemon Squeezy's dunning schedule. Beyond a week, recovery rates drop sharply and continued emails feel like harassment.
Should the tone change based on the decline reason?
Slightly. Expired-card and lost-card scenarios warrant a clean, direct tone (the customer wants the path forward). Insufficient_funds benefits from a gentle, non-judgmental tone (the customer might be embarrassed). Fraud holds need neutrality. The playbook nudges this for you.
Can I run this without writing any code?
Yes. Copy each email from the playbook and paste into your email tool (Loops, Resend, Customer.io, your inbox). Or connect Stripe / Lemon Squeezy to ChurnNote and the entire flow runs from your founder address with zero code.
How much revenue does proper dunning actually recover?
On the low end: Stripe smart retries alone recover 15-25% of failed charges. With a generic dunning email layered on, 30-50%. With decline-code-specific dunning from a real founder address, 60-75%. The math compounds at scale: for a $20K MRR SaaS with a 9% failed payment rate, the difference between 25% recovery and 65% recovery is $7,200/year.
How ChurnNote helps
Decline-aware dunning is where most of the recoverable failed-payment revenue actually lives. Generic emails leave it on the table.
ChurnNote connects to Stripe or Lemon Squeezy and automatically captures cancellation reasons, recovers failed payments, and queues win-back emails. So you stop losing revenue silently.
Start recovering churnNext step
Don't know the decline code yet?
The Decline Code Explainer covers what each Stripe decline_code means and how to recover it.