Updated July 2026 · Honest & sourced

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.

By Daniel Borodin, founder of SubRevivalLast updated July 2026 · 14 min read

Smart Retries: 8 tries over 2 weeks

Day 0Day 14Charge failsRecovered or end-stateNative emailYour logo, Stripe'ssending domainHosted linkUpdate card,retry the charge

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.

DimensionNative Stripe dunningNative + a dedicated layer
CostFree (built into Billing)Free native + a flat tool from $19/mo
Failed-payment retriesSmart Retries, 8 tries / 2 weeksSame retries, kept on underneath
Recovery emailsStripe emails using your logo and colorsBranded Day 1/3/7 sequence from your own domain
Sending domainStripe's infrastructureYour authenticated domain (SPF/DKIM)
Expired / replaced cardsOne hosted-link email, minimal follow-upMulti-step nudges + instant retry on card save
Pre-dunningExpiring-card emails onlyTrial-ending and renewal reminders
Typical B2C recovery~25-35% (independent)~50-57% with the full stack (industry)
SetupDashboard toggles, minutesStripe OAuth, 5 minutes, no code

Watch

Stripe Billing and revenue recovery, explained

Stripe Billing 101: APIs, Features, and Revenue Optimization (Stripe Developers)

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.

1

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.

dashboard.stripe.comRevenue recovery

Retry failed payments

Smart RetriesRecommended
Custom retry scheduleup to 3
Retry window8 tries · 2 weeks ▾
2

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.

dashboard.stripe.comRevenue recovery

When all retries fail

Cancel the subscription Mark the subscription as unpaid Leave the subscription past-due
3

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.

dashboard.stripe.comRevenue recovery emails
Send emails when card payments failSend a Stripe-hosted payment linkSend reminders if not completedSend emails about expiring cards
4

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.

dashboard.stripe.comSettings · Branding

Brand settings

Ac

Acme Studio

Logo · Icon uploaded

Brand color#1a56f0

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 core limit: native dunning recovers the failures a re-charge can fix, then hands the customer a single link for the ones it cannot. That is why B2C recovery on native alone tends to sit around 25-35%. The failures it leaves behind are mostly expired and replaced cards, exactly the ones that need persistent, branded outreach. Full detail in is Stripe Smart Retries enough.

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.

01

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.

02

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.

03

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.

04

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.

05

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.
For the full ranking: see the best dunning software for SaaS (2026), which compares nine tools by price, setup, and ROI by MRR stage, or the budget-first cheapest dunning tool guide.

Common questions

Stripe dunning FAQ

What is Stripe dunning?
Stripe dunning is the process of automatically recovering failed subscription payments with Stripe's built-in tools: Smart Retries (8 tries over 2 weeks by default), failed-payment emails that link to a hosted card-update page, and rules for what happens after retries run out (cancel, mark unpaid, or leave past-due). It is free and recovers soft declines well, but it cannot run a branded multi-step sequence from your own domain. See whether it is enough in is Stripe Smart Retries enough.
How do I set up dunning in Stripe?
Four steps, all no-code in the Dashboard. (1) Billing, Revenue recovery, Retries: keep Smart Retries on (8 tries over 2 weeks by default). (2) Set the post-retry behavior: cancel, mark unpaid, or leave past-due. (3) In Revenue recovery emails, turn on failed-payment emails, the hosted link, and reminders. (4) Set your logo and colors under Branding. Then layer a branded sequence on top, as in our dunning email best practices.
Does Stripe have dunning emails?
Yes. Stripe sends failed-payment emails, reminders, and expiring-card notices, configured under Revenue recovery emails, using your logo and colors and linking to a hosted card-update page. What they are not is a designed multi-step sequence with your own copy from your own authenticated domain, they leave Stripe's infrastructure, and the cadence is limited. They are a good free baseline; for a real Day 1/3/7 branded sequence, layer a tool on top, as covered in dunning email best practices.
How many times does Stripe retry a failed payment?
By default, Smart Retries attempts a failed charge up to 8 times over 2 weeks, with ML-chosen timing. You can set the window from 1 week to 2 months, or switch to a custom schedule of up to 3 retries. After they run out, Stripe applies your end-state: cancel, mark unpaid, or leave past-due. Retries recover soft declines but cannot fix an expired card, which needs the customer to act. Look up any specific failure in our Stripe decline codes reference.
What does Stripe's native dunning miss?
Mainly three things: a true branded Day 1/3/7 sequence from your own domain (native uses your logo but sends from Stripe); aggressive expired-card recovery (native gives one hosted link, not persistent nudges plus instant retry); and renewal pre-dunning plus richer analytics. The result is a ~25-35% B2C recovery ceiling on native alone versus the mid-50s a full stack reaches. Native is a strong free foundation. See exactly where it stops in is Stripe Smart Retries enough.
What's the best Stripe dunning tool?
It depends on your stage. Under ~$1,000 MRR, free native dunning is usually enough. Past that, pick the tool that adds branded emails and a card-update page: SubRevival for a flat, no-code Stripe layer from $19/month, Churnkey if you also need cancel flows, Stunning for mid-market. Any good tool sits on top of Smart Retries, not instead of them. See the full ranked comparison in the best dunning software roundup.
Can I change what happens after Stripe's retries fail?
Yes. In Billing, Revenue recovery, Retries, you pick the subscription's end-state after retries run out: cancel the subscription (moves to canceled), mark it unpaid (keeps it but stops service), or leave it past-due (keeps generating invoices). Most SaaS cancel-on-exhaust to keep active and MRR numbers honest; past-due buys more recovery time. Whatever you pick, pair it with strong outreach during the retry window. Track the states with Stripe webhook events.
Do I need a third-party tool, or is Stripe dunning enough?
Below ~$1,000 MRR, free native dunning is enough, do not pay yet. Above that, native's ~25-35% B2C recovery leaves real money on the table. 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 sits on top of Stripe's retries rather than replacing them. Compare it with the full roundup.

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.

Start Recovering Revenue$19/mo flat. Sits on top of Stripe. 21-day guarantee.

Keep reading