3-D Secure authentication payment results

Payments return 3-D Secure authentication data in the authentication object. This object is available on the following endpoints and also for the payment status change notification:

  • POST /v1/payments
  • GET /v1/payments
  • GET /v1/payments/{paymentId}/status

The authentication object has two parts:

requestedWhat you asked for on the payment request:
threeDSecureRequired, challengeRequested and automaticallyStepUp Returned at any status, and holds only the fields you sent.
resultThe authentication outcome reported by the PSP. Only returned once the payment has left AUTHORIZATION_PENDING, so it is never present while 3-D Secure is still in progress.

Any field that is missing or unrecognised is omitted. If the PSP returned no authentication outcome, result is omitted; if both parts are empty, authentication is omitted entirely.

The result part of the authentication object has the following fields and options:

result fieldsOptions
enrolledENROLLED, NOT_ENROLLED, UNKNOWN
authenticationStatusSUCCESS, ATTEMPTED, FAILED, UNAVAILABLE, REJECTED, CHALLENGE_REQUIRED, EXEMPT, NOT_ENROLLED
flowFRICTIONLESS, CHALLENGE
version3-D Secure protocol version, for example, 2.2.0
eciElectronic Commerce Indicator, normalised to a two digit zero padded string, for example,05.

Values are normalised across PSPs, so the same authenticationStatus means the same thing whichever PSP processed the payment. Not every PSP returns every field. Refer to Availability below.

ECI values differ by scheme

Visa and American Express use 05 (authenticated), 06 (attempted) and 07 (not authenticated). Mastercard uses 02, 01 and 00 respectively.

Wallets

PSPs do not return 3-D Secure results for Apple Pay and Google Pay. Where an ECI is present in the decrypted wallet payload it is returned as result.eci, and the other result fields are omitted.

External 3-D Secure

3-D Secure data you supply through the externalThreeDSecure object is not echoed back in authentication.

Example

authentication sits alongside avsResult and cvvResult in the response.

{
  "status": "AUTHORIZED",
  "amount": 151.00,
  "currencyCode": "GBP",
  "authentication": {
    "requested": {
      "threeDSecureRequired": true,
      "challengeRequested": true,
      "automaticallyStepUp": false
    },
    "result": {
      "enrolled": "ENROLLED",
      "authenticationStatus": "SUCCESS",
      "flow": "CHALLENGE",
      "version": "2.2.0",
      "eci": "02"
    }
  }
}

PSP Availability


Did this page help you?