Test Your Integration
You can validate your 3DS Authentication integration by using the 3DS Emulator provided by the payment gateway. To begin testing, log in with your test merchant profile. This profile should include the "TEST" prefix, as supplied by your payment service provider.
The emulator supports a variety of test card scenarios to simulate different 3DS outcomes. These test cards do not replicate the behavior of Access Control Servers (ACS).
The gateway supports 3DS testing for both browser-based (web authentications) and SDK/in-app channels (mobile integrations) channels. This guide covers the following topics:
Test 3DS functionality: Browser integration
Follow these steps to test 3DS functionality:
- Use a test card from the 3DS Test Cards table when submitting the INITIATE AUTHENTICATION request for your TEST merchant profile.
Use the expiry code "01/39" to get a successful authorization or payment in an end-to-end testing flow. - Set
authentication.channel = PAYER_BROWSER
andauthentication.purpose = 'PAYMENT_TRANSACTION'
. - Check if the authentication is available (
authentication.version
=3DS2). - Submit an AUTHENTICATE PAYER request.
- Insert the contents of the
authentication.redirect.html
field into the page displayed to the payer, which redirects the payer's browser to the 3DS Emulator challenge page.
The 3DS Emulator redirects the payer's browser back to your website when the authentication is complete. - Select a specific 3DS authentication result from the drop-down menu in the 3DS Emulator. See the values in the following Transaction Status Options in the 3DS Emulator table.
- Select a successful authentication result if you want to reference this authentication transaction in a subsequent AUTHORIZE or PAY request and want the financial transaction to be successful.
- Use the transaction ID for this 3DS authentication in the
authentication.transactionId
field of a subsequent AUTHORIZE or PAY transaction request.
Browser integration 3DS test cards
In the table,
- The ACS Method Call column defines whether the card supports the ACS method.
- The transStatus and transStatusReason columns define the values returned in the
authentication.3ds2.transactionStatus
andauthentication.3ds2.statusReasonCode
fields, respectively.
The following table lists the cards you can use to test the 3DS functionality.
Test Cards | Purpose | Card Number | 3DS2 Enrolled | ACS Method Call | tranStatus | tranStatusReason | ECI | Authentication Token |
---|---|---|---|---|---|---|---|---|
Mastercard | Challenge | 5123450000000008 2223000000000007 |
Yes | Yes | C | - | - | - |
Frictionless | 5123456789012346 | Yes | Yes | Y | - | 02 | mHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
Frictionless | 5555555555000018 | Yes | No | Y | - | 02 | mHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
Authentication Attempted | 5500005555555559 | Yes | No | A | - | 01 | nHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
Authentication Rejected | 5506900140100503 | Yes | No | R | 04 | - | - | |
Error during INITIATE AUTHENTICATION operation resulting in Generic Error Response | 5210760000000004 | Exception | - | - | - | - | - | |
Error during AUTHENTICATE PAYER operation resulting in Generic Error Response | 5455031257390496 | Yes | No | Exception | - | - | - | |
5455031252665454 | Yes | No | Exception | - | - | - | ||
Authentication Unavailable Error during Authenticate Payer operation resulting in a response of authenticationStatus = AUTHENTICATION_UNAVAILABLE | 5123459999998221 | Yes | No | Recoverable Exception | - | - | - | |
Visa | Challenge | 4440000009900010 | Yes | No | C | - | - | - |
Frictionless | 4440000042200014 | Yes | Yes | Yes | - | 05 | mHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
Authentication Attempted | 4440000042200022 | Yes | No | A | - | 06 | nHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
American Express | Challenge | 340000099900051 | Yes | No | C | - | - | - |
Frictionless | 340353278080900 | Yes | Yes | Yes | - | 05 | mHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
Maestro | PSD2 Exemptions and Trusted Merchants | 5000000000000000005 | Yes | No | No | 81 | 06 | kNyn+7YFi1EUAREAAAAvNUe6Hv8= |
JCB | Challenge | 3528249999991755 | Yes | Yes | C | - | - | - |
Challenge | 3528249999991748 | Yes | No | C | - | - | - | |
Frictionless | 3528249999991821 | Yes | Yes | Yes | - | 05 | mHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
Authentication Rejected | 3528249999981236 | Yes | Yes | R | - | - | - | |
Diners | Challenge | 3600000000000115 | Yes | Yes | C | - | - | - |
Challenge | 3600000000000123 | Yes | No | C | - | - | mHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
Frictionless | 3600000000000131 | Yes | Yes | Yes | - | 05 | mHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
Authentication Rejected | 3600000000000172 | Yes | Yes | R | - | - | - | |
Discover | Challenge | 6445644564456445 | Yes | Yes | C | - | - | - |
Challenge | 6445644564456460 | Yes | No | C | - | - | mHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
Frictionless | 6445644564456411 | Yes | Yes | Yes | - | 05 | mHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
Authentication Rejected | 6445644564456155 | Yes | Yes | R | - | - | - | |
MASTERCARD_ITMX | Frictionless | 5594509999999006 | Y | Yes | Y | - | - | mHyn+7YFi1EUAREAAAAvNUe6Hv8= |
Challenge | 5297649999999000 | Y | No | C | - | - | - | |
Authentication Attempted | 5391979999999048 | Y | No | A | - | - | mHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
Not Authenticated | 5391979999999055 | Y | No | N | 04 | - | - | |
Mastercard ITMX Frictionless V220 | 5391979999999014 | Y | No | Y | - | - | mHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
VISA_ITMX | Frictionless | 4215849999999008 | Y | No | Y | - | - | mHyn+7YFi1EUAREAAAAvNUe6Hv8= |
Challenge | 4943129999999004 | Y | No | C | - | - | - | |
Authentication Attempted | 4013679999999045 | Y | No | A | - | - | mHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
Not Authenticated | 4013679999999052 | Y | No | N | 04 | - | - | |
Visa ITMX Frictionless V220 | 4013679999999011 | Y | No | Y | - | - | mHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
UnionPay 3-D Secure | 3DS2 - Frictionless Payer Browser | 6201089999995464 | Y | Yes | Y | - | 05 | ABCQAwUANHQYQoQYARWTUEFnAAA= |
3DS2 - Challenge Payer Browser | 6201089999991455 | Y | Yes | C | - | - | - | |
3DS2 - Challenge Payer Browser -19 digit | 6213249999999991208 | Y | Yes | C | - | - | - | |
3DS2 - Authentication Attempted | 6201089999994020 | Y | No | A | - | 06 | ABCQAwUANHQYQoQYARWTUEFnAAA= | |
3DS2 - Unavailable Authentication | 6201080999990852 | Y | No | U | 01 | 07 | - | |
3DS2 -Not authenticated | 6201080999990423 | Y | No | N | 04 | - | - | |
PayPak | Challenge | 2205459999997832 2205439999999541 |
Yes | Yes | C | - | - | - |
Challenge | 2205589999999485 2205819999992101 |
Yes | No | C | - | - | - | |
Frictionless | 2205939999992560 |
Yes | Yes | Y | - | 02 | mHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
Frictionless | 2205789999999978 2205729999994371 |
Yes | No | Y | - | 02 | mHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
Authentication Attempted | 2206409999999295 | Yes | No | A | - | 01 | nHyn+7YFi1EUAREAAAAvNUe6Hv8= | |
Authentication Rejected | 2206389999998630 | Yes | No | R | 04 | - | - | |
Error during INITIATE AUTHENTICATION operation resulting in Generic Error Response | 2205919999999930 | Exception | - | - | - | - | - | |
Error during AUTHENTICATE PAYER operation resulting in Generic Error Response | 2205609999999655 | Yes | No | Exception | - | - | - | |
Authentication Unavailable Error during Authenticate Payer operation resulting in a response of authenticationStatus = AUTHENTICATION_UNAVAILABLE | 2205689999997123 | Yes | No | Recoverable Exception | - | - | - | |
Jaywan mono-badge test cards | 3DS2 - Challenge Payer Browser | 6690109900000010 | Yes | Yes | C | - | - | - |
3DS2 - Frictionless Payer Browser | 6690109000011008 | Yes | Yes | Y | - | 05 | ABCQAwUANHQYQoQYARWTUEFnAAA= | |
3DS2 - Challenge Payer Browser | 6690109000011008 | Yes | No | Y | - | 05 | ABCQAwUANHQYQoQYARWTUEFnAAA= | |
3DS2 - Authentication Attempted | 6690109000011024 | Yes | Yes | A | Not present | 06 | ABCQAwUANHQYQoQYARWTUEFnAAA= | |
3DS2 - Unavailable Authentication | 6690109000011032 | Yes | No | U | 01 | 07 | not present | |
3DS2 - Not authenticated | 6690109000011040 | Yes | Yes | N | 04 | not present | not present | |
Jaywan Co-badge Mastercard | Frictionless | 5175540000050008 | Yes | Yes | Y | Not Present | 02 | ABCQAwUANHQYQoQYARWTUEFnAAA= |
Challenge | 5175540000050099 | Yes | Yes | C | - | - | - | |
Jaywan Co-badge Jaywan | Frictionless | 5175540000050008 | Yes | Yes | Y | Not Present | 05 | ABCQAwUANHQYQoQYARWTUEFnAAA= |
Challenge | 5175540000050099 | Yes | Yes | C | - | - | - | |
Jaywan Co-badge Visa | Frictionless | 4439130000050003 | Yes | Yes | Y | - | 05 | ABCQAwUANHQYQoQYARWTUEFnAAA= |
Challenge | 4439130000050011 | Yes | Yes | C | - | - | - | |
Jaywan Co-badge Jaywan | Frictionless | 4439130000050003 | Yes | Yes | Y | - | 05 | ABCQAwUANHQYQoQYARWTUEFnAAA= |
Challenge | 4439130000050011 | Yes | Yes | C | - | - | - |
For a "C" transStatus, the following table lists the options that are available on the drop-down menu in the 3DS Emulator and the resulting values in the response.
Options | transStatus | challengeCancel | eci |
---|---|---|---|
Successful authentication |
Y | - | 05 / 02 |
Failed authentication |
N | - | 07 / 00 |
Cancelled authentication |
N | 01 | 07 / 00 |
Unable to authenticate | U | - | 07 / 00 |
Authentication rejected | R | - | 07 / 00 |
Test 3DS functionality: Mobile integration
Follow these steps to test 3DS functionality:
- Use a test card from the following 3DS Test Cards table when submitting the INITIATE AUTHENTICATION request for your TEST merchant profile.
Use the expiry code "01/39" to get a successful authorization or payment in an end-to-end testing flow. - Set
authentication.channel = PAYER_APP
andauthentication.purpose = 'PAYMENT_TRANSACTION'
. - Check if the authentication is available (
authentication.version
=3DS2). - Submit an AUTHENTICATE PAYER request.
- After the authentication is complete, the Mobile SDK receives a response:
-
Frictionless flow:
If the test card supports frictionless authentication, the Authenticate Payer response returnsauthenticationStatus = AUTHENTICATION_SUCCESSFUL
, and you can proceed to step 6. -
Challenge flow:
If the test card requires a challenge, the Authenticate Payer response returnsauthenticationStatus = AUTHENTICATION_PENDING
while the authentication process occurs. Once the challenge is completed, the Mobile SDK provides a recommendation to your application on whether to proceed with the transaction.
-
Frictionless flow:
- Once you are ready to process your payment, use the transaction ID for this 3DS authentication in the
authentication.transactionId
field of a subsequent AUTHORIZE or PAY transaction request.
Mobile SDK integration 3DS test cards
Test Cards | Purpose | Card Number | tranStatus | tranStatusReason | ECI | Authentication Token |
---|---|---|---|---|---|---|
Mastercard | Frictionless | 2223000000000023 | Y | - | 02 | xgQYYgZVAAAAAAAAAAAAAAAAAAAA |
Challenged-(OTP HTML) | 5123450000000008 | C | - | - | - | |
Challenged-(OTP Native) | 2223000000000007 | C | - | - | - | |
Not Authenticated | 5111111111111118 | N | 01 | 0- | - |
FAQs
The gateway returns error messages from the authentication servers. You can use error messages to identify which fields are causing your integration to break when an authentication request is sent. For example,
- Error Message:
An authentication scheme indicates that your acquirer does not onboard the authentication scheme for EMV 3DS. Contact your acquirer or PSP. - Error Cause:
Before you can start using the EMV 3DS functionality, your acquirer needs to onboard you with the respective authentication scheme. Contact your acquirer or PSP to check these values.
You can see the authentication details in the Merchant Administrator only when the payer authentication is complete. If the payer is still going through the challenge flow or abandons the process, there can be a delay before that transaction is visible on the Merchant Administration.
To see the current state of the authentication without delay, use the RETRIEVE ORDER or RETRIEVE TRANSACTION operation.