Does Stripe Have Dunning? Yes, But Here's What It Misses
Short answer: yes, Stripe has dunning. It retries failed payments automatically and can send basic dunning emails. Long answer: Stripe's dunning is a starting point, not a solution. It recovers about 30-40% of failed payments and leaves the rest on the table. Here's exactly what Stripe provides, what it doesn't, and how to fill the gap.
Stripe's built-in dunning features
Stripe has two dunning features:
1. Smart Retries
When a payment fails, Stripe automatically retries it. Smart Retries uses machine learning to pick the optimal retry time based on factors like card type, day of week, and time of day. This is enabled by default and actually works reasonably well for transient failures (temporary declines, insufficient funds that resolve).
Stripe retries up to 4-8 times over approximately 3-4 weeks (the exact schedule varies). After that, the invoice is marked as uncollectible and the subscription status depends on your settings — it might cancel, pause, or stay active.
2. Failed payment emails
Stripe can send automated emails when a payment fails. To enable this:
- Go to your Stripe Dashboard
- Settings → Subscriptions and emails
- Under "Manage failed payments," enable email notifications
- You can customize the reply-to address and add your logo
That's it. One email template. Stripe sends it when the first payment fails, and optionally sends reminders. The email comes from Stripe (not your domain), uses Stripe's HTML template, and you have minimal control over the content, timing, or sequence.
What Stripe's dunning misses
Here's where Stripe's dunning falls short for SaaS founders:
- No multi-email sequence — Stripe sends one email (or maybe a couple reminders with the same content). There's no escalation. No "friendly reminder" → "here's what you'll lose" → "final notice" progression. Research shows the second and third emails recover an additional 20-30% beyond the first.
- No custom SMTP — Emails come from Stripe's domain or a generic noreply. Your customer sees an email from Stripe, not from you. This hurts open rates (customers don't recognize the sender) and deliverability (Stripe's shared sending reputation).
- No plain-text option — Stripe sends HTML emails with templates. Plain-text emails have 40-60% higher open rates for transactional/dunning purposes because they feel personal and land in Primary instead of Promotions.
- No pre-dunning — Stripe doesn't proactively alert you when a customer's card is about to expire or when spending patterns suggest a decline is coming. By the time the payment fails, you're already behind.
- No analytics — Stripe shows failed payments in the dashboard, but doesn't aggregate recovery rates, email open rates, or show you which customers are in active dunning sequences.
How to improve Stripe's dunning
You have three options:
Option 1: Build your own
Listen for invoice.payment_failed webhooks, write an email sequence system, handle retry logic, track recovery. This works but takes 40-60 hours to build properly, plus ongoing maintenance. If you're already stretched thin as a solo founder, this is a poor use of your time.
Option 2: Use a dedicated dunning tool
Tools like Stunning ($99/mo), Gravy (custom + revenue %) focus exclusively on dunning. They do it well but only solve one churn type. You'd still need separate tools for cancel flows, churn detection, and win-back.
Option 3: Use an all-in-one retention tool
SaveMRR's Revenue Rescue handles dunning as one of 5 engines. You get the multi-email recovery sequence plus cancel flows, churn detection, win-back campaigns, and a free revenue diagnostic — all for $19/mo. The dunning is less customizable than Stunning's, but for most indie SaaS founders, the default sequence recovers 55% of failed payments without any tweaking.
Quick setup: Stripe dunning settings
Regardless of whether you use a third-party tool, make sure your Stripe dunning settings are configured:
- Smart Retries — Enabled by default. Don't disable it.
- Failed payment emails — Enable in Settings → Subscriptions and emails. Set reply-to to your support email.
- Subscription behavior on final failure — Set to "Cancel subscription" (not "Leave as past due"). This gives you a clean signal to trigger win-back campaigns.
- Customer portal — Enable Stripe's customer portal so dunning emails can link to a card update page.
These are table stakes. After configuring Stripe's built-in options, layer SaveMRR on top for the multi-email sequence, custom SMTP, pre-dunning alerts, and the four other retention engines that Stripe doesn't touch.