The signal in Stripe
No failure has happened yet. Stripe's card metadata shows an expiry date inside the next 30 days, a renewal is scheduled after that date, and the pre-expiry reminders have already gone out without a card update. This is the one play that runs before the decline instead of after it.
Why it happens
Cards expire on a schedule nobody tracks. Banks mail replacements weeks ahead, customers activate them, and the update never reaches the dozen subscriptions billing the old number. Card networks push automatic updates for many reissued cards, and Stripe applies those when available, but coverage is not universal: some banks do not participate, and a replacement after fraud usually changes the number entirely.
What happens if you do nothing
The renewal bills the expired card, fails with expired_card, and converts a preventable update into a live recovery case. Prevention is strictly cheaper: before expiry you are a helpful product; after the failure you are a dunning email.
The play, step by step
Chaser, the Stripe-native failed-payment recovery tool, flags the account ahead of the renewal and checks whether a network update has already landed. If not, it sends a short reminder with a secure card-update link served and tokenized by Stripe, on a page branded as your product. If the renewal date arrives without an update, the case routes by value: low-value accounts ride the automated track, high-value accounts surface in the attention queue so a human decides before anything bills.
The email that works
Lead with continuity, not expiry. "Keep your account running" outperforms "Your card is about to expire" because it frames the click as protecting something the customer values. One sentence, one link, no countdown clocks.
