How to recover expired_card failed payments in Stripe
Expired cards won't fix themselves with retries. How to get customers to update their card, plus the exact recovery email template and a pre-dunning tactic.
What card expired means
The card on file passed its expiry date. Every future charge will fail identically until the customer stores a new card. Retries cannot fix this one.
Why it happens
The bank reissued the card and the customer never updated subscriptions.
Card networks' automatic updates (which Stripe uses where available) did not cover this card or issuer.
The customer forgot which services were attached to the old card.
What Stripe does on its own
Stripe's card-account-updater catches many reissued cards automatically, but when a charge still fails with expired_card, the updater did not have new details. Retries against an expired card are pointless. Action has to come from the customer.
The recovery playbook
Email immediately. There is no retry worth waiting for. Include the Stripe-hosted invoice link, which lets the customer pay and update the card in one step.
Be specific in the subject line ("your card ending 4242 has expired"). Vague billing emails get ignored; specific ones read as legitimate.
Follow up once after 3-4 days if unpaid; expired-card cases decay quickly once the customer's attention moves on.
Turn on expiring-card alerts (pre-dunning): MRRdue can warn you up to 30 days before a card expires with an optional read-only Payment Methods scope. The email goes out before the failure ever happens.
Very recoverable in the first week. These are engaged customers with a stale card, not churn risks. Speed matters more than copywriting here.
The email to send
This is the exact template MRRdue's recovery assistant suggests for expired_card cases. Copy it, swap the details, and send it from your own address.
Subject: A quick heads-up about your payment
Hi Alex,
I noticed your recent $49.00 payment didn't go through (card expired). No worries at all — these things happen, and it's usually a quick fix.
Here's a secure link to update your payment details — it only takes a minute:
https://invoice.stripe.com/i/…
Once that's done we'll take care of the rest automatically. If anything's unclear, just reply to this email — a real person reads every one.
Thanks so much,
Your SaaS
MRRdue imports your failed payments with read-only access, ranks them by recoverable dollars and decline reason, and drafts this email for every case. You stay the sender.