Failed payments and expiring cards in Stripe
Oct 31, 2026 · Luis Miguel
I'm a robotSkip the pixels. Read the .mdWhen a payment fails in Stripe, the invoice stays unpaid and the subscription moves to past_due. Stripe then retries the card on the schedule you set, can email the customer a link to update it, and after the last retry does whatever you chose: cancel the subscription, mark it unpaid, leave it past due or pause it. If none of that is set up, a customer who never decided to leave can end up gone because a card expired. Below is where each of those settings lives.
That kind of loss is called involuntary churn, and it may be the part of churn you can fix fastest, because the tools are already in Stripe. Every setting and number mentioned here is from Stripe's revenue recovery docs.
What happens when a payment fails?
The invoice isn't paid and the subscription goes to past_due. The customer hasn't gone anywhere yet. Stripe counts them as active, and so does TrustChurn's formula. Stripe sends an invoice.payment_failed event, and the invoice records how many attempts it has had (attempt_count) and when the next one is (next_payment_attempt).
What happens next depends on three settings: retries, emails, and what to do when the retries run out.
How does Stripe retry a failed payment?
In the Dashboard, go to Billing, then Revenue recovery, then Retries. You have two options:
- Smart Retries picks the moment for each retry with a model that looks at signals like how many devices have used the card recently and the time of day. You choose how many tries within a period of 1 week, 2 weeks, 3 weeks, 1 month or 2 months. Stripe's recommended setting is 8 tries within 2 weeks.
- A custom schedule retries up to 3 times, each a set number of days after the one before.
Check this page even if you think it's on. It's probably the setting that matters most for involuntary churn, and it's easy to go years without opening it.
Which failures aren't retried?
Some declines can't succeed on a retry, so Stripe doesn't try. When the bank answers with codes like incorrect_number, lost_card, stolen_card, pickup_card, transaction_not_allowed or authentication_required, Stripe waits until the customer adds a new payment method. There are no retries either when the subscription has no payment method at all.
Payment methods other than cards (bank debits like ACH, SEPA or Bacs) aren't retried by default and need to be turned on separately.
With those declines, nothing more happens until the customer updates their payment details. Someone has to ask them, and that's the job of the emails.
How do you email customers when a payment fails?
Under the same Revenue recovery section, turn on "Send emails when card payments fail". Stripe then emails the customer after each failed payment. Set the link to the Stripe-hosted page and the customer can update their card and pay what's due without logging in to your app.
Two things to know about that link. It stops working once the subscription is canceled or marked unpaid, so the emails only help during the retry window. And it isn't included for subscriptions billed by sending an invoice (send_invoice) instead of charging automatically.
Stripe's email has the button to update the card. I'd also send a short email of your own, since a plain message from the founder doesn't look like a billing notice. Something like:
Hi Ana, your last payment for Acme didn't go through. Probably an expired card. You can update it here in a minute, and nothing on your account changes: [link]
Inside your app, a banner for customers in past_due with the same link catches the ones who don't read email.
What happens when every retry fails?
At the end of the retries you choose what the subscription does:
- Cancel the subscription. It ends, and it counts as churn.
- Mark it as unpaid. It stays, but invoices are created as drafts and not charged. For churn, Stripe counts unpaid as gone.
- Leave it past due. Stripe keeps creating and charging invoices.
- Pause it, if the subscription is eligible. No invoices until it's resumed.
Which one to pick comes down to what your app does with access. If your app keeps letting past_due customers in, leaving it past due means giving the product away for as long as nobody notices. Whatever you choose, make sure the app and Stripe agree on who still has access.
If you're not sure, cancel or pause are the simplest choices. The numbers stay honest, and a customer who comes back later starts a new subscription or resumes the old one.
What about expiring cards?
Expiring cards give you warning, and Stripe has two settings for them.
- Automatic card updates. When a customer gets a new card (expired, lost or stolen), Stripe tries to update the saved details through the card networks. It's widely supported for Visa, Mastercard, American Express and Discover cards issued in the United States. Outside the US, support varies, and you can't tell in advance which cards will update.
- Expiring card emails. "Send emails about expiring cards" makes Stripe email the customer a month before their default card expires.
For the cards that won't update on their own, a month is enough time to ask. If your customers are mostly outside the US, assume more of them will need that email.
How do you know it's working?
Stripe has a Revenue recovery analytics page with four numbers at the top:
- Failed payments, the count.
- Failure rate, the share of payments that fail on the first attempt.
- Recovered payments, the ones that ended up paid.
- Recovery rate, the share of failed payments that were recovered.
Below those, it splits recovered money by method (retries, emails, other) and lists the most common decline reasons. If the failure rate is high, the decline reasons tell you why. If recovery is low, the emails or the retries probably aren't set up. The page only covers recurring subscription payments, and leaves out the first invoice after a trial (trials without a card explains why that one is different).
Where TrustChurn fits
On TrustChurn, a failed payment that ends up paid counts as a customer saved this month, and you can choose to show that count on your public profile. There's also a private list with each failed payment and each card that expires before the next charge, what the customer pays and a link to them in Stripe, so you can write before the retries run out.
FAQ
How many times does Stripe retry a failed payment?
With Smart Retries, as many times as you set within the period you choose (1 week to 2 months). Stripe's recommended setting is 8 tries within 2 weeks. With a custom schedule, up to 3 retries.
Does Stripe email customers when a payment fails?
Only if you turn it on. The setting is "Send emails when card payments fail", under Revenue recovery. With the Stripe-hosted page as the link, customers can update their card and pay without logging in.
What happens to a subscription after all retries fail?
What you chose in the retry settings: Stripe cancels it, marks it as unpaid, leaves it past due or pauses it if it's eligible. Cancel and unpaid both count as churn in Stripe's analytics.
Does Stripe update expired cards automatically?
It tries to, through the card networks, when a customer gets a new card. It works widely for cards issued in the United States and varies elsewhere, so it won't catch every card.
Is a failed payment counted as churn?
Not while the subscription is past_due. It becomes churn when the subscription is canceled or marked unpaid after the last retry. That's why the retry and email settings have such a direct effect on churn.
Keep reading
Trials without a card in Stripe
What happens when a trial with no payment method ends, the settings that decide it, and how to reach those customers in time.
How to find scheduled cancellations in Stripe
A customer who cancels at the end of the period still looks active in Stripe. How to find them and what to do before the date.