Involuntary Churn: Fixing Expiring Cards Before They Fail
Customers who leave because a card expired never meant to leave. How to track expiry dates, send pre-expiry emails that work, and measure the revenue you keep.

On this page(8 sections)
Some of your churn has nothing to do with your product. A customer's card expires, the renewal charge fails, a few reminder emails get lost in a busy inbox, and the subscription quietly ends. Nobody decided to leave.
This is involuntary churn, and a meaningful part of it is preventable with a few well-timed emails sent before anything fails.
Why expiring cards deserve their own process
Dunning, the process of recovering failed payments, starts after the failure. By then the customer is receiving "payment failed" messages, may be worried about losing access, and has to act under some pressure.
An expiring card is different: you know the expiry date in advance. That gives you a window to ask calmly, at a time that suits the customer, with nothing yet at stake. "Your card expires next month, here's a link to update it" is a much easier message to receive than "your payment was declined."
How card updates happen without you
Before writing any emails, understand what already happens automatically:
- Card network updater services. The major card networks run account updater programs that let participating payment processors receive new card details when a bank reissues a card. If your processor supports this, many expiring cards get refreshed with no customer action.
- Processor retries. Most billing systems retry failed charges over days or weeks, which recovers temporary declines.
These help, but they're not complete. Not every bank or card participates, business cards are sometimes cancelled rather than reissued, and a customer who switched banks won't be covered. Pre-expiry emails catch what automation misses.
Check your payment processor's documentation to see whether updater services are enabled for your account and what they cover.
Step 1: Track expiry dates
Your payment processor stores card expiry months and years and usually exposes them through its API or dashboard. You need a daily or weekly job that finds:
- Active subscriptions whose default card expires this month or next.
- Whether the card has already been updated since you last checked.
- Who should receive the email: the billing contact, if set, or the account owner.
A simple query against your own copy of billing data might look like:
SELECT a.id, a.billing_email, c.last4, c.exp_month, c.exp_year
FROM accounts a
JOIN cards c ON c.id = a.default_card_id
WHERE a.status = 'active'
AND make_date(c.exp_year, c.exp_month, 1) <= date_trunc('month', now()) + interval '1 month'
AND NOT EXISTS (
SELECT 1 FROM emails_sent e
WHERE e.account_id = a.id AND e.kind = 'card_expiring'
AND e.card_last4 = c.last4
);
Store which card each email referred to, so a customer who updates to a new card that later expires gets a fresh reminder.
Step 2: Time the emails to the billing date
Expiry dates and renewal dates rarely line up. A card expiring at the end of June matters a lot for a subscription renewing on 2 July and very little for one renewing on 28 June. Base the timing on the first charge that will fail:
| Situation | First email | Follow-up |
|---|---|---|
| Monthly plan, card expires before next renewal | About 2 weeks before that renewal | A few days before renewal, if not updated |
| Annual plan, card expires before renewal | About 30 days before renewal | About a week before |
| Card expires but next charge is still on an unexpired card date | No email yet | Recheck next cycle |
Annual renewals deserve extra care. The charge is larger, the customer may not remember the card on file, and a failure feels more disruptive. Pair the card reminder with your normal annual renewal reminders if you send them.
Step 3: Write a short, trustworthy email
Subject: The card on your Acme Analytics account expires soon
Hi Sam,
The card ending 4242 on your account expires at the end of June. Your next payment is due on 2 July.
To avoid any interruption, you can update your card here: [Update payment method]
If your bank has already sent you a replacement card with a new expiry date, updating takes about a minute. No action is needed if you've already done it.
(Acme Analytics is hypothetical.) A few things make this work:
- Specifics: last four digits, expiry month, the date of the next charge.
- A direct link to the payment update page, ideally one that works without logging in.
- No alarm. Nothing has gone wrong yet, and the email says so.
- A consistent sender that customers recognize from your other billing emails.
Security matters here
Payment emails are a favorite target for phishing. Never ask for card details in an email or by reply. Keep the link on your own domain, use the same sender address and format every time, and make sure SPF, DKIM and DMARC are in place for your domain so impersonators are easier for mailbox providers to reject. Tell customers in your help docs that you'll never ask for card numbers by email.
Step 4: Route it to the person who pays
In B2B, the user who signed up is often not the person holding the company card. Let customers add a billing contact, send expiry reminders there, and copy the account owner. Make the update link usable by whoever receives the email.
Make the sender address replyable, too. "Our finance team needs to pay by invoice instead" is a common reply, and it's much better to receive it now than after a failed charge.
Step 5: Measure what you keep
Track monthly:
- Cards approaching expiry on active subscriptions.
- Cards updated automatically by updater services, before any email.
- Cards updated within, say, 14 days of a reminder email.
- Expiring cards that still failed at renewal and entered dunning.
The goal is a falling share in the last category. If many reminders go unanswered, test the timing, the subject line, or whether you're reaching the right person.
Key takeaways
- Expiring cards are predictable; you can ask for an update before anything fails.
- Card network updater services and retries fix many cases, but not all.
- Time reminders to the first renewal that would fail, with extra notice for annual plans.
- Keep emails specific, calm, consistent and free of any request for card details.
- Send to the billing contact, accept replies, and measure how many expiring cards still end up in dunning. For those that do, see our guide to dunning emails that recover failed payments.
Start with Koltrix
Your domain, one inbox, and an API that sends.
A team inbox where AI sorts and drafts (nothing is sent without your click), plus the transactional API and SMTP relay your product sends with. 7 days free, no card.

