The card expires before the desire to keep paying does
Turn on your payment processor's expiring card alert and the link that lets the customer update it themselves, so they never have to read you the number or wait for a failed charge.
By Yodai · Published on September 6, 2026 · Updated on October 12, 2026
When you charge a monthly fee with an automatic card payment, the charge just comes in every month, until something you don't control breaks. One customer has been paying her monthly fee for a year and a half without missing a single month. Then one day, with no warning, the charge doesn't go through. She hasn't canceled anything: her card expired, and the bank sent the new one to her, not to you.
You don't find out until you check the account and see a failed charge. That's when the worst possible path begins: messaging her to ask for the new card number, waiting for her to reply, and typing it into the payment processor by hand. Three days of hassle over something that never had to happen.
Every card, physical or virtual, is good only until its expiration date, and how often they expire is up to the bank that issues them: in the system Mastercard uses to process cards for banks, a renewed card defaults to 48 months of validity, a setting that can be changed. Say you have a book of 150 customers paying monthly with four-year cards: that's about three cards a month hitting that date, without anyone, you or them, keeping track of it.
This lesson isn't about a new customer's first charge. It's about charge number eighteen, or thirty-six: the one that stops coming in simply because a card has an expiration date, like every card does.
The notice goes out, just not to you
When a card is about to expire, the bank sends the cardholder a new one. It doesn't write to the business billing them every month: at most, it passes the new details along through the card network. With Visa Account Updater, participating banks send the new number and expiration date when they reissue a card, and merchants who also participate, through their bank, receive them if available. Stripe tries to update saved cards this way, but notes that outside the United States coverage varies by country and there's no way to know in advance which cards will get updated. If your customer's card doesn't update, you find out about the problem once it already is one: the day the charge fails and that month's revenue doesn't come in.
Between those two moments, when she gets the new card and when you find out, there's a gap where anything can happen. She hasn't canceled and she isn't unhappy with what you offer: she just hasn't thought again about a payment detail she doesn't check every day.
For the customer, a year and a half of charges without a single hiccup is proof that everything works. An email saying "your payment was declined" breaks that feeling, even though the failure has nothing to do with what you offer. The sooner you fix it, the less it looks like your problem and the more it looks like a normal bank thing.
The expiration date isn't a secret the bank keeps: processors like Stripe return it to you with every charge, and you can store it, so you can send a reminder before the next charge is due
Asking for it over chat is the costly mistake
When the failed-charge alert pops up, the fastest thing seems to be texting or emailing the customer and asking right there for the new card number. That's the most expensive mistake you can make: you're asking them to write out, in plain text, in a chat or an email, exactly what's needed to use their card without having it. As the Bank of Spain points out, all it takes to commit fraud is the card number, expiration date, and security code. You copy it over by hand to the payment processor, and that number stays saved in a conversation nobody controls.
Beyond the risk of that number getting saved somewhere it shouldn't, you're asking the customer for an extra step they never should have had to take: copying sixteen digits by hand and trusting you to type them in correctly. One mistyped digit and the charge fails again the following week.
- The customer types the full number into a message
- You copy it by hand into the payment processor
- The customer updates it without you ever seeing the number
- If there's an outstanding invoice, they pay it right there
- No back-and-forth messages, no waiting
- The data never gets saved in any conversation
Which one to pick: Always give them your payment processor's link. If you haven't turned it on yet, do that before you ever ask for a number over chat: it's a one-time setup, not something you redo every time a card expires.
The link that fixes it on its own
The alternative is giving the customer a link that opens straight to the update-payment-method screen, no password to remember, no menu to get lost in. They get it by email before the card expires, not after. Yodai doesn't do this part: it comes built into the payment processor you use to bill your fees, if that processor offers it, and you sign up for and set it up separately. Stripe, for instance, can send an email a month before a saved card expires, with a link to one of its own pages where the customer updates their payment method and, if they have an outstanding invoice, pays it.
That link is generated by your payment processor, the same one billing the fees, which already knows which card each customer has and when it expires. You don't need to calculate dates or keep a separate list.
What the customer sees when they click through is a simple screen: a field for the card number, the new expiration date, and the security code. No passwords for your site, no security questions. That data is stored by the payment processor, not your business: with the integrations recommended in Stripe's security guide, payment data goes straight to the processor without passing through your servers, so you never see it, just like you don't see it today when a customer pays for the first time.
If your processor allows it, have the email go out from your own domain instead of theirs: this isn't just a cosmetic detail, because if it looks like spam, the customer won't open it, and the reminder will have been for nothing.
- One month before it expiresThe processor sends the heads-up email with the link to update it (Stripe Billing sends it with that same lead time)
- The customer clicks the linkThey update the card without the number ever passing through you
- On the day of the next chargeThe charge goes through with the new card, with no need for you to force it
- If they don't update in timeThe charge fails on the day it was due, and that's when you have to decide how many retries and how many days of grace you give before cutting them off
How to set this up in your payment processor
This isn't something you turn on in Yodai, which doesn't bill fees or warn you about expired cards: it's set up in the payment processor you use to bill your fees, Stripe Billing, for example, which you sign up for and configure separately. In Stripe, it's a customer-email setting you turn on once, and from then on it runs automatically for every subscription you bill through them, including customers who sign up later.
- 1Your payment processor already has the expiration date
The moment someone pays for the first time, your processor stores the month and year their card expires. You don't need to ask for it separately or write it down yourself. - 2Send the warning early, not after it fails
The email should go out with plenty of lead time before the card expires, not the day a charge already failed: Stripe Billing, for example, sends it a month ahead. Early, you have plenty of time. Late, you're already behind. - 3The link goes straight there, not to a menu
Make sure it leads to the update-card screen, not a general login page where they have to hunt for that option. - 4Let your processor keep billing on its own
If there was an unpaid invoice, the customer pays it right on that same page. If not, the new card gets used on the next billing cycle, no need for you to step in and force it.
- An automatic alert, set up in your payment processor and not in Yodai, goes out before the card expires, not after
- The customer updates their card through the link from your processor, without reading you the number over chat
- Once the new card is saved, your processor keeps billing on its own, and if there was an unpaid invoice, the customer pays it on that same page
- The email links straight to the update screen, no menus in the way, and it can go out from your own domain if your processor allows it
- What to do when the charge fails for good is still up to you
Test yourself
Answer before opening each one. If one gives you trouble, go back to the section that explains it.
1. A customer has been paying for two years, and suddenly you see a failed charge in your payment processor. Nobody has written to you asking to cancel. What do you do first?
Check your processor to see why it failed and whether the customer already got the link to update their card. If not, send it to them. Don't message them asking for the card number over chat, since that's exactly what the link is there to avoid.
2. You're setting up the expiration warning in your payment processor, and you're deciding whether to send it the same day the card expires or a few weeks ahead. Which do you choose?
A few weeks ahead (Stripe Billing, for example, sends it a month before): if you wait until the exact day, any delay on the customer's end updating the card lines up with billing day, and the payment fails anyway.
3. A customer messages you on WhatsApp and reads you their new card number because they missed the email. Do you enter it into the payment system?
No. You reply with the update link so they can enter it themselves; a card number should never end up written down in a chat conversation.
The alert and the link prevent most of the drop-offs caused by expired cards. Not all of them: when the charge fails anyway, you still have to decide how long to wait before cutting off access.
Sources
- Visa Account Updater Overview. Visa Developer, accessed October 2026.
- How cards work. Stripe Documentation, accessed October 2026.
- Automate customer emails. Stripe Documentation, accessed October 2026.
- Integration security guide. Stripe Documentation, accessed October 2026.
- About-to-Expire Card Renewal. Mastercard Developers, accessed October 2026.
- Fraudulent use. Banco de España Customer Portal, accessed October 2026.