Stripe dunning playbook
Recover failed Stripe payments before they become churn.
Most SaaS founders treat failed payments as inevitable churn. Roughly 60-70% of failed Stripe charges are recoverable with the right dunning sequence. Smart Retries plus three plain-text emails carrying a fresh hosted invoice link.
Quick answer
To recover failed Stripe payments: (1) subscribe to the invoice.payment_failed webhook, (2) let Stripe Smart Retries run, (3) send a dunning email at T+0 with a fresh hosted invoice link, (4) follow up at T+48h and T+120h, (5) cancel cleanly if recovery fails. Realistic combined recovery rate: 60-70%.
The 5-step Stripe dunning playbook
- 1
Detect the failed payment via webhook
Subscribe to Stripe's invoice.payment_failed event. The moment a charge fails, your dunning clock starts. Don't wait for Stripe's default emails. They're generic and arrive late.
- 2
Let Stripe Smart Retries run, but don't rely on them alone
Stripe Smart Retries handle the network-level retry attempts. They recover roughly 40% of failed charges on their own. Your job is to recover the rest with email follow-up that gives the customer a clear next action.
- 3
Send the first dunning email at T+0
Plain-text email from your real address. Explain what happened in one sentence, include a fresh hosted invoice link, and offer help. Skip the marketing copy. This is a transaction problem, not a sales moment.
- 4
Send follow-up emails at T+48h and T+120h
Each follow-up needs a fresh hosted invoice link (Stripe rotates them) and a slightly different tone. First reminder, then urgency, then last call. Don't send more than three. The fourth email reads as harassment and damages the relationship.
- 5
Cancel cleanly if recovery fails
After the dunning window closes, cancel the subscription, send a 'we couldn't process payment' note, and add the customer to a re-activation list. Some come back 2-3 months later when their card situation changes. Don't ghost them.
Why Stripe payments fail
Failure reason drives recovery strategy. Treating every failure the same is why default dunning flows underperform.
| Failure reason | % of failures | Recoverable? |
|---|---|---|
| Insufficient funds | ~25% | High. Smart Retries usually win |
| Expired card | ~20% | High. Needs an email + update link |
| Card replaced (lost / stolen) | ~15% | Medium. Depends on engagement |
| Issuer block / fraud rule | ~15% | Medium. Smart Retries help |
| 3DS challenge required | ~10% | Medium. Needs customer action |
| Card declined (generic) | ~10% | Low. Usually wrong card on file |
| Account closed | ~5% | Near zero |
Distribution varies by ICP and geography. Numbers are typical indie-SaaS ranges, not Stripe-official figures.
Stripe Smart Retries vs email recovery
Stripe Smart Retries are the silent first line of defense. They re-attempt the charge at ML-tuned intervals across the next ~3 weeks, recovering charges where the issue resolves itself (insufficient funds, temporary fraud blocks, network errors). Roughly 40% of failed charges recover this way with no customer action required.
Email recovery handles the cases Smart Retries can't: expired cards, replaced cards, accounts where the customer needs to log in and update their payment method. The dunning email gives them a fresh hosted invoice link they can click, pay, and be done in under a minute. Without the email, those customers churn involuntarily. Not because they wanted to leave, but because nobody told them their card stopped working.
What a working Stripe dunning email looks like
From: alex@acmeapp.com
Subject: Quick heads up. Your card didn't go through
Plain text. From a real address. One clear action. No marketing copy.
FAQ
What is Stripe failed payment recovery?▼
What's the difference between Stripe Smart Retries and dunning emails?▼
Which Stripe webhook signals a failed payment?▼
How many dunning emails should I send?▼
What's a realistic recovery rate for failed Stripe payments?▼
Should dunning emails be plain-text or HTML?▼
What about customers who voluntarily cancel after a failed payment?▼
How does ChurnNote handle Stripe failed payment recovery?▼
Stop losing revenue to expired cards.
ChurnNote runs the full Stripe dunning loop. Webhook, three-email recovery sequence with fresh hosted invoice links, clean cancellation if recovery fails. $12/mo flat. No percentage of recovered revenue.
Get started