Decline codes
Authorize.Net response reason codes explained
Checked
Authorize.Net returns a response code (1 approved, 2 declined, 3 error, 4 held for review) and a response reason code that says why. Some reasons are the shopper's bank declining, some are your own fraud filters, and many are setup or integration errors no shopper can fix. Each page below explains one reason code in plain words, whether a retry can work, and what PlatformDTC does when it sees that code on a store's own Authorize.Net account.
| Reason code | Meaning |
|---|---|
| 2 | The card issuer, or the processor on its behalf, refused the payment without a specific reason. |
| 3 | The issuer wants a voice authorization (a phone call) before it will approve this charge. |
| 4 | The processor reports the card must be picked up: the issuer wants it out of use. |
| 41 | Your own FraudScreen.Net threshold blocked the payment because its fraud score was too high. |
| 141 | FraudScreen.Net rejected the payment, but the automatic void of the authorization did not go through. |
| 44 | The processor declined because the card's security code (CVV) did not match the bank's records. |
| 45 | Both the address check and the security code check hit the rejection rules you set. |
| 145 | Your AVS and card code filters rejected the sale, but the automatic void of the authorization failed. |
| 65 | Your card code (CVV) filter rejected the payment based on the security code result. |
| 165 | A security code mismatch hit your settings and the automatic void of the authorization failed. |
| 27 | The billing address entered does not match the address the card's bank has on file. |
| 127 | An AVS mismatch declined the sale and the automatic void failed, so a hold may stay on the card. |
| 128 | The shopper's bank does not currently allow transactions on this account. |
| 250 | The payment came from an IP address you blocked in Authorize.Net's fraud tools. |
| 251 | A Fraud Detection Suite filter declined the payment, including the blocked-IP filter. |
| 252 | The payment was accepted but is held for your review by a fraud filter set to hold. |
| 253 | The card was authorized, but a fraud filter is holding the payment for your review. |
| 254 | You or your team declined the payment after reviewing a held transaction. |
| 295 | The prepaid card only covered part of the amount; another payment is needed for the rest. |
| 36 | The bank approved the card at checkout, but the payment failed when it was settled. |
| 6 | The card number failed validation: a typo, a missing digit, or not a real card number. |
| 37 | The card number was rejected as invalid (same text as code 6). |
| 315 | The processor declined the card number as invalid. |
| 7 | The expiry date was sent in the wrong format or is not a valid date. |
| 316 | The processor rejected the card's expiry date as invalid. |
| 8 | The card's expiry date has passed, so it can no longer be charged. |
| 317 | The processor declined because the card has expired. |
| 78 | The security code (CVV) sent was in the wrong format, for example the wrong number of digits. |
| 11 | An identical transaction was sent within the duplicate window (two minutes by default). |
| 318 | The processor rejected the request as a duplicate of an earlier transaction. |
| 17 | Your Authorize.Net gateway is not set up to accept this card brand. |
| 28 | Your processor platform is not set up to accept this card brand. |
| 56 | The account only processes eChecks, so card payments are refused. |
| 39 | The currency sent is not the one your Authorize.Net account is set up for. |
| 49 | The amount is above the maximum transaction amount allowed on your account. |
| 5 | The amount field was missing or not a valid number. |
| 13 | The API Login ID is wrong, sent to the wrong environment, or the account is inactive. |
| 123 | A personal user login was used to connect software; it needs the API Login ID instead. |
| 124 | Your processor does not support transactions flagged as recurring. |
| 153 | The wallet payment data (such as Apple Pay) could not be processed as sent. |
| 154 | Apple Pay is not switched on for this Authorize.Net account. |
| 289 | Your processor will not run a $0 card check for this card brand. |
| 19 | Authorize.Net did not get an answer from the card processor (a connection problem). |
| 20 | Authorize.Net lost contact with the card processor before getting a response. |
| 35 | Your merchant account was set up incorrectly at the processor. |
| 57 | The processor could not interpret data in the request, such as a bad CVV length or ZIP format. |
| 63 | Often your business details (such as country) are wrong for a TSYS processor account. |
| 120 | The original transaction timed out and the automatic void of it also failed. |
| 16 | The transaction ID you referenced (for a refund or void) is not on this Authorize.Net account. |
| 50 | You can only refund a settled transaction; this one has not settled yet. |
| 54 | The refund can't be issued: unsettled, wrong type or currency, bad ID, or settled over 180 days ago. |
| 55 | This refund plus earlier refunds would be more than the original payment. |
| E00027 | The API reports the transaction failed; the real reason is in the transaction's errorCode. |
| E00007 | The API Login ID or Transaction Key is wrong, or sent to the wrong environment. |
| E00001 | Authorize.Net hit an internal error; the request was not completed. |
| E00003 | The request sent to the API was malformed, so Authorize.Net could not read it. |
| E00013 | One field in the request has an invalid value; the response text names it. |
| E00039 | A customer profile with the same details already exists on the account. |
| E00040 | The customer or payment profile you referenced does not exist on this account. |
| E00044 | Saved customer profiles (CIM) are not switched on for this account. |
| E00009 | The account is in Test Mode, so the request is not processed. |
Bank declines, your filters, or setup errors
Codes 2, 3, 4 and 128 come from the card's bank. Codes 27, 41, 44, 45, 65 and 250 to 254 involve address checks, security code checks or fraud filters, several of which you configure yourself in the Merchant Interface.
Codes such as 13, 17, 28, 35, 39 and 63 are account setup problems; every shopper will hit them until the setup is fixed. Codes 19, 20 and E00001 are temporary processing errors.
Retry rules
Card networks limit retries. Visa never allows a reattempt on its "issuer will not approve" responses (such as pick up card, closed account or stop payment) and caps other declines at 15 reattempts in 30 days. Mastercard advice codes 03 and 21 mean do not try again.
On subscription renewals PlatformDTC reads the reason code the same way it reads a Stripe decline: expired, wrong or blocked cards (such as 4, 6, 7, 8, 27, 44, 251 and 317) are not retried and the customer is asked for a new card; a general decline (2) or referral (3) gets one retry 48 to 72 hours later; temporary processing errors are deferred and retried without counting against the customer.
For developers
The overall result is transactionResponse.responseCode (1 Approved, 2 Declined, 3 Error, 4 Held for Review). The reason code is transactionResponse.errors[0].errorCode with errorText; API-level results use messages.message[0].code (I000xx success, E000xx error).
Frequently asked questions
- What is the difference between Authorize.Net response codes and reason codes?
- The response code is the overall result (1 approved, 2 declined, 3 error, 4 held for review); the response reason code explains why.
- Does PlatformDTC work with Authorize.Net?
- Yes. A store can connect its own Authorize.Net account for checkout and subscription renewals; card details go through Authorize.Net's Accept.js, so card numbers never touch PlatformDTC's servers.