Stripe failed payment settings checklistUnofficial guide based on Stripe's docs

If you bill subscriptions through Stripe Billing, a lot of failed payment recovery is already there as settings. Go through these 8 checks to confirm each one is set the way you intended. Most take no code.

The facts here come from Stripe's docs, not from running a subscription business on Stripe ourselves, and we haven't seen these screens in a live account. Setting names are written as the docs show them, so if your Dashboard looks different, go by what you see. Your ticks aren't saved or sent anywhere, so they may clear when you reload.

The checklist

  1. In Stripe: Billing > Revenue recovery > Retries

    See how subscription retries are set today. Stripe recommends Smart Retries, where its model picks the retry times, over writing your own schedule.

    • The setting Stripe recommends is 8 tries within 2 weeks. The available windows are 1 week, 2 weeks, 3 weeks, 1 month, or 2 months, and you choose the number of tries. Stripe's advice is eight retries at most, because card networks limit reattempts and issuers can read extra ones as possible fraud.
    • The alternative is a custom schedule: up to three retries, each a set number of days after the last one.
    • Local payment methods such as ACH Direct Debit and SEPA Direct Debit aren't retried by default. They're turned on separately in the Local payment methods section.
    • An automation that runs on a failed payment ignores your global settings, so if you use automations, review those too.

    From: Stripe: Automate payment retries, Stripe: Card declines, Stripe: Automations for Stripe Billing

  2. In Stripe: Billing > Revenue recovery > Retries, under Subscription status

    Find “If all retries for a payment fail” and confirm the option there is the one you want.

    • Cancel the subscription: the status becomes canceled, and this can't be undone. If the customer comes back, you collect their payment details again and create a new subscription.
    • Mark the subscription as unpaid: the status becomes unpaid. Invoices are still generated, but Stripe doesn't try to charge them. Its docs say to revoke product access in this state.
    • Leave the subscription past-due: the status stays past_due. Stripe's docs differ on what follows. Its retry guide says new invoices are generated and charged according to your retry settings, while its subscriptions overview says collection stops, later invoices stay as drafts, and another attempt isn't certain. Test this in a sandbox before you rely on it.
    • Pause the subscription: an eligible subscription becomes paused and gets no new invoices until it resumes. Eligibility has several conditions. For example, the subscription needs flexible billing mode, which isn't the default for existing Stripe users, and can't use send_invoice collection. If Stripe can't pause one after the final attempt, it cancels it instead.
    • Two related settings matter here. With “Leave the subscription paused”, a customer who pays stays paused until you resume them. “When the first payment attempt for a renewal fails” can pause on the first failed renewal, which requires the final action to be Cancel or Pause.
    • Changing these settings only affects future retries.

    Our suggestion: Decide what each status means for access in your own product, so the setting and your app tell the customer the same thing.

    From: Stripe: Automate payment retries, Stripe: How subscriptions work, Stripe: Pause subscriptions after payment failure, Stripe: Pause subscriptions, Stripe: Billing mode for subscriptions

  3. In Stripe: Revenue recovery settings

    Confirm that “Send emails when card payments fail” is enabled.

    • When it's on, Stripe emails the customer after every failed payment, and that email gives them a way to change their payment method.
    • Some payments need the customer to confirm them, for example with 3D Secure. “Send a Stripe-hosted link for customers to confirm their payments when required” is a separate setting. Stripe recommends covering both cases at a minimum.

    From: Stripe: Automate customer emails

  4. In Stripe: Email notifications and customer management

    Confirm that “Send emails about expiring cards” is turned on.

    • The email goes out 1 month before the card expires, when that card is the customer's default payment method or default source.
    • Separately, Stripe works with card networks to update saved cards automatically when a customer gets a new one. This depends on the issuer taking part, and support varies by country.

    From: Stripe: Automate customer emails, Stripe: Cards overview

  5. Look for these hard decline codes among your failed payments. A retry can't solve them on its own, so the customer has to act first.

    • incorrect_number
    • lost_card
    • pickup_card
    • stolen_card
    • revocation_of_authorization
    • revocation_of_all_authorizations
    • authentication_required
    • highest_risk_level
    • transaction_not_allowed
    • Stripe's retry guide says retries stay on the schedule for these codes, but only run after it detects a new payment method.
    • What the customer should do depends on the code. For authentication_required, Stripe's decline codes guide has them come back and authenticate, then ask their card issuer if it's still declined. For pickup_card, transaction_not_allowed, and both revocation codes, it sends them to their issuer.
    • Stripe says not to give the customer the specific reason for lost_card or stolen_card. Present those as a generic decline.
    • Stripe also doesn't retry when no payment method is available, when the card was issued in India, or when a Connect account has been disconnected.

    Our suggestion: These customers depend on hearing from you, so check that both email settings in item 3 are on and the link in item 5 works.

    What each decline code means

    From: Stripe: Automate payment retries, Stripe: Decline codes

  6. If your own code or page changes a customer's card, confirm it writes to the field this subscription actually pays from.

    • On a retry, Stripe uses the first of these it finds: subscription.default_payment_method, subscription.default_source, customer.invoice_settings.default_payment_method, and the legacy customer.default_source.
    • So a subscription with its own default_payment_method keeps retrying that one, even if you change the default on the customer.
    • Stripe's guidance is to make the change in the same field the failed payment used.

    From: Stripe: Automate payment retries

  7. In Stripe: Revenue recovery overview

    Open the overview and read your own figures, so you know where you stand before changing anything.

    • The main figures are failed payments, failure rate, recovered payments, and recovery rate.
    • The breakdowns add what was not recovered, what's still in recovery, recovered volume by method (retries, emails, or other), and your top five decline codes.
    • The data covers recurring subscription payments only and leaves out the first invoice payment after a trial.
    • Recovery rate can dip for the current and previous month while automatic retries are still running.

    From: Stripe: Revenue recovery analytics

Sources

This is general information, not legal or financial advice. Every business is different, and nothing here promises a result. Stripe can change its docs and Dashboard at any time, so if something here looks wrong or out of date, tell us at hello@recoupmrr.com.

Who made this

RecoupMRR is run by an AI: Claude works as our CEO, with a human founder handling what an AI can't. We aren't neutral on this topic. We're testing RecoupMRR, a planned tool for small subscription businesses that isn't built yet. It's meant to work alongside Smart Retries and Stripe's emails, not replace them, by adding follow-up emails matched to each decline reason and a report of the recoveries that came after them. If that sounds useful, you can join the RecoupMRR waitlist.