stripechurnsaas

Stripe failed payments: why they happen and how to win them back

Why subscription payments fail in Stripe, what the common decline reasons mean in plain English, and a simple routine to recover more of them.

The Scenario team · · 4 min read

Stripe failed payments are one of the quietest ways a subscription business loses money. A customer who never meant to leave has a payment declined, nobody notices, the retries run out and the subscription is cancelled. In the numbers it looks exactly like churn. In reality it's a card that needed updating.

This guide explains why payments fail, what the decline reasons mean, and a short routine to win more of them back.

Why subscription payments fail

When Stripe charges a card, the customer's bank decides whether to approve it. When it says no, Stripe records a decline code explaining why, as far as the bank is willing to say. Stripe's documentation lists every decline code and what it means. For subscriptions, a handful come up again and again:

Decline reasonWhat it usually meansWhat helps
insufficient_fundsNot enough money in the account that dayA retry a few days later, often after payday
expired_cardThe card on file has expiredAsking the customer to update their card
card_declined / generic_decline / do_not_honorThe bank declined without saying whyA retry, then a message if it keeps failing
authentication_requiredThe bank wants the customer to confirm (3D Secure)Sending the customer a link to confirm the payment
processing_errorSomething went wrong between the banksUsually a retry fixes it
lost_card / stolen_cardThe card has been cancelledA new card from the customer

The pattern to notice: very few of these are the customer deciding to leave. They're timing, admin and security checks.

Step 1: let Stripe retry for you

Stripe Billing can retry failed subscription payments automatically. Its Smart Retries choose when to try again, rather than on a fixed schedule. Check it's turned on in your Stripe Billing settings, and check what happens when the retries run out: whether the subscription is cancelled, marked unpaid, or left past due.

Retries alone recover the timing problems, like insufficient_funds and processing_error. They can't fix an expired card.

Step 2: tell customers, early and personally

Stripe can also email customers when a payment fails, with a link to update their card. Turn that on too. But automated emails are easy to ignore, and a short personal note from the founder often gets a reply where the automatic one didn't.

Keep it short, friendly and blame-free:

Hi Sam, a quick heads-up: your latest payment of £29 didn't go through. Could you update your card details when you get a moment? Thanks!

Send it after the first retry fails, not after the last. The earlier the customer knows, the more time there is to fix it before the subscription ends.

Step 3: look at the reason before you chase

The decline reason tells you what to say:

  • Expired card: ask for new card details. There's no point waiting for a retry.
  • Insufficient funds: be gentle. A retry after a few days often works by itself, and a pushy message can lose a customer who was going to pay anyway.
  • Authentication required: the customer needs to approve the payment. Send them the link to do it.
  • Lost or stolen card: they'll need to add a new card. A short message saying so is helpful, not awkward.

Step 4: watch the trend, not just the list

A few failed payments every month is normal for any subscription business. What matters is whether it's changing. Keep an eye on:

  • The share of payments that go through, month on month. A drop can point to a problem on your side, such as a payment method that's stopped working or a checkout change.
  • Money recovered by retries. It shows whether your retry settings are doing their job.
  • Failed payments that turned into cancellations. That's the churn you could have prevented, and it's worth counting separately from customers who chose to leave. Our guide on how to calculate churn rate explains why mixing the two makes churn harder to fix.

How Scenario helps

Scenario reads your Stripe payments (read-only) and puts this routine in one place. The Payments page shows how many payments went through, what failed and why in plain words, and how much retries recovered. A "Needs attention" list shows each failed payment that's still unpaid, with a short message ready to copy and a link to the invoice in Stripe. You can see it on a sample business in the live demo.

The takeaway

Most failed payments are fixable. Turn on retries, read the decline reason, and send a short personal message to anyone still unpaid after the first retry. Then track recovered payments separately from real cancellations, so your churn number tells you about customers who chose to leave, not cards that expired.

Scenario’s figures are estimates from your data and stated assumptions, not financial advice. Scenario is not affiliated with Stripe, Inc.

Keep reading