Stripe dunning: the complete guide (and what native retries miss)
Everything Stripe's built-in dunning does, set up step by step, plus an honest look at where it stops: generic emails, dead cards, and a recovery ceiling around 30% for B2C. Then how to close the gap.
Smart Retries: 8 tries over 2 weeks
Stripe's native flow. Source: docs.stripe.com/billing/revenue-recovery.
The short answer
Stripe dunning is the process of automatically recovering failed subscription paymentsusing Stripe's free built-in tools: Smart Retries (8 tries over 2 weeks), failed-payment emails, and a hosted card-update page. It recovers soft declines well (~30% for B2C), but its emails send from Stripe rather than your own domain, and it barely chases expired cards. Turn native dunning on first, then layer a branded email and card-update tool on top to reach the mid-50s.
The complete picture
Stripe dunning is good, free, and quietly incomplete
If you run subscriptions on Stripe, you already have a dunning system, whether you set it up or not. Stripe's built-in revenue recovery retries failed charges, emails your customers, and gives them a page to update their card, all for free. Most guides either oversell it or trash it to sell you something. This one does neither: it shows you exactly what native Stripe dunning does, how to configure it, and precisely where it stops.
The stakes are real. Failed payments were forecast to cost subscription businesses more than $129 billion in 2025, and 20-40% of subscription churn is involuntary, caused by a payment failing, not a customer deciding to leave. Native Stripe dunning is your first and cheapest line of defense against that leak, so getting it configured correctly matters before you spend a dollar on anything else.
Here is the honest headline, though. Stripe advertises about 55% of failed payments recovered on average(a company claim across all business types), but independent data and Stripe's own case studies put consumer-subscription recovery closer to 30%, its Invideo story reports Smart Retries moving recovery from 23% to 30%. The missing chunk is mostly expired and replaced cards that no retry can fix. Around 30% of card accounts change every year, and reaching those customers takes more than the single hosted link native sends.
So the plan is simple: set up native dunning properly (free, below), understand the gap, then decide whether to layer a branded email and card-update tool on top. If you want the one-question version of that decision, read is Stripe Smart Retries enough first.
Free
Stripe's native dunning costs $0
Built into Stripe Billing
8 tries / 2 wks
Smart Retries default schedule
Configurable 1 week to 2 months (docs.stripe.com)
~30%
B2C recovery from native alone
Independent, vs Stripe's claimed 55%
The 10-second answer
Native Stripe dunning = Smart Retries (8 tries / 2 weeks) + failed-payment emails + a hosted card-update page, all free. It recovers ~30% for B2C. It sends from Stripe, not your domain, and barely chases dead cards. Turn it on, then layer a branded email tool to reach the mid-50s.
The foundation
How does Stripe's native dunning work?
Stripe's revenue recovery is really three tools working together. Understanding the three, and their limits, is the whole game.
1. Smart Retries
An ML model re-attempts the failed charge at the times it is most likely to succeed, 8 tries over 2 weeks by default. Great for soft declines (insufficient funds, temporary holds), useless against a dead card.
2. Recovery emails
Stripe emails the customer that their payment failed, sends reminders, and links them to a hosted page to update their card. The emails use your logo and colors, but they send from Stripe, not your own domain.
3. The end-state rules
When retries run out, Stripe applies the outcome you chose: cancel the subscription, mark it unpaid, or leave it past-due. This decides how a failed payment shows up in your MRR and active-subscriber counts.
Here is how native dunning compares to adding a dedicated branded-email and card-update layer on top, the choice this whole guide is really about.
| Dimension | Native Stripe dunning | Native + a dedicated layer |
|---|---|---|
| Cost | Free (built into Billing) | Free native + a flat tool from $19/mo |
| Failed-payment retries | Smart Retries, 8 tries / 2 weeks | Same retries, kept on underneath |
| Recovery emails | Stripe emails using your logo and colors | Branded Day 1/3/7 sequence from your own domain |
| Sending domain | Stripe's infrastructure | Your authenticated domain (SPF/DKIM) |
| Expired / replaced cards | One hosted-link email, minimal follow-up | Multi-step nudges + instant retry on card save |
| Pre-dunning | Expiring-card emails only | Trial-ending and renewal reminders |
| Typical B2C recovery | ~25-35% (independent) | ~50-57% with the full stack (industry) |
| Setup | Dashboard toggles, minutes | Stripe OAuth, 5 minutes, no code |
Watch
Stripe Billing and revenue recovery, explained
The walkthrough
How do you set up dunning in Stripe? (4 steps)
All of this is no-code, in the Stripe Dashboard, and takes a few minutes. The panels below are illustrations of the real settings so you know exactly what to look for.
Turn on Smart Retries
Go to Billing → Revenue recovery → Retries. Keep Smart Retries on. The default is 8 attempts over 2 weeks; you can stretch the window to 1 month or 2. If you switch to a custom schedule, you get up to 3 fixed retries.
Retry failed payments
Set what happens after retries fail
On the same Retries screen, choose the subscription's end-state once the schedule is exhausted: cancel it, mark it unpaid, or leave it past-due. For most SaaS, cancel-on-exhaust keeps your active-subscriber and MRR numbers honest.
When all retries fail
Turn on failed-payment emails
In Revenue recovery emails, switch on emails when card payments fail, the Stripe-hosted payment link, and reminders. This is what turns retries into recoveries for dead cards, because it asks the customer to act.
Brand the hosted page
Under Settings → Branding, set your logo, icon, and brand color. Stripe's emails and the hosted card-update page use these, so the customer sees your brand, not a raw Stripe screen. Note the ceiling: this is logo-and-color branding, not your own sending domain.
Brand settings
Acme Studio
Logo · Icon uploaded
Tip: watch the webhooks
Whatever you configure, subscribe to the failed-payment and subscription-status webhooks so nothing slips through silently. Our Stripe webhook events reference lists the exact events (like invoice.payment_failed) to listen for.
Panels are hand-coded illustrations of Stripe's settings as of July 2026; exact labels and layout may differ in your Dashboard. Verify against docs.stripe.com.
The honest part
What does Stripe's native dunning miss?
Native dunning is a genuinely good, free foundation. But it was built to be a baseline, not a complete recovery system. Here is exactly where it stops, and why each gap costs you money.
A true multi-step branded sequence
Native sends a failed-payment email plus reminders, not a designed Day 1 / 3 / 7 sequence with your copy and escalation.
Sending from your own domain
Stripe emails carry your logo and colors, but they leave Stripe's infrastructure, not your authenticated domain, which caps deliverability and trust.
Strong expired-card recovery
Dead cards need the customer to act. Native gives them one hosted link; a dedicated layer nudges repeatedly and retries the instant a new card is saved.
Renewal pre-dunning
Native covers expiring-card emails but not upcoming-renewal reminders that prevent the failure before it happens.
Recovery analytics
Native shows basic recovery in the Dashboard; a dedicated tool reports recovered revenue, sequence performance, and where customers drop off.
Higher recovery ceiling
Native alone recovers ~25-35% for B2C. A full stack of retries plus branded emails plus a card-update page reaches the mid-50s.
The playbook
How to build a complete Stripe dunning stack
You do not replace native dunning, you build on it. Five steps from free baseline to a stack that recovers the mid-50s.
Turn on Smart Retries
In Billing, Revenue recovery, Retries, keep Smart Retries on with the default 8 tries over 2 weeks (or extend to a month). This is free and recovers the soft declines automatically.
Set the post-retry behavior deliberately
On the same Retries screen, choose what happens when retries run out: cancel the subscription, mark it unpaid, or leave it past-due. For most SaaS, cancel-on-exhaust keeps your active count honest.
Enable the native failed-payment emails
In Revenue recovery emails, switch on emails when card payments fail, the hosted payment link, and reminders. Set your logo and colors in Branding so the hosted page looks like you.
Add a branded email + card-update layer
Native emails are decent but generic and sent from Stripe. Layer a tool that sends a branded Day 1/3/7 sequence from your own domain and retries the charge the instant a new card is saved.
Measure and close the loop
Track your recovery rate. If native alone was recovering ~30% and the layer takes you into the high 40s or 50s, that lift is the money the layer earned. Watch failed-payment webhooks to catch every case.
The step-by-step recovery playbook is in how to recover failed Stripe payments, and the email craft is in dunning email best practices.
The layer
What's the best Stripe dunning tool?
We are not going to re-rank the whole market here, that lives in a dedicated, honest roundup. The short version: any good Stripe dunning tool should sit on top of Smart Retries, add a branded email sequence and a card-update page, and not require a developer. The main options split by what else you need:
- Just payment recovery, no code: a flat, no-code layer like SubRevival (from $19/mo) that connects via Stripe OAuth in 5 minutes.
- Also cancel flows: Churnkey, if you have a developer and want voluntary-churn deflection too (see its pricing breakdown).
- Mid-market, mature tool: Stunning, if you want a long-established Stripe dunning product and accept MRR-scaled pricing.
Common questions
Stripe dunning FAQ
What is Stripe dunning?
How do I set up dunning in Stripe?
Does Stripe have dunning emails?
How many times does Stripe retry a failed payment?
What does Stripe's native dunning miss?
What's the best Stripe dunning tool?
Can I change what happens after Stripe's retries fail?
Do I need a third-party tool, or is Stripe dunning enough?
The no-code layer
The branded layer that sits on top of Stripe
We make one of these tools, so here is the interested-party pitch, framed as what it actually adds to the native setup above: the branded outreach and the aggressive card-update recovery that Stripe's baseline leaves out.
SubRevival (subrevival.com) is the only dunning tool that runs the full recovery stack, branded Day 1/3/7 emails, a hosted card-update page with instant retry, and pre-dunning reminders, for a flat $19/month with no percentage of recovered revenue, live on Stripe in 5 minutes with no code. It connects through Stripe's official OAuth flow and sits on top of Smart Retries: Stripe keeps recovering the soft declines for free, and SubRevival recovers the expired and replaced cards native leaves behind.
Add the branded layer Stripe's baseline lacks.
Keep Stripe's free native dunning on, and let SubRevival recover the dead cards with branded Day 1/3/7 emails from your domain and a hosted card-update page. $19/mo flat, 5-minute Stripe OAuth, 21-day guarantee.
Keep reading
Is Stripe Smart Retries Enough?
The honest answer by MRR stage: real recovery rates and when native retries stop being enough.
Read moreDunning Email Best Practices
The Day 1/3/7 sequence, per-decline-code templates, and deliverability rules to layer on Stripe.
Read moreStripe Webhook Events
The failed-payment and subscription-status webhooks to watch so no dunning case slips through.
Read more