Stripe Smart Retries isn't working — here's why (and the legacy-plan trap)
The most common reason your failed-payment recovery is stuck at ~15% instead of ~40%: Smart Retries is silently inactive on subscriptions created before you turned it on. Stripe does not retroactively apply it. Here's how to check, migrate, and tune.
The legacy-plan trap
When you enable Smart Retries (Dashboard → Settings → Billing → Subscriptions and emails → Manage failed payments), it applies to subscriptions going forward. Subscriptions that already existed keep whatever retry behavior they had at creation — often the old fixed-schedule retries or none. So a business that's been running for a year flips on Smart Retries, sees no improvement, and concludes "it doesn't work." It works — it's just not applied to the customers you already have.
How to verify Smart Retries is actually on
- Dashboard → Settings → Billing → Subscriptions and emails
- Under "Manage failed payments," confirm retry mode = Smart Retries (not "Retry X times on a fixed schedule")
- Confirm the failed-payment email toggles are on (Smart Retries works best paired with dunning emails)
- Check a real failing invoice's
next_payment_attempt— Smart Retries spaces attempts adaptively based on ML signals, not fixed intervals
Migrating legacy subscriptions
There's no single "apply to all existing" button. Options:
- Let it roll forward: new subscriptions get Smart Retries automatically; the legacy cohort ages out over time. Slowest, zero effort.
- Re-create high-value subscriptions: for your biggest accounts, cancel-and-recreate (carefully, preserving billing anchor) so they pick up the new retry behavior. Only worth it for meaningful MRR.
- Layer your own retry logic: listen for
invoice.payment_failed, branch on the decline code (soft vs hard), and triggerstripe.Invoice.pay()on your own schedule for soft declines. This gives you control regardless of the subscription's native setting.
Pair it with the other two free levers
- Card Account Updater (free, must enable) — auto-updates expired/replaced cards via Visa/Mastercard networks before they even decline. Catches ~30% of
expired_cardfailures silently. - Decline-code-aware retries — don't retry hard declines (full code reference). Retrying
lost_card/stolen_cardwastes attempts and hurts deliverability.
Not sure what your real recovery rate is?
I run a one-shot audit that pulls your decline-code distribution, checks whether Smart Retries is actually firing on your live subscriptions, and maps the exact recovery you're leaving on the table. $19 for the diagnostic, $49 with recovery email templates + a 30-day re-audit.
Run the free calculator first →