incorrect_number vs invalid_number on Stripe: one blocks retries, neither is fixed by them | RecoverFlow

Guide

incorrect_number vs invalid_number on Stripe

Last updated 13 August 2026 · written by Bruce McGinley, who builds RecoverFlow

Short answer

The card number is incorrect. Stripe's decline codes reference gives incorrect_number and invalid_number the identical description, and the identical next step: the customer needs to try again using the correct card number.

The operational difference: incorrect_number is one of the nine hard decline codes, so Stripe holds retries until a new payment method exists. invalid_number is not on the list, so retries execute, resubmitting the same wrong number.

Neither is fixed by a schedule. A wrong number stays wrong until a human types the right one.

Two entries, one meaning

Both codes are documented with the same sentence, the card number is incorrect, and the same remedy, trying again with the correct card number. Like incorrect_cvc and invalid_cvc, which our CVC guide covers, the pair differ in name but not in documented substance.

Where they do differ is retry treatment. The nine code list in Stripe's Smart Retries documentation names incorrect_number and not invalid_number. For incorrect_number, scheduled retries continue but only execute after a new payment method is obtained. For invalid_number, the schedule runs normally.

Why the retry treatment barely matters here

This is a rare case where being on or off the hard decline list changes little. A retry resubmits what is stored. If what is stored is a wrong card number, the executed retry for invalid_number and the withheld retry for incorrect_number end in the same place: no successful payment until the customer re-enters their card.

At checkout that mostly solves itself. Stripe's card declines guide notes that Checkout gives the customer feedback when a card declines and lets them try again on the spot, and a mistyped number is the classic case.

On a subscription renewal, nobody is typing. A stored number that the issuer now rejects means the stored details and the issuer's records disagree, and the fix is the documented one: the customer enters the correct number, which for a renewal means a dunning email with a card update link.

Triage in practice

Check where the failure happened. A checkout failure with one of these codes usually resolves within minutes by the customer's own hand, and needs nothing from you.

A renewal failure needs the email. For incorrect_number the retry engine is parked anyway, so the email is the only active channel. For invalid_number the retries will run, but treat them as background noise rather than a recovery plan, and send the same email. The dunning email generator has copy for both.

Questions people actually ask

Is incorrect_number a hard decline?

Yes. It is one of the nine codes in Stripe's Smart Retries documentation for which Stripe cannot automatically retry the payment. Scheduled retries continue but only execute once a new payment method is added.

Is invalid_number a hard decline?

It is not on the nine code list, so Stripe retries it on schedule. But the documented condition, an incorrect card number, does not improve with time, so the retries resubmit the same wrong number.

What is the difference between incorrect_number and invalid_number?

In Stripe's decline codes reference, nothing: both are documented as the card number being incorrect, with the customer needing to try again using the correct number. The difference is that incorrect_number stops retry execution and invalid_number does not.

How does a stored card start failing with a wrong number?

The failure means the number on file and the issuer's records no longer agree. Whatever the cause, the documented remedy is the same: the customer re-enters the correct card details, which for a subscription means a dunning email with an update link.

Where this came from

Checked against primary sources on 13 August 2026. If Stripe changes something and this page has not caught up, tell us and it gets fixed.

If you would rather not build this yourself

RecoverFlow watches your Stripe account for failed subscription payments, stops retrying the ones that cannot succeed, and emails the customers whose card simply needs replacing. It charges 25% of what it can attribute to a specific action it took, with a $29 monthly floor and a $299 monthly ceiling, and the floor is waived for the first 30 days.

It is early. It is run by one person. If Stripe's own free retry settings are enough for you, use those instead, and there is a page on this site that says exactly when that is the right call.

See how the pricing works