3D Secure 2 Authentication
Important to Consider
To trigger specific 3D Secure 2 user journeys:
-
Include the cardHolderName as specified in the CardHolderName Table
The cardHolderName corresponds to an expected transaction result.
-
Ensure Judopay has enabled 3D Secure 2 on your sandbox tokens.
-
If 3D Secure 2 is not enabled on your tokens, the test transaction will be successful, however it will not have followed the 3D Secure 2 verification process.
-
Contact Customer Support to set this up.
-
-
The following 3D Secure 2 scenarios are intended for merchants who are directly integrating with Judopay, to test the 3D Secure 2 frictionless and challenge flows.
If you are integrating using Judopay's front end / UI SDK, the 3D Secure 2 flows are handled on your behalf.
CardHolderName Table
To trigger a challenge response without device details, from the CardHolderName table, use cardHolderName:
-
Frictionless NoMethod
with challengeRequestIndicator=challengeAsMandate.
If you specify a different cardHolderName to any found in the table below, the Frictionless Successful flow will be the default flow.
CardHolderName |
Flow Type |
Expected Responses |
ECI* |
---|---|---|---|
Frictionless Successful |
Frictionless |
DeviceDetails Receipt |
05 |
Frictionless NoMethod |
Frictionless | Receipt | 05 |
Frictionless AuthNotSuccess |
Frictionless |
DeviceDetails Error code 177 |
06 |
Frictionless AuthFailed |
Frictionless |
DeviceDetails Error code 165 |
07 |
Frictionless IssuerReject |
Frictionless |
DeviceDetails Error code 186 |
07 |
Frictionless AuthenticationError |
Frictionless |
DeviceDetails Error code 182 |
07 |
Challenge Required |
Challenge |
DeviceDetails Challenge Receipt |
N/A |
*Electronic Commerce Indicator
The Electronic Commerce Indicator (ECI) as received from the 3D Secure Server. Denotes the 3D Secure Authentication status, used to show liability status.
For more information, see Liability Shift.
You should check how your app responds to the different transaction results.
Testing 3D Secure 2 Flows (Frictionless Flow)
Request Example:
Authorisation Successful with 3D Secure 2
To trigger specific 3D Secure 2 user journeys, include the cardHolderName as specified in the CardHolderName Table
The cardHolderName corresponds to an expected transaction result.
cardHolderName is case sensitive, make sure it appears as below:
Card Type |
CardHolderName |
Card Number |
Expiry Date |
Start Date |
CV2 |
Address |
Expected Outcome* |
---|---|---|---|---|---|---|---|
Visa |
Frictionless Successful |
4976 0000 0000 3436 |
12/25 |
11/20 |
452 |
32 Mulberry Street, Violetdell VL14 8PA |
The 3D Secure 2 flow will return conditional steps should additional information be required from the consumer.
In response to the initial call:
No additional information is required:
|
![]() Step One: Initial request -> Device Details response:
Step Two: Receipt response:
|
|||||||
Visa |
Frictionless NoMethod |
4921 8100 0000 5462 |
12/25 |
11/20 |
441 |
11 Jackson Close, Stoneden, Wildefay WL2 7DQ |
The 3D Secure 2 flow will return conditional steps should additional information be required from the consumer.
In response to the initial call, no additional information is required:
|
![]() Step One: Receipt response:
|
*The expected outcome shows the conditional steps within the 3DS 2 flow. Depending on how you are integrating with Judopay, you may only see the receipt or error response. For example, if you are using Judopay's front end / UI SDK, this will handle the conditional steps on your behalf. You will not see the conditional device details check step, as this occurs in the background.
It is useful to have an understanding of the full 3DS 2 payment flow, including the conditional steps, to verify how it relates to the user journey in your app. For more information on the 3DS 2 flow, see Overview of the Frictionless and Challenge Flow.
Testing 3D Secure 2 Flows (Non-Frictionless Flow)
To trigger specific 3D Secure 2 user journeys, include the cardHolderName as specified in the CardHolderName Table
The cardHolderName corresponds to an expected transaction result.
cardHolderName is case sensitive, make sure it appears as below:
Card Type |
CardHolderName |
Card Number |
Expiry Date |
Start Date |
CV2 |
Address |
Expected Outcome* |
---|---|---|---|---|---|---|---|
Visa |
Frictionless AuthNotSuccess |
422169 00000 |
12/25 |
11/20 |
125 |
274 Grove Street, Rayvale, Vertland VT22 6JN |
The 3D Secure 2 flow will return conditional steps should additional information be required from the consumer.
In response to the initial call:
In response to the call made to
|
![]() Step One: Initial request -> Device Details response:
Error response:
|
|||||||
Visa |
Frictionless AuthFailed |
492181 0000 |
12/25 |
11/20 |
875 |
4 Laurel Drive, Prywynne, Swynbeach SY7 0JB |
The 3D Secure 2 flow will return conditional steps should additional information be required from the consumer.
In response to the initial call:
In response to the call made to
|
![]() Step One: Initial request -> Device Details response:
Error response:
|
|||||||
Visa |
Frictionless IssuerReject |
4792840 0000 |
12/25 |
11/20 |
654 |
9 Pearl Street, Dracmeadow, Byhedge BH11 9BB |
The 3D Secure 2 flow will return conditional steps should additional information be required from the consumer.
In response to the initial call:
In response to the call made to
|
![]() Step One: Initial request -> Device Details response:
Error response:
|
|||||||
Visa |
Frictionless AuthenticationError |
4921810 0000 |
12/25 |
11/20 |
217 |
54 Madison Avenue, Aldapple, Rayland RL5 0HA |
The 3D Secure 2 flow will return conditional steps should additional information be required from the consumer.
In response to the initial call:
In response to the call made to
|
![]() Step One: Initial request -> Device Details response:
Error response:
|
|||||||
Visa |
Challenge Required |
4792840 0000 |
12/25 |
11/20 |
654 |
9 Pearl Street, Dracmeadow, Byhedge BH11 9BB |
The 3D Secure 2 flow will return conditional steps should additional information be required from the consumer.
In response to the initial call:
In response to the call made to
In response to the call made to
|
![]() Step One: Initial request -> Device Details response:
Step Two: Resume 3ds2 request -> Challenge Required response:
Step Three: Complete 3ds2 request -> Receipt response:
|
*The expected outcome shows the conditional steps within the 3DS 2 flow. Depending on how you are integrating with Judopay, you may only see the receipt or error response. For example, if you are using Judopay's front end / UI SDK, this will handle the conditional steps on your behalf. You will not see the conditional device details check step, as this occurs in the background.
It is useful to have an understanding of the full 3DS 2 payment flow, including the conditional steps, to verify how it relates to the user journey in your app. For more information on the 3DS 2 flow, see Overview of the Frictionless and Challenge Flow.
For a list of possible error codes, types and descriptions, see Error Codes and Descriptions