·6 min read

How to Recover Failed Stripe Payments (and Stop Losing MRR)

Every SaaS with Stripe subscriptions silently loses 5–10% of MRR to failed payments. Here's exactly how to recover it with smart retries and dunning sequences.


If you run a SaaS on Stripe, you're losing money every month — and you probably don't know exactly how much.

Failed payments are the silent killer of subscription MRR. Credit cards expire. Banks decline charges. Funds run low. And unless you have a system in place to catch these failures, that revenue is gone.

The industry average: 5–10% of subscription renewals fail in any given month. For a $10K MRR product, that's $500–1,000 of revenue at risk — every single month.

Why Stripe Payments Fail

Most failed payments are involuntary — the customer didn't mean to cancel. The most common causes:

  • Expired cards — the most common reason. Customers forget to update payment details.
  • Insufficient funds — temporary cash flow issues, especially at month-end.
  • Bank declines — banks flag recurring charges as suspicious, especially cross-border.
  • Card replaced — stolen or lost card, new number issued.
  • Soft declines — temporary issues that often resolve themselves in 24–72 hours.

The critical insight: most of these are recoverable. The card gets updated. The funds clear. The bank approves on a second attempt. But only if you retry at the right time.

How Stripe's Default Recovery Works (And Why It's Not Enough)

Stripe does have a built-in Smart Retries feature. It uses machine learning to retry failed charges at times when they're more likely to succeed. By default, Stripe retries up to 4 times over the course of a few weeks before giving up.

This is better than nothing. But it has significant limitations:

  • Stripe's retries happen silently — no email communication to the customer
  • The retry schedule is fixed and not customizable per failure reason
  • After 4 failed retries, the subscription is simply canceled — no final human outreach
  • No visibility into which customers are at risk until they've already churned

The result: you recover some failed payments, but not nearly as many as you could.

The Two-Layer Recovery System That Works

The most effective payment recovery combines two things: smart retries and dunning email sequences.

Layer 1: Smart Retries

Not all retries are equal. Retrying a card declined for insufficient funds on the same day it failed will almost certainly fail again. But retrying 3 days later, when the customer's paycheck may have cleared, has a much higher success rate.

Effective retry logic:

  • Day 1: Immediate retry for soft declines (network errors, temporary bank issues)
  • Day 3: Retry for insufficient funds — most paychecks clear within 3 days
  • Day 7: Retry for expired cards after sending an update request email
  • Day 14: Final retry before escalating to manual outreach

Layer 2: Dunning Email Sequences

Retries alone aren't enough — you need to communicate with your customer. A good dunning sequence does three things:

  1. Notifies the customer that their payment failed (without being alarming)
  2. Provides a direct link to update their payment method
  3. Creates urgency by being clear about what happens if the issue isn't resolved

A basic 3-email sequence:

  • Email 1 (Day 1): "Your payment didn't go through" — friendly, action-focused, direct link to update card
  • Email 2 (Day 4): "Reminder: your account is past due" — slightly more urgent, highlight what they'll lose access to
  • Email 3 (Day 7): "Final notice before your subscription is canceled" — clear deadline, personal tone

Key copywriting principles for dunning emails:

  • Don't be accusatory — the customer likely doesn't know their payment failed
  • Make the CTA obvious — one button, one action: update payment method
  • Use plain text emails — they feel more personal and have higher open rates
  • Send from a real person's name, not "noreply@"

What Recovery Rates Are Realistic?

With a proper retry + dunning system in place, you can expect to recover:

  • ~30–40% of failed payments through smart retries alone
  • ~20–30% additional through dunning email sequences
  • ~60–70% total of payments that would otherwise be lost

For context: Stripe's default Smart Retries alone recover roughly 20–30%. Adding a proper dunning sequence more than doubles your recovery rate.

Setting This Up Automatically

You have a few options for automating this:

Option 1: Build it yourself
Use Stripe Webhooks to listen for invoice.payment_failed events, implement your own retry schedule, and integrate with an email provider like Resend or Postmark to send the dunning sequence. This takes 20–40 hours of engineering time and ongoing maintenance.

Option 2: Use Stripe's built-in tools
Enable Smart Retries and configure the subscription settings in your Stripe dashboard. Limited customization, but free. You won't get custom dunning emails or retry logic tailored to failure reasons.

Option 3: Use a dedicated payment recovery tool
Tools like Holdfast, Churnbuster, or Stunning connect to your Stripe account and handle retries + dunning sequences automatically. Setup takes minutes instead of weeks, and the recovery logic is pre-optimized based on data from thousands of subscriptions.

The Bottom Line

Failed payments are recoverable revenue. The difference between a SaaS that recovers 20% of failed payments and one that recovers 65% is simply having the right system in place.

If you're currently relying on Stripe's default behavior, you're leaving significant MRR on the table every month. The good news: fixing it doesn't require engineering resources — it just requires setting up the right automation.


Holdfast is a payment recovery tool for SaaS and creators. Connect your Stripe account in minutes and start recovering failed payments automatically. Join the early access waitlist →

Recover failed Stripe payments automatically

Holdfast handles smart retries + dunning sequences on autopilot. Join the early access waitlist — free, no credit card.

Get early access →