Skip to content

What is a decline code? (card decline codes explained)

Jay StevensBy Jay Stevens · Founding EngineerReviewed by Jordan MederichUpdated 4 min read
Summarize with AI

Quick answer

A decline code is a standardized numeric response that the cardholder's issuing bank returns when it refuses a charge. The code explains the reason — insufficient funds (51), expired card (54), suspected fraud (34), closed account (46) — and tells you whether retrying the same card makes sense. ISO 8583 defines the base codes; processors like Stripe, NMI, and Authorize.net map them to their own labels. Reading the code correctly determines your recovery action: retry soft declines on a smart schedule, and route hard declines to a payment-method update.

What a decline code is

When a card charge fails, it is not your processor rejecting it — it is the cardholder's issuing bank. The bank sends back a numeric code explaining why: insufficient funds, an expired card, suspected fraud, or a closed account. That code is the decline code.

Every decline code maps to a reason, and the reason tells you whether the same card has any chance of working on a later attempt. That single distinction — retryable or not — drives your entire recovery playbook.

How decline codes work

The base standard is ISO 8583, a messaging protocol the card networks use to move authorization requests between acquirers, networks, and issuers. When the issuer declines a charge, it returns a two-digit (or three-digit) response code plus an optional reason text.

Your processor — Stripe, NMI, Authorize.net, Whop, GoHighLevel — receives that raw code and translates it into its own label. Stripe calls code 51 'insufficient_funds'; NMI returns 'DECLINE' with a reason_text. The mapping differs by processor, but the underlying ISO codes are consistent.

Common decline codes and what they mean

Some codes appear far more often than others, and the most frequent ones are also the most recoverable:

  • 51 — Insufficient Funds: the card is valid but the balance is short. Retry when funds are likely available.
  • 54 — Expired Card: the card passed its expiration date. Request an updated card.
  • 05 — Do Not Honor: a generic refusal the issuer uses when it does not want to reveal the reason. Treat as a cautious soft decline.
  • 41 / 43 — Lost or Stolen Card: the card was reported compromised. Do not retry; ask for a new card.
  • 46 — Closed Account: the account no longer exists. Request a new payment method.
  • 34 — Suspected Fraud: the issuer flagged the charge. Often needs customer confirmation or a new card.

How decline codes shape recovery

Knowing the code is only useful if it changes what you do. Soft-decline codes (51, 61, 65) mean the card itself is valid — you retry on a smart schedule timed to when funds are likely available. Hard-decline codes (41, 43, 46, 54) mean the card will never work — you skip retries and ask the customer for a new card immediately.

Revatto reads the decline code on every failed payment, routes soft declines to AI-timed retries, and routes hard declines to an outreach request for updated billing details. A real team handles the messaging over email and SMS under your brand, and you only pay when a payment is recovered — 20% of the first recovered payment, $0 monthly.

See what Revatto would recover for you

Failed payments recovered automatically — no engineering, no manual chasing. We do the work; you keep the revenue.

See Your Recovery Potential

Frequently asked questions