Error codes
Soft decline
Stripe
expired_card
The card has expired.
What does expired_card mean?
The expired_card decline code is returned when the expiration date on the stored card has passed. The card itself is almost always still valid — the issuer has typically already mailed a new card to the customer with an updated number, expiration, or CVC — but the merchant is still attempting to charge the old credentials.
This makes expired_card one of the most predictable and recoverable declines in subscription billing, if you have the right infrastructure in place.
Is it a soft or hard decline?
Technically classified as a soft decline because the cardholder's account is still valid. However, unlike most soft declines, simply retrying with the same credentials will never work — the card data itself needs to be updated before any retry can succeed.
Common root causes
The stored card has passed its printed expiration date
The issuer has reissued the card with new credentials (new number, CVC, or date)
The customer has received a new physical card but has not updated their payment method
The merchant is not enrolled in an account updater service to refresh cards automatically
Recommended recovery steps
Enroll in account updater services. Visa Account Updater (VAU) and Mastercard Automatic Billing Updater (ABU) automatically refresh stored card details when issuers reissue cards. This is the single biggest lever for
expired_cardrecovery.Use network tokens instead of raw PANs. Network tokens automatically update when the underlying card changes.
Only prompt the customer as a last resort. Customers often ignore payment update emails, and each one risks canceling the subscription.
Time outreach around natural engagement points if customer action is required — not during the middle of an unrelated task.
How FlyCode handles expired_card
FlyCode automatically enables both Visa Account Updater and Mastercard Automatic Billing Updater for every merchant on the platform. When a card expires, FlyCode queries the network for updated credentials and refreshes the stored payment method silently — before the failed charge ever reaches the customer.
For cards that cannot be updated automatically (small issuers not participating in VAU/ABU, or customers with new cards from different banks), FlyCode's AI outreach engine determines the optimal moment and channel to request an update from the customer, maximizing response rates while minimizing subscription cancellations.
The combined approach recovers the majority of expired_card declines without any merchant engineering work.
What does expired_card mean?
The expired_card decline code is returned when the expiration date on the stored card has passed. The card itself is almost always still valid — the issuer has typically already mailed a new card to the customer with an updated number, expiration, or CVC — but the merchant is still attempting to charge the old credentials.
This makes expired_card one of the most predictable and recoverable declines in subscription billing, if you have the right infrastructure in place.
Is it a soft or hard decline?
Technically classified as a soft decline because the cardholder's account is still valid. However, unlike most soft declines, simply retrying with the same credentials will never work — the card data itself needs to be updated before any retry can succeed.
Common root causes
The stored card has passed its printed expiration date
The issuer has reissued the card with new credentials (new number, CVC, or date)
The customer has received a new physical card but has not updated their payment method
The merchant is not enrolled in an account updater service to refresh cards automatically
Recommended recovery steps
Enroll in account updater services. Visa Account Updater (VAU) and Mastercard Automatic Billing Updater (ABU) automatically refresh stored card details when issuers reissue cards. This is the single biggest lever for
expired_cardrecovery.Use network tokens instead of raw PANs. Network tokens automatically update when the underlying card changes.
Only prompt the customer as a last resort. Customers often ignore payment update emails, and each one risks canceling the subscription.
Time outreach around natural engagement points if customer action is required — not during the middle of an unrelated task.
How FlyCode handles expired_card
FlyCode automatically enables both Visa Account Updater and Mastercard Automatic Billing Updater for every merchant on the platform. When a card expires, FlyCode queries the network for updated credentials and refreshes the stored payment method silently — before the failed charge ever reaches the customer.
For cards that cannot be updated automatically (small issuers not participating in VAU/ABU, or customers with new cards from different banks), FlyCode's AI outreach engine determines the optimal moment and channel to request an update from the customer, maximizing response rates while minimizing subscription cancellations.
The combined approach recovers the majority of expired_card declines without any merchant engineering work.
What does expired_card mean?
The expired_card decline code is returned when the expiration date on the stored card has passed. The card itself is almost always still valid — the issuer has typically already mailed a new card to the customer with an updated number, expiration, or CVC — but the merchant is still attempting to charge the old credentials.
This makes expired_card one of the most predictable and recoverable declines in subscription billing, if you have the right infrastructure in place.
Is it a soft or hard decline?
Technically classified as a soft decline because the cardholder's account is still valid. However, unlike most soft declines, simply retrying with the same credentials will never work — the card data itself needs to be updated before any retry can succeed.
Common root causes
The stored card has passed its printed expiration date
The issuer has reissued the card with new credentials (new number, CVC, or date)
The customer has received a new physical card but has not updated their payment method
The merchant is not enrolled in an account updater service to refresh cards automatically
Recommended recovery steps
Enroll in account updater services. Visa Account Updater (VAU) and Mastercard Automatic Billing Updater (ABU) automatically refresh stored card details when issuers reissue cards. This is the single biggest lever for
expired_cardrecovery.Use network tokens instead of raw PANs. Network tokens automatically update when the underlying card changes.
Only prompt the customer as a last resort. Customers often ignore payment update emails, and each one risks canceling the subscription.
Time outreach around natural engagement points if customer action is required — not during the middle of an unrelated task.
How FlyCode handles expired_card
FlyCode automatically enables both Visa Account Updater and Mastercard Automatic Billing Updater for every merchant on the platform. When a card expires, FlyCode queries the network for updated credentials and refreshes the stored payment method silently — before the failed charge ever reaches the customer.
For cards that cannot be updated automatically (small issuers not participating in VAU/ABU, or customers with new cards from different banks), FlyCode's AI outreach engine determines the optimal moment and channel to request an update from the customer, maximizing response rates while minimizing subscription cancellations.
The combined approach recovers the majority of expired_card declines without any merchant engineering work.
Understanding This Decline Code
Extended content body
Frequently Asked Questions
Is expired_card a soft or hard decline?
Can expired_card be recovered with a retry?
Not by retrying alone — the card data itself must be refreshed first. Visa Account Updater and Mastercard Automatic Billing Updater handle this automatically for cards whose issuers participate in those networks.
Does FlyCode automatically update expired cards?
Yes. FlyCode automatically uses Visa Account Updater and Mastercard Automatic Billing Updater to refresh stored card details silently, so renewals continue working after a card expires — without any customer involvement.

