3DS Reasons

Reference guide for 3DS reason codes returned in transaction responses.

Overview

When processing 3D Secure (3DS) transactions, the API returns a numeric reason code in the tds object that provides detailed information about the outcome of the authentication process. This guide maps each reason code to its meaning.

Reason Code Reference

CodeMeaningDescription
1CARD_AUTHENTICATION_FAILEDCard authentication failed.
2UNKNOWN_DEVICEThe device is not recognized by the issuer.
3UNSUPPORTED_DEVICEThe device type is not supported for 3DS.
4EXCEEDS_AUTHENTICATION_FREQUENCY_LIMITThe cardholder has exceeded their authentication frequency limit set by their issuing bank.
5EXPIRED_CARDThe card has expired or an incorrect expiry date was entered.
6INVALID_CARD_NUMBERThe cardholder has entered an invalid card number.
7INVALID_TRANSACTIONThe cardholder's issuing bank will not authenticate the transaction at this time.
8NO_CARD_RECORDThe card number is not recognized by the issuing bank.
9SECURITY_FAILUREThe cardholder's issuing bank has encountered a security error.
10STOLEN_CARDThe card has been reported stolen.
11SUSPECTED_FRAUDThis transaction is suspected to be fraudulent.
12TRANSACTION_NOT_PERMITTED_TO_CARDHOLDERThe issuing bank does not permit the cardholder to complete this type of transaction.
13CARDHOLDER_NOT_ENROLLED_IN_SERVICEThe cardholder is not enrolled in the 3DS service.
14TRANSACTION_TIMED_OUT_AT_THE_ACSThe transaction timed out at the Access Control Server (ACS).
15LOW_CONFIDENCEThe cardholder's issuing bank does not have confidence to approve the transaction.
16MEDIUM_CONFIDENCEThe cardholder's issuing bank does not have enough confidence to approve the transaction.
17HIGH_CONFIDENCEThe cardholder's issuing bank has high confidence in approving the transaction.
18VERY_HIGH_CONFIDENCEThe cardholder's issuing bank has very high confidence in approving the transaction.
19EXCEEDS_ACS_MAXIMUM_CHALLENGESThe cardholder has exceeded the maximum number of challenges allowed by the ACS.
20NON_PAYMENT_TRANSACTION_NOT_SUPPORTEDNon-payment transactions are not supported.
21THREERI_TRANSACTION_NOT_SUPPORTED3-RI transactions are not supported.
22ACS_TECHNICAL_ISSUEThere was a technical issue after the cardholder completed the challenge.
23DECOUPLED_AUTHENTICATION_REQUIRED_BY_ACSDecoupled authentication is required by the ACS.
24DECOUPLED_MAX_EXPIRY_TIME_EXCEEDEDThe maximum expiry time for decoupled authentication has been exceeded.
25INSUFFICIENT_TIME_TO_AUTHENTICATEThere was insufficient time to authenticate the transaction.
26AUTHENTICATION_ATTEMPTED_BUT_NOT_PERFORMEDAuthentication was attempted but not performed.
27SCHEME_STATUS_REASONAuthentication has failed due to a reason determined by the card scheme.
28ERROR_RECEIVED_DOWNSTREAMAn error was received from a downstream system.

Example Response

Here's an example of a failed 3DS transaction with a reason code:

{
  "transaction_id": "a7e3fde5-5b83-44f4-9915-782bc7121717",
  "status": "tds_failed",
  "reason": "15",
  "tds": {
    "status": "failed",
    "reason": 15
  }
}

In this example, reason code 15 indicates LOW_CONFIDENCE — the cardholder's issuing bank does not have confidence to approve the transaction.

Handling 3DS Failures

When you receive a tds_failed status with a reason code:

  1. Check the reason code against this reference to understand what happened
  2. Inform the cardholder — Some reasons (like expired card or stolen card) require immediate action
  3. Retry if appropriate — Transient issues like ACS_TECHNICAL_ISSUE (22) may succeed on retry
  4. Contact support — For persistent issues, reach out to our support team with the transaction ID and reason code

Did this page help you?