Free tool
Payment retry schedule builder
Pick the decline reason and get a retry schedule that suits it, including an honest answer when retrying will not help at all.
What Stripe already does
Before building anything custom, know the baseline. Stripe's Smart Retries use a machine learning model to choose retry times. The recommended default is 8 attempts within 2 weeks, and you can set the window to 1 week, 2 weeks, 3 weeks, 1 month or 2 months. You can also switch Smart Retries off entirely and define your own rules.
You are setting a window, not a timetable. With Smart Retries on, Stripe picks the exact moments using signals you do not have, such as how many devices have recently presented that card. A hand-built schedule is not automatically better than the model. It is better when you pair it with something Stripe does not do, which is varying your customer communication by decline reason.
The nine codes where no schedule helps
Stripe documents nine hard decline codes. When one comes back, retries stay scheduled and attempt_count keeps climbing, but nothing actually executes until a new payment method is attached: incorrect_number, lost_card, pickup_card, stolen_card, revocation_of_authorization, revocation_of_all_authorizations, authentication_required, highest_risk_level, transaction_not_allowed.
If a meaningful share of your failures are these, tuning retry timing is wasted effort and your attention belongs on getting new cards.
Principles behind the schedules above
- Space attempts, do not stack them. Rapid repeat attempts against a declining card look abusive to card networks and raise dispute risk. Spacing matters more than count.
- Match timing to cause. A funds problem resolves on a payday. A network error resolves in an hour. Treating both the same wastes attempts on one and gives up too early on the other.
- Cap the window. Around two weeks is standard and matches Stripe's default. Past that, attempts convert rarely and annoy reliably.
- Retry and email are different tools. Retrying fixes money-not-there. Emailing fixes card-is-wrong. Neither substitutes for the other.
- Stop on a revocation.
revocation_of_authorizationmeans the customer told their bank to stop this specific recurring charge. Treat it as a cancellation, not a retry candidate.
On numbers this page does not give you. You will find retry-schedule guides quoting precise recovery percentages per decline type. We do not have data to support figures like that, so we are not going to invent them. The schedules here are reasoned from what each decline code actually means and from Stripe's documented behaviour, not from a measured sample.
The one number worth having is your own decline distribution, which is in your Stripe dashboard under Payments filtered to Failed.
Frequently asked questions
What is Stripe's default retry schedule?
The recommended default is 8 attempts within 2 weeks, with the window configurable from 1 week to 2 months. Stripe's model picks the specific times rather than using fixed intervals.
How long should you keep retrying a failed payment?
About two weeks, which matches Stripe's own default. Beyond that, extra attempts rarely convert and raise dispute risk. If nothing recovered inside the window, the card usually needs replacing rather than the timing needing tweaking.
Can I set my own retry schedule in Stripe?
Yes. Disable Smart Retries in the revenue recovery settings and define custom rules. Whether that beats Stripe's model is genuinely open, since the model uses signals you cannot see.
Does retrying more often recover more money?
No, and it can make things worse. Spacing matters more than frequency, and for the nine hard decline codes no number of attempts will execute until a new payment method exists.
See which of these actually applies to you
RecoverFlow scans your last 90 days of Stripe invoices and breaks failures down by decline reason, so you know whether your problem is timing or cards. Free, no card required.
Run the free 90 day scan
Recover