Stripe expiring cards: how to warn customers before the renewal fails
Card expiry dates are visible in Stripe weeks before renewal, which makes expiring cards the easiest failed payments to prevent.
Why it matters
expired_card is a hard decline. No retry will ever make it succeed, so once it fails, the only way back is the customer typing in a new card. Catching it before the charge turns a failed payment, a dunning sequence and a possible lost customer into one friendly email.
Step 1: let the card networks do their part
When a bank reissues a card, Visa and Mastercard can pass the new number and expiry to Stripe automatically. Stripe calls this automatic card updates, and it works on many cards without you doing anything. It does not cover every card, every bank or every country, and a card that is cancelled rather than reissued never gets an update. Those are the customers you need to reach yourself.
Step 2: find the cards that will expire before the next charge
Once a day, list your active subscriptions and look at the card behind each one: the subscription's default payment method, or the customer's default if the subscription has none. A card is at risk when its exp_month and exp_year fall before the next billing date, or within a window you choose. 30 to 45 days works well for monthly plans. For annual plans, look further ahead, because the one charge a year is the whole year's revenue.
Skip anything already updated: if the expiry has moved forward since yesterday, the network update did its job.
Step 3: one email, with a link that needs no login
- Subject: plain and specific, such as "Your card ending 4242 expires next month".
- Body: three sentences. Which card, when it expires, and that updating it keeps the subscription running with nothing lost.
- The link: a fresh Stripe customer portal session, created for that customer when the email is sent, so they land on the update screen without a password.
- From: your own name and address, not a no-reply. People reply to this email with questions, and those replies are customers you keep.
Step 4: tell them once
Record which card you warned, keyed by the payment method and its expiry. One notice per card is enough. Two weeks of daily reminders about a card turns a helpful nudge into spam, and the customer who ignored the first one will be caught by your failed-payment sequence anyway.
What Stripe already gives you
Stripe Billing can send its own expiring-card reminder if you turn it on in your billing email settings, and you should if you have nothing else. Doing it yourself adds control over the timing window, your own words and sender, a fresh portal link, and a record of who was told, so you can see later which warnings worked.
Running it automatically
If a card does slip through and the charge fails, the next stop is reading the decline code so the expired card gets an email instead of a pointless retry. RevGuard's Expiring-Card Watchdog runs this daily sweep for you: it finds cards expiring within your window, sends one notice per card with a fresh portal link from your own address, and remembers who it told. It is $49 once and runs on your own machine.