← All posts Retries

How to Set Up Stripe Smart Retries: Complete Configuration Guide

Step-by-step guide to configuring Stripe Smart Retries — what settings to use, how to monitor performance, and when to supplement with custom retry logic for better recovery.

Stripe Smart Retries is the single highest-ROI billing feature most SaaS companies don't have properly configured. It's off by default on older accounts, the settings are buried, and the defaults aren't ideal for subscription businesses. Turning it on and tuning it correctly takes about 10 minutes and typically recovers 15–25% of failed payments that would otherwise become churn.

This guide walks through the full setup, explains every setting, and calls out the places where the Stripe defaults are wrong for most SaaS.

What Smart Retries Actually Does

When a subscription payment fails, Stripe needs a plan. Does it retry? When? How many times? What happens if all retries fail? Smart Retries is Stripe's answer.

Instead of a fixed schedule like "retry in 3 days, 5 days, 7 days," Smart Retries uses a machine learning model trained on billions of Stripe transactions to predict the best retry time for each individual failure. A card that fails at 11 PM Sunday might get retried Monday morning; one that fails with insufficient_funds on the 20th might wait until after the next payday.

It's not a silver bullet — it still relies on signals Stripe has access to — but it's strictly better than the fixed-schedule alternative, and it's built in.

Prerequisite: Are You Using Stripe Billing?

Smart Retries only works for subscriptions on Stripe Billing (not for one-off PaymentIntents or invoices you've created manually). If you're using Stripe Checkout in subscription mode, you're covered. If you're creating subscriptions via the API with stripe.subscriptions.create(), you're also covered. If you're only using Stripe for one-off charges, Smart Retries doesn't apply.

The Setup

Step 1: Navigate to the Subscription Settings

In the Stripe Dashboard, go to Settings → Billing → Subscriptions and emails. The direct link is dashboard.stripe.com/settings/billing/automatic.

You're looking for the section titled "Manage failed payments for subscriptions".

Step 2: Enable Smart Retries

Under "Retry schedule," select Smart Retries. If your account was created before 2020, it may still be set to the legacy fixed schedule by default.

You'll see options for the maximum retry window. The available choices are:

  • 1 week — aggressive, ends payment recovery quickly
  • 2 weeks — the default, reasonable for most
  • 3 weeks — recovers more payments but holds open accounts longer
  • 4 weeks — maximum patience, highest recovery

Recommendation: 3 weeks for most SaaS. 2 weeks is fine if your LTV is low (sub-$200 total); 4 weeks for high-ACV B2B where every recovery matters.

Step 3: Set the "Next action" When All Retries Fail

This is the setting most teams get wrong. When the retry window ends and the payment still hasn't succeeded, Stripe offers three options:

  • Cancel the subscription — hard stop. Customer loses access.
  • Mark the subscription as unpaid — keeps the subscription record but stops charging. You decide what happens next.
  • Leave the subscription as is — no action. Subscription keeps running, next invoice still generates.

Recommendation for most SaaS: Mark as unpaid. This preserves the subscription record (so if the customer comes back and updates their card, everything resumes) and gives you control over what to do with their app access. Auto-cancel is too blunt; "leave as is" is how you end up with a customer racking up unpaid invoices.

Step 4: Configure Email Notifications

In the same settings page, under "Customer emails", make sure the following are enabled:

  • Send emails when card payments fail — YES. This is the dunning email Stripe sends automatically.
  • Send emails when a subscription is canceled due to failed payments — YES. Last-chance notification.
  • Send emails for renewals and trial endings — usually YES for B2B, optional for B2C (see the pre-dunning guide).

If you're sending your own dunning emails from your own system, you may want to disable Stripe's built-in ones to avoid duplication. Most teams either use Stripe's emails (easy, generic) or replace them entirely (more work, better conversion) — don't run both.

Step 5: Enable the Customer Portal for Card Updates

Under Settings → Billing → Customer portal, enable the portal and make sure "Update payment method" is turned on.

The failure emails Stripe sends include a link. That link goes to the Customer Portal. If the portal isn't configured, the link goes to a generic error page — and your recovery rate craters.

While you're here, also enable "Invoice history" and "Cancel subscription". Customers who can self-serve tend to stay longer than customers forced to email support.

Settings Most Teams Get Wrong

Retry window too short

The default of 2 weeks cuts off recovery before some legitimate recoveries happen. A customer whose paycheck comes on the 1st, failing on the 14th, might not have funds again until the 1st — which is past the 2-week window. Extending to 3 weeks catches these cases with essentially no downside.

Auto-cancel on failure

"Cancel the subscription" is the fast path to losing customers you could have saved. A customer whose card failed last week might update it this week — but if you've already canceled, they have to re-subscribe (and some won't bother). "Mark as unpaid" preserves the relationship.

No customer portal

Every failure-recovery email links to the portal. If the portal isn't enabled, customers click the link, see an error, and give up. This is the most common single misconfiguration and the easiest to fix.

Custom email templates that strip the update link

If you've customized Stripe's email templates, make absolutely sure the "Update payment method" button is still there and functional. A surprising number of custom templates accidentally remove this in favor of a generic "contact support" footer.

What Smart Retries Doesn't Do

Smart Retries is good, but it has clear limits. It's worth knowing where it falls short so you don't over-rely on it.

  • It doesn't distinguish soft vs. hard declines perfectly. A card reported as stolen still gets retried (Stripe's ML tries to be smart about this, but it's not perfect). Retrying stolen cards is wasted effort.
  • It doesn't send code-specific emails. The dunning email for an expired card looks the same as for insufficient funds. A customer with an expired card needs a "update your card" message; one with insufficient funds needs a more neutral "let's try again" tone.
  • It doesn't handle pre-dunning. Smart Retries kicks in after a failure. It doesn't do anything before one.
  • It doesn't personalize by customer value or tenure. Your highest-LTV customer gets the same retry treatment as a 2-month trial user.

These gaps are why tools like ChurnShield exist — to layer code-aware logic, pre-dunning, and customer-personalized dunning on top of Smart Retries, not to replace it. Smart Retries is the foundation. Everything else is the building on top.

Before and after numbers

On a typical SaaS Stripe account, enabling Smart Retries with the settings above lifts failed payment recovery from 20–30% (the fixed-schedule default) to 45–55%. Layering code-aware retry logic and personalized dunning on top of Smart Retries lifts it further to 65–80%. The free Stripe audit will estimate where your account is today.

Verify It's Working

Once configured, give it a few weeks and check:

  1. In Stripe Dashboard, go to Reports → Revenue → Subscriptions. Look at the "Failed payment recovery" metric. You should see it trending up after you turn on Smart Retries.
  2. Filter invoices to those marked past_duepaid in the last 30 days. That's your recovery count.
  3. Check the "Customer portal" logs to confirm customers are actually reaching the portal from failure emails.

If any of those numbers look flat or unexpectedly low, double-check the steps above. The most common cause of "I enabled Smart Retries but nothing changed" is that the customer portal isn't fully configured, so the emails go out but the recovery link doesn't work.

One-Line Summary

Turn on Smart Retries with a 3-week window, set failed-payment action to "mark as unpaid," enable the customer portal with payment method updates, and verify your dunning email templates include the update link. That's 80% of what this feature can do for you, configured in 10 minutes.

For the remaining 20% — code-aware retries, pre-dunning, personalized copy, reactivation campaigns — you'll need either custom work or a dedicated tool. But the baseline Smart Retries setup is free, built in, and almost always the highest-ROI first move.


Want to recover your own failed Stripe payments?

Connect Stripe in 2 minutes. 14-day free trial. 2x ROI guarantee.

Start Free Trial