Card Expiry Checker
Check whether a card is still within its validity window.
Related tools
How this tool works
A card's expiry date is two digits for the month and two for the year, and it is stored in the record as a month and a year rather than a day. The card is valid from the first day of the stated month until the last day of the stated month, which is the detail most implementations get wrong: a card expiring 06/26 is valid through 30 June, not through 1 June.
The comparison has to be done against the current date, and the year needs care. A two digit year is ambiguous until 2029, so a card with an expiry of 29 is next year, not 2029 in the past. This tool applies the rule and reports how long is left, including the case that matters most in practice, a card that has already expired.
Worked examples
| Expiry | Status |
|---|---|
| 12/28 | Valid, over a year remaining |
| 03/26 | Valid, expires at the end of March 2026 |
| 01/26 | Expired, 0 days remaining |
| 13/26 | Not a valid month |
Cards are valid through the last day of the expiry month, not the first.
When to use it
- Validate an expiry date at the point of entry
- Check an expiry captured from a scan or an import
- Warn on a card that is close to expiring
- Confirm the two digit year interpretation
Frequently asked questions
When does a card actually expire?
At the end of the expiry month. A card marked 06/26 is valid through 30 June 2026, and the issuer treats it as expired from 1 July.
Is the expiry month zero-padded?
Yes, it is two digits. A card expiring in March reads 03, and a month of 13 is not valid.
How is a two digit year interpreted?
As the year in the current decade. 29 means 2029, and 00 means 2000 only if that is still in the future, which after 2000 it is not. Implementations should reject anything that has already passed.
Does an expired card still pass the Luhn check?
Yes. The checksum and the expiry are independent, and a number can be checksum-valid and long expired. That is why both checks are needed.
Can the expiry date be changed?
Only by the issuer. A replacement card for a lost or stolen card gets a new expiry, and sometimes a new number as well.
Why do some checkouts reject a card that appears valid?
Usually because the merchant is comparing against the wrong cutoff, for example treating the expiry month as the first day rather than the last, which fails cards late in their expiry month.