Are you looking for test card numbers?

Would you like to contact support?

Atenção, esta página não se encontra disponível em Português
Classic-integration icon

Migrating to Adyen 3DS2 SDK version 2.2.0

Find out how you can update your integration to the latest Android and iOS 3DS2 SDKs.

This page is for our classic Direct API (/authorise) integration. If you are integrating using our Checkout APIs, refer to the Native 3D Secure 2 documentation instead.

The new Adyen 3DS2 SDK version 2.2.0 for iOS and Android supports:

  • 3D Secure protocol version 2.2.0 in addition to 2.1.0.
  • Specifying which 3D Secure 2 protocol version to use when creating a transaction.
  • Sending your app URL in the threeDSRequestorAppURL parameter for out-of-band (OOB) authentication in in-app transactions.

    In an OOB authentication, the cardholder performs the challenge flow outside of the 3DS2 SDK. The authenticating app uses the threeDSRequestorAppURL to call your app after an OOB authentication occurs.


Even if you do not intend to support 3D Secure protocol 2.2.0 for in-app transactions, we recommend that you still upgrade to the newest 3DS2 SDK version to get the latest updates and fixes.

If you would rather use a previous version of the 3D Secure protocol, our 3DS2 SDK lets you specify the protocol version when you create a transaction.

Migrate to Adyen 3DS2 SDK version 2.2.0

1. Install the latest versions:

2. Offer additional card schemes

If you want to offer other cards schemes in addition to Visa and Mastercard, you must you add the SDK version to your /authorise or /payments request:

Add sdkVersion to the threeDS2RequestData:

   "threeDS2RequestData" : {
       "sdkVersion": "SDK_VERSION",

If you don't include the correct SDK version, the transaction can fail.

Add threeDS2SdkVersion to paymentMethod:

   "paymentMethod" : {
       "threeDS2SdkVersion": "SDK_VERSION",

3. Include the message version

When you initialize the SDK, you need to include the message version from additionalData.threeds2.threeDS2ResponseData.messageVersion from the /authorise response.

Specify the message version in the transactionWithMessageVersion when you initialize the ADYService class.

   [ADYService serviceWithParameters:parameters appearanceConfiguration:nil completionHandler:^(ADYService *service) {
       NSError *error = nil;
       ADYTransaction *transaction = [service transactionWithMessageVersion:"MESSAGE_VERSION" error:&error];
       if (transaction) {
           ADYAuthenticationRequestParameters *authenticationRequestParameters = [transaction authenticationRequestParameters];
           // Submit the authenticationRequestParameters to /authorise3ds2.
       } else {
           // An error occurred.

Specify the message version as the second parameter when you initialize the ThreeDS2Service.INSTANCE .

   ThreeDS2Service.INSTANCE.initialize(/*Activity*/ this, configParameters, null, null);

   Transaction mTransaction = ThreeDS2Service.INSTANCE.createTransaction(null, "MESSAGE_VERSION");

4. Use the latest 3D Secure 2 protocol version 2.2.0:

By default, the Adyen 3DS2 SDKs version 2.2.0 supports the latest 3D Secure 2 protocol (2.2.0).

When using protocol version 2.2.0, you can optionally send the threeDSRequestorAppURL parameter during the challenge flow. This parameter is used in an OOB authentication. If you specify a previous protocol version, the threeDSRequestorAppURL parameter is ignored.

The examples in the tabs below show how you would specify the threeDSRequestorAppURL parameter in iOS and Android:

Set the threeDSRequestorAppURL in the ADYChallengeParameters .

Make sure to add the URL should to the app build settings. For more information, refer to the Apple Developer documentation.

   NSDictionary *additionalData = ...; // Retrieved from Adyen.
   ADYChallengeParameters *parameters = [ADYChallengeParameters
                                         threeDSRequestorAppURL: [NSURL URLWithString:@"{YOUR_CUSTOM_SCHEME}://{YOUR_CUSTOM_DOMAIN}"]];

Set the threeDSRequestorAppURL in the ChallengeParameters . You can also retrieve this from ChallengeParameters.getEmbeddedRequestorAppURL(context).

   Map<String, String> additionalData = ...; // Retrieved from Adyen.

   ChallengeParameters challengeParameters = new ChallengeParameters();

If you want to use an earlier 3D Secure 2 protocol version, you need to:

  1. Include threeDS2RequestData.messageVersion in your POST /authorise request. For example, set this parameter to 2.1.0.
  2. Specify the message version when you initialize the SDK.

See also