NewNo plan feeNo plan fee. Just 2.9% + $0.30 per card sale, and signing up is free.Try now →

Authorize.Net · Decline codes

What does Authorize.Net 7 “Credit card expiration date is invalid” mean?

Checked

Authorize.Net response reason code 7, "Credit card expiration date is invalid", means the format of the expiration date submitted was incorrect. It is a data problem rather than a bank decline. The shopper should re-enter the month and year exactly as printed on the card; if it keeps happening across shoppers, your checkout may be sending the date in a format Authorize.Net does not accept.

Type
Hard decline for these details
Who declined
Authorize.Net's validation
Retry
Only with a correctly formatted expiry date.
Shopper action
Re-enter the expiry month and year from the card.
Merchant action
Check the date format your checkout sends.

What PlatformDTC does

PlatformDTC classes Authorize.Net code 7 as never-retry on the same details; because its checkout tokenizes the card with Accept.js, the expiry date is captured by Authorize.Net's own script, not reformatted by PlatformDTC. On a subscription renewal the code is not retried: the subscription is held past due and the customer gets an email with a link to add a new card.

Why it happens

Authorize.Net's note for code 7: "The format of the date submitted was incorrect." A swapped month and year, a two-digit year where four were expected, or an empty field can all cause it.

What the shopper can do

Enter the expiry as month and year from the front of the card.

What the store can do

If you build the request yourself, Authorize.Net's API reference asks for expirationDate as a 7-character year and month, YYYY-MM.

For developers

errors[0].errorCode "7"; 316 is the processor-issued version. An expired-but-valid date returns 8, not 7.

Frequently asked questions

Is Authorize.Net code 7 the same as an expired card?
No. Code 7 is a badly formatted date; an expired card returns code 8.
How do I fix Authorize.Net code 7?
Re-enter the expiry date, and check that your integration sends it in an accepted format.

Sources

Related

Payments library