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:

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:

FeatureWhat it doesWhere it lives
Smart RetriesRe-charges the same card at times Stripe predicts will workRevenue recovery → Retries
Card account updaterSwaps in new card details when the bank shares them with the card networkOn by default
Failed payment emailsEmails the customer a link to a Stripe-hosted page to update their cardRevenue recovery → Emails
Authentication linksEmails a link when a bank requires the customer to confirm the payment (3D Secure)Revenue recovery → Emails
What happens after the last retryCancels the subscription, marks it unpaid, or leaves it past dueRevenue 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

  1. Payments, filtered to Failed: every declined charge, with its decline code.
  2. Billing → Invoices, filtered to Past due: renewals still being retried. These are the ones you can still save.
  3. 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:

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

  1. Smart Retries on, with a retry window of about two weeks.
  2. Decide what happens after the last retry, and check it isn’t silently cancelling customers you could still win back.
  3. Failed payment emails on: Stripe’s, or your own sequence.
  4. One-click card update link in every email.
  5. Retry the invoice as soon as a new card is saved.
  6. 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.