retries.com | Payment Infrastructure Reference

Visa Decline Code Categories Explained

In 2020, Visa restructured its decline codes into four categories that define exactly how merchants should handle each type of decline. Before this, issuers were defaulting the majority of declines to generic codes like 05, giving merchants almost no signal about whether to retry. The category system fixes this by grouping every decline code into one of four buckets, each with explicit retry rules and fee structures.

Why Visa Introduced Categories

Before 2020, the decline code ecosystem was a mess. Issuers had access to dozens of specific response codes but routinely mapped everything to Code 05 (Do Not Honor). One analysis found that over 60% of Visa declines came back as Code 05, even when the actual reason was as specific as "closed account" or "suspected fraud."

This made life difficult for merchants. Code 05 is technically retriable, but if the underlying reason is a closed account, retrying wastes money and risks penalties. Visa's category system was designed to force clarity. By assigning every decline code to a category with specific retry rules and financial penalties for violations, Visa created an incentive structure that pushes both issuers and merchants toward better behavior.

Category 1: Issuer Will Never Approve

These are permanent declines. The card is closed, the account is blocked, or the transaction is fundamentally invalid. Zero retries are permitted.

Codes: 04, 07, 12, 15, 41, 43, 46, 57, R0, R1, R3

Any reattempt on a Category 1 decline triggers an Excessive Reattempt Fee: $0.10 per attempt for domestic transactions, $0.15 for cross-border. This applies to every single retry, not just retries beyond some threshold.

Common Category 1 scenarios:

  • 04, 41, 43: Card reported lost, stolen, or flagged for capture
  • 07: Pick up card, special condition (fraud confirmed)
  • 12: Invalid transaction type
  • 15: No such issuer
  • 46: Closed account
  • 57: Transaction not permitted to cardholder
  • R0, R1, R3: Stop payment order, revocation of authorization, revocation of all authorizations

The correct response to any Category 1 code: stop billing immediately, mark the payment method as invalid, and prompt the customer for a new card.

Category 2: Issuer Cannot Approve Now

Temporary declines where the card is valid but something is preventing approval right now. You get up to 15 retries within 30 days.

Codes: 03, 19, 39, 51, 59, 61, 65, 75, 86, 91, 96, N3, N4, Z5

Category 2 is where most of your recoverable revenue lives. Code 51 (Insufficient Funds) is the highest-volume code in this category, and it has the best recovery rate of any decline code when retried at the right time.

Key codes:

  • 51: Insufficient funds. The highest recovery potential of any decline code
  • 91: Issuer unavailable. Pure infrastructure failure, the card was never evaluated
  • 96: System malfunction. Transient by nature, similar to Code 91
  • 61: Exceeds withdrawal limit. Time-based limits that reset periodically
  • 65: Exceeds withdrawal frequency. Velocity controls that clear over time
  • 75: Allowable PIN tries exceeded. Cardholder needs to reset their PIN

After 15 attempts in 30 days, each additional attempt incurs the Excessive Reattempt Fee. The optimal retry timing for each of these codes is different, and getting it right requires understanding the underlying cause. A balance-related decline has a very different recovery profile than an infrastructure failure.

Category 3: Data Quality

The transaction data itself has an error. Fix the data, then retry. You get 15 retries within 30 days, same as Category 2.

Codes: 14, 54, 55, 70, 82, 1A, 6P, N7

Category 3 declines are not about the cardholder's account status. They are about bad input data. Retrying with the same data will produce the same result every time.

  • 14: Invalid card number. PAN failed Luhn check or BIN is unrecognized
  • 54: Expired card. The expiry date has passed. Use Account Updater to get the new card details
  • 55: Incorrect PIN. Do not auto-retry; prompt cardholder
  • 82: Negative CAM, dCVV, iCVV, or CVV results. The security code is wrong
  • 1A: Additional customer authentication required (3DS)
  • 6P: Verification data failed
  • N7: Decline for CVV2 failure

The correct handling: identify which data element is wrong, fix it (either programmatically via Account Updater or by prompting the customer), and then retry.

Category 4: Generic Declines

The catch-all bucket. These are declines where the issuer is not providing a specific reason.

Codes: 05, 62, 63

You get 15 retries within 30 days. But Category 4 has an additional constraint: Visa caps Category 4 usage at 5% of an issuer's total declines. Issuers that exceed this cap face fines, which creates downward pressure on the overuse of Code 05.

Code 05 is the single most common decline code across all networks. On Visa, it represents roughly 40-50% of all declines despite being generic. Around half of Code 05 declines mask what should be a hard decline (fraud, closed accounts), and the other half mask recoverable conditions (insufficient funds, temporary holds).

Because Code 05 is a mixed bag, naive retry strategies hit a ceiling fast. Fixed-schedule retries treat every Code 05 identically, but a Code 05 that masks insufficient funds has a completely different recovery profile than one that masks fraud. Separating the recoverable half from the non-recoverable half is the central challenge of decline recovery, and it requires signals beyond the response code itself.

The 2020-2021 Reclassification

Visa did not get the category assignments right on the first try. Several codes were reclassified between 2020 and 2021 based on merchant feedback and data analysis.

The most notable change: Code 78 (Blocked, first used) was originally placed in Category 1 (never approve). Visa moved it to Category 2 (cannot approve now) after data showed that many Code 78 declines resolved on their own. A card that was "blocked" at first use often just needed the cardholder to call their bank and verify the transaction.

Several other codes shifted categories during this period. The practical implication: if you hardcoded category mappings in 2020, audit them against Visa's current published list. Visa updates the category assignments in their Visa Transaction Processing Rules document, published annually.

Excessive Reattempt Fees

Visa charges Excessive Reattempt Fees when merchants exceed the permitted retry limits for a given category:

  • Category 1: $0.10 domestic / $0.15 cross-border per attempt. Every retry is a violation because zero retries are allowed.
  • Categories 2, 3, 4: $0.10 domestic / $0.15 cross-border per attempt beyond the 15th retry in a 30-day window.

These fees are assessed at the acquirer level and passed through to the merchant. They appear on your monthly processing statement, often buried in a line item labeled "reattempt fees" or "network assessment fees."

For high-volume subscription businesses, these fees can accumulate quickly. A merchant processing 100,000 recurring payments per month with a 7% decline rate and a naive retry strategy (4 retries on all declines, including Category 1) could generate $2,800+ in monthly reattempt fees on Visa volume alone.

Accessing Visa Categories via Stripe

Stripe exposes the raw Visa decline code in the network_decline_code field on the Charge object:

charge.payment_method_details.card.network_decline_code

To determine the Visa category, you need two things:

  1. Confirm the card brand is Visa: check charge.payment_method_details.card.brand === 'visa'
  2. Map the network_decline_code to the category using Visa's published code-to-category table

Stripe does not provide the category directly. You need to maintain a mapping in your application. Here is a simplified version:

const VISA_CAT1 = ['04', '07', '12', '15', '41', '43', '46', '57', 'R0', 'R1', 'R3']; const VISA_CAT3 = ['14', '54', '55', '70', '82', '1A', '6P', 'N7']; const VISA_CAT4 = ['05', '62', '63']; // Everything else in Visa's known code list falls into Category 2

For Mastercard declines, use network_advice_code instead (see the Merchant Advice Codes guide).

Related Decline Codes

04 Pick up card The issuer has flagged this card for capture 05 Do not honor Generic refusal from the issuer 14 Invalid card number The PAN failed Luhn check or is not in any issuer's range 41 Lost card, pick up Reported lost by the cardholder 43 Stolen card, pick up Reported stolen 51 Insufficient funds The cardholder's available balance is below the transaction amount 54 Expired card The card's expiration date has passed 57 Transaction not permitted This card type is restricted from this transaction type or merchant category 91 Issuer unavailable The issuer's system is down or unreachable

Related Guides

Mastercard Merchant Advice Codes (MACs)
Complete reference for Mastercard MACs: MAC 01-42, retry windows, Stripe integration, TPE penalties, and how to use MACs to optimize payment retries
Hard vs Soft Declines: The Complete Guide
How to classify hard and soft declines across Visa, Mastercard, and Amex

See Decline Codes in Action

Watch how response codes flow through a complete ISO 8583 authorization lifecycle.

Open Transaction Simulator