Stripe Billing

Stripe Smart Retries: How They Work & What They Miss (2026)

Stripe Smart Retries are enabled by default and automatically retry failed charges using machine learning. They're genuinely useful — but they only recover 10–15% of failed payments and never communicate with your customers. Here's what you need to understand.

By He Ze · RecoverKit · March 2026 · 7 min read

Fill the gaps Smart Retries leave behind

RecoverKit adds automated customer emails to work alongside Stripe's retries — recovering the 25–45% of failures that retries alone can't reach.

Connect Stripe Free →

What are Stripe Smart Retries?

Stripe Smart Retries is Stripe's built-in system for automatically retrying failed subscription charges. When a payment fails, Stripe doesn't give up immediately — it uses machine learning to determine the optimal times to retry the charge over the next 4–8 days.

Smart Retries are enabled by default for all Stripe accounts using subscription billing. You don't need to configure anything to get them — they run automatically in the background whenever a payment fails on a subscription invoice.

How Stripe Smart Retries work

When a subscription invoice fails to charge, here's what happens:

  1. Stripe detects the failure and fires the invoice.payment_failed webhook event.
  2. The invoice status changes to open (was draft before charge attempt).
  3. Stripe queues the invoice for retry based on its ML model, which considers: time of day, day of week, card issuer behaviour patterns, historical success rates for similar failures.
  4. Stripe retries the charge at the optimised times — typically 3–4 attempts over 4–8 days.
  5. If any retry succeeds, the invoice moves to paid and Stripe fires invoice.payment_succeeded.
  6. If all retries fail, Stripe moves the subscription to past_due and eventually cancelled based on your Smart Retries settings.

Where to configure Smart Retries

Stripe Dashboard → Settings → Billing → Automatic collection. Here you can set how many retry attempts, the retry schedule, and what happens to subscriptions after all retries fail (cancel immediately vs. leave as past_due).

What types of failures Smart Retries can recover

Smart Retries work best on failures where the underlying issue is temporary and self-resolving:

What Smart Retries cannot recover

Here's the fundamental gap: Smart Retries work on the technical side — retrying the charge at better times. They cannot recover failures that require customer action:

Expired and cancelled cards account for roughly 40–50% of all Stripe subscription failures. Smart Retries cannot recover any of them.

Smart Retries vs. email dunning: what each does

Stripe Smart Retries

  • Runs automatically, no setup
  • Recovers transient/temporary failures
  • Optimised retry timing (ML)
  • Does not contact customers
  • Cannot recover expired/cancelled cards
  • Recovers only 10–15% of all failures
  • Customer loses access without warning

Email Dunning (RecoverKit)

  • Notifies customers immediately
  • Recovers expired/cancelled cards
  • D+1/D+3/D+7 sequence
  • Branded emails from your domain
  • Recovers 25–45% of additional failures
  • Customers choose to stay
  • Requires customer to take action

Smart Retries and email dunning are complementary, not alternatives. You should run both simultaneously. Smart Retries handle the technical side; email dunning handles the customer communication side.

The combined recovery rate

Here's what the math looks like for a typical SaaS with 200 subscribers and $50/month average subscription:

At higher MRR, the numbers compound significantly. At $20k MRR: the same math yields $24,000–30,000/year in recoverable revenue.

How to check if Smart Retries are enabled on your account

  1. Go to Stripe Dashboard → Settings → Billing
  2. Click Automatic collection
  3. You'll see "Smart Retries" — confirm it's toggled on
  4. Check the "Retry schedule" — you can customise how many retries over what period
  5. Check "When all retries fail" — set this to "Cancel the subscription" (not "Leave as past_due") for cleaner state management

Don't disable Smart Retries

Some founders consider disabling Smart Retries to handle all retry logic themselves. This is almost never worth it — Stripe's ML retry optimisation is genuinely good and runs for free. Keep Smart Retries on and layer email dunning on top of it.

The right setup: Smart Retries + automated email dunning

The optimal setup listens to the same invoice.payment_failed webhook that Smart Retries is triggered by, then:

  1. Immediately sends a D+1 email to the customer (within 2 hours)
  2. Sends a D+3 reminder if the invoice is still unpaid
  3. Sends a D+7 final notice with a specific cancellation date
  4. Stops the email sequence when invoice.payment_succeeded fires (whether from Smart Retry or customer card update)

RecoverKit does exactly this — it connects to your Stripe account, listens for payment failure events, and runs the complete D+1/D+3/D+7 email sequence automatically while Smart Retries works in parallel on the technical side.

For more on how to write the actual emails, see our Stripe dunning email templates guide. For the broader recovery strategy, see how to recover failed Stripe payments.

Add email dunning to your Stripe Smart Retries

RecoverKit works alongside Stripe's retries to cover the failures retries can't reach — expired cards, cancelled cards, and customers who need to take action. Setup takes 3 minutes.

Connect Stripe Free →

No credit card required · Disconnect anytime · Works alongside Smart Retries