Stripe Smart Retries vs a dunning tool
Last reviewed 2026-10-07
Before you pay anyone to recover failed payments, it is worth knowing exactly what Stripe already does for you. The answer is: more than most people assume, and it is switched on from a dashboard without writing any code. This page lays out what Smart Retries covers, where it stops, and when a separate tool is actually worth its monthly fee.
What Smart Retries actually does
Smart Retries is Stripe Billing's automatic retry engine. When a subscription or invoice payment fails, it retries the charge on a schedule chosen by a model rather than by a fixed rule. Stripe's documentation says the model uses time-dependent signals such as how many devices have presented that payment method in the last few hours, and the hour of day that works best for debit cards in a given country.
You control the envelope, not the timing. You pick a number of attempts and a window — one week, two weeks, three weeks, one month or two months. Stripe's recommended default is eight attempts over two weeks. You can turn Smart Retries off and define up to three retries of your own instead, each expressed as a number of days after the previous attempt.
Smart Retries is part of Stripe Billing, not an add-on. Stripe's Billing pricing page lists it as included. Billing itself is not free: the pay-as-you-go rate shown when we checked was 0.7% of volume processed through Billing, with tiered monthly plans available above that. If you already run subscriptions on Stripe, you are already paying this, and turning Smart Retries on costs nothing more.
The nine decline codes Stripe will never retry
This is the part most people miss. Stripe documents a list of decline codes it refuses to retry automatically, because retrying them cannot work. The scheduled attempts keep counting up, and the invoice's attempt count keeps incrementing, but no charge is actually made until a new payment method appears.
- incorrect_number
- lost_card
- pickup_card
- stolen_card
- revocation_of_authorization
- revocation_of_all_authorizations
- authentication_required
- highest_risk_level
- transaction_not_allowed
Stripe also skips retries entirely when there is no payment method on file, when the card was issued in India, or when a Connect account has been disconnected. If a meaningful share of your failures carries one of these codes, no retry schedule on earth will help — the only path is getting a new card from the customer.
What else Stripe gives you in the same place
Retries are one of five tools Stripe groups under revenue recovery. All of them are configured from the dashboard, and Stripe states that none require code.
- Recovery analytics: payment failure rates, recovery rates, and the customers whose payments recently failed.
- Smart Retries: the retry engine described above.
- Customer emails: automatic messages when a payment fails, a card is about to expire, or a payment method needs updating.
- No-code automations: custom recovery logic, such as a different dunning flow for annual subscribers.
- Automatic card updates: Stripe refreshes stored card details when the issuer gives the customer a new number.
If you have not switched on the customer emails, do that before you evaluate a single paid tool. A failed payment that nobody tells the customer about is the easiest recovery you will ever skip.
Where Smart Retries stops
Smart Retries is a retry engine, not a recovery programme. It decides when to charge the same card again. It does not persuade a customer to enter a new one, and for the nine codes above it does not even try.
The emails Stripe sends are Stripe's emails. They work, and for a small account they may be all you need, but they are not your onboarding flow and they are not your voice. A dedicated tool's main claim is usually here: branded sequences, in-app prompts, a recovery page that matches your product, and attribution showing which message brought the money back.
One thing we want to be straight about, because it would be easy to imply otherwise: Stripe does show you failure and recovery rates. Its recovery analytics page describes exactly that, plus a list of customers with recent failures. What that page does not describe is a breakdown of your losses by decline family, which is the thing that tells you whether your problem is expired cards or hard declines — two problems with completely different answers.
When a dunning tool is worth paying for
| Stripe Billing, built in | A dedicated dunning tool | A Cardnudge audit | |
|---|---|---|---|
| Retries failed payments | Yes, Smart Retries | Yes | No |
| Emails the customer | Yes, Stripe's templates | Yes, usually branded | No |
| Refreshes expired card numbers | Yes, automatic card updates | Varies by tool | No |
| Failure and recovery rates | Yes, recovery analytics | Yes | Yes, as a one-off total |
| Breakdown by decline family | Not described in Stripe's docs | Varies by tool | Yes |
| Cost | Included in Billing | A monthly fee on top | Free |
| Needs an account | You already have one | Yes | No |
A separate tool starts to make sense when the money it recovers clearly exceeds its fee, and when you want the recovery flow to look like your product rather than like Stripe. At a few thousand in MRR, a tool at 49 dollars a month has to recover more than that every month just to break even, and Stripe's built-in retries will already have taken the easy wins. At larger volumes the maths flips quickly, and the branded flow stops being a vanity concern.
The honest order of operations is: turn on Smart Retries and the customer emails, measure what still leaks, and only then decide whether a paid tool is worth it. Most people skip the middle step, which is the one that tells you whether there is a problem to solve at all.
Where Cardnudge fits
Cardnudge is the middle step, and nothing else. It is a free read-only audit: you create a restricted Stripe key with three read permissions, paste it, and get one number for what failed payments cost you over the last twelve months, split by decline family, with what is still being retried kept separate from what is gone.
It does not retry anything, does not email your customers, and does not compete with Smart Retries. If the number comes back small, you have learned that cheaply and you should close the tab. If it comes back large and most of it is expired cards, you now know which kind of tool to shop for.
Questions people ask
- Is Stripe Smart Retries free?
- It is included in Stripe Billing at no extra charge. Billing itself is priced as a percentage of the volume you process through it — 0.7% on the pay-as-you-go rate shown when we checked on 7 October 2026, with monthly tiers available. If you already bill subscriptions through Stripe, enabling Smart Retries adds nothing to your bill.
- How many times does Stripe retry a failed payment?
- You choose. Smart Retries lets you set a number of attempts across a window of one week, two weeks, three weeks, one month or two months. Stripe's recommended default is eight attempts over two weeks. A custom schedule, with Smart Retries off, allows up to three retries.
- Why does Stripe not retry some failed payments?
- Nine decline codes are non-retryable, including lost_card, stolen_card, incorrect_number and authentication_required. Stripe also skips retries when there is no payment method on file, when the card was issued in India, or when a Connect account is disconnected. In each case retrying the same card cannot succeed, so the only route is a new payment method.
- Do I need a dunning tool if I use Stripe?
- Not necessarily. Stripe's built-in retries, customer emails and automatic card updates already recover a share of failed payments. A paid tool earns its fee when the extra recovery clearly exceeds the subscription cost and when you want a branded recovery flow. Measure first.
Sources
- Stripe Docs — Automate failed payment retries (Smart Retries) — checked 7 October 2026
- Stripe Docs — Revenue recovery overview — checked 7 October 2026
- Stripe Billing pricing — checked 7 October 2026