Stripe failed payments: why they happen and how to get the money back
Every subscription business on Stripe has failed renewals. Most aren’t customers trying to leave: their card expired, their bank flagged a charge, or the account was briefly short. Stripe recovers some of these on its own. This guide covers what it does, where to look, and how to get back the rest.
Why Stripe payments fail
Every failed payment comes back with a decline code from the customer’s bank. They fall into two groups:
- Soft declines: the card still works, but not right now. Insufficient funds, a processing error, or a bank that couldn’t be reached. Trying again in a few days often works.
- Hard declines: the card will never work again. Expired, replaced, lost or stolen, or a closed account. No retry can fix these. Only the customer can, by entering a new card.
A third group sits in between: do_not_honor and generic_decline, where the bank declined without saying why. Those need both a retry and a word with the customer.
What Stripe does automatically
Stripe Billing has several recovery tools built in. Check they’re all on before adding anything else:
| Feature | What it does | Where it lives |
|---|---|---|
| Smart Retries | Re-charges the same card at times Stripe predicts will work | Revenue recovery → Retries |
| Card account updater | Swaps in new card details when the bank shares them with the card network | On by default |
| Failed payment emails | Emails the customer a link to a Stripe-hosted page to update their card | Revenue recovery → Emails |
| Authentication links | Emails a link when a bank requires the customer to confirm the payment (3D Secure) | Revenue recovery → Emails |
| What happens after the last retry | Cancels the subscription, marks it unpaid, or leaves it past due | Revenue recovery → Retries |
While Stripe retries, the subscription is past due. When the last retry fails, Stripe does whatever you chose in your settings: cancel the subscription, mark it unpaid, or leave it past due. Many businesses never look at this setting, so failed customers are cancelled quietly two weeks later.
How to find failed payments in your Stripe Dashboard
- Payments, filtered to Failed: every declined charge, with its decline code.
- Billing → Invoices, filtered to Past due: renewals still being retried. These are the ones you can still save.
- Billing → Subscriptions, filtered to Past due or Unpaid: customers whose access is at risk.
To see the total for the last 90 days without clicking through each invoice, run the free failed payment audit, or estimate it from your MRR with the calculator.
How to recover the payments retries can’t
Retries handle soft declines. For hard declines, someone has to ask the customer for a new card. That’s dunning, and it works best when it’s:
- Fast. Email within hours of the failure, while the customer still remembers what they signed up for.
- Easy. One link, straight to a card form. No login, no hunting through account settings.
- Personal. A short plain-text note from your business, with replies going to a real inbox.
- Persistent but polite. Three or four emails over about two weeks. Here are four free templates.
- Followed by an immediate retry. When the customer saves a new card, charge the failed invoice right away instead of waiting for the next scheduled retry.
Stripe’s built-in failed payment emails cover the basics. A custom sequence gives you control over tone and timing. Use one or the other, not both, or customers get two emails about the same payment. More on the trade-offs in Smart Retries vs. dunning emails.
Prevent the next one
Expired cards are the most predictable failure there is: the expiry date is on file. Email customers a few weeks before their card expires, when the next renewal falls after that date, and most of them update it before the payment ever fails.
A checklist
- Smart Retries on, with a retry window of about two weeks.
- Decide what happens after the last retry, and check it isn’t silently cancelling customers you could still win back.
- Failed payment emails on: Stripe’s, or your own sequence.
- One-click card update link in every email.
- Retry the invoice as soon as a new card is saved.
- Warn customers before their card expires.
Questions
- Why do Stripe subscription payments fail?
- The customer's bank declined the charge. The most common reasons are expired or replaced cards, insufficient funds, and generic declines where the bank gives no reason. Stripe records the bank's decline code on each failed payment.
- Does Stripe retry failed payments automatically?
- Yes, if Smart Retries is turned on in your Stripe Dashboard under Revenue recovery. Stripe's recommended default is 8 attempts within 2 weeks.
- What happens to a subscription when the payment fails?
- It becomes past due while Stripe retries. After the last retry, Stripe cancels it, marks it unpaid, or leaves it past due, depending on your settings.
- How do I get a customer to update their card in Stripe?
- Send them a link to a Stripe-hosted page where they can enter a new card: Stripe's failed payment emails include one, or you can create one with the customer portal or a Checkout session in setup mode. Then retry the failed invoice.
- Can I stop payments from failing in the first place?
- Partly. Keep the card account updater on, and email customers before their card expires. Some declines, like insufficient funds, can't be prevented, only retried.