---
title: "Migrating to Adyen 3D Secure 2 SDK version 2.2.0 or later"
description: "Find out how you can update your integration to the latest Android and iOS 3D Secure 2 SDKs."
url: "https://docs.adyen.com/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/migrating-to-2-2"
source_url: "https://docs.adyen.com/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/migrating-to-2-2.md"
canonical: "https://docs.adyen.com/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/migrating-to-2-2"
last_modified: "2023-03-24T13:20:00+01:00"
language: "en"
---
# Migrating to Adyen 3D Secure 2 SDK version 2.2.0 or later
Find out how you can update your integration to the latest Android and iOS 3D Secure 2 SDKs.
[View source](/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/migrating-to-2-2.md)
**Adyen is no longer developing the Classic API integration**
This page is for the Classic API (`/authorise`) integration, which we no longer accept new integrations with.
We strongly recommend migrating to the newer [Native 3D Secure 2](/online-payments/3d-secure/native-3ds2) integration. To use this newer integration, you must also [migrate to the Checkout API](/online-payments/upgrade-your-integration/migrate-to-checkout-api).
Even if you do not need the features of the newest Adyen 3D Secure 2 SDK version, we strongly recommend that you still upgrade to the newest version to get the latest updates, security patches, and fixes.
## Changes in the new Adyen 3D Secure 2 SDK version 2.2.0 or later
These changes apply to version 2.2.0 or later for [iOS](https://github.com/Adyen/adyen-3ds2-ios) and [Android](https://github.com/Adyen/adyen-3ds2-android).
### Supported
* 3D Secure protocol version 2.2.0 in addition to 2.1.0.
* Support for new 3DS2 Directory Servers (e.g. card networks Cartes Bancaires, Diners, Discover, and Elo)
* 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.
### Required
* The `additionalData.threeds2.threeDS2ResponseData.messageVersion` from the [/authorise](https://docs.adyen.com/api-explorer/#/Payment/authorise) response must be used to [create a transaction in the iOS SDK](/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/ios-sdk-integration#get-the-3d-secure-2-device-fingerprint) or [create a transaction in the Android SDK](/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/android-sdk-integration#get-the-3d-secure-2-device-fingerprint).
## Migrating to Adyen 3D Secure 2 SDK version 2.2.0 or later
1. Install the latest versions:
* [Adyen 3DS2 iOS SDK version 2.2.0 or later](https://github.com/Adyen/adyen-3ds2-ios/releases)
* [Adyen 3DS2 Android SDK version 2.2.0 or later](https://github.com/Adyen/adyen-3ds2-android/releases)
2. Send the version of the 3DS2 SDK in the `threeDS2RequestData.sdkVersion` field in the initial request; this will inform the Adyen 3DS2 Server that the newer SDK features can be used such as 3D Secure protocol `2.2.0` and 3DS2 over the newly added card networks.
* For iOS, call `ADY3DS2SDKVersion()` to get the version.
* For Android, call `ThreeDS2Service.INSTANCE.sdkVersion` to get the version.
3. To make sure you use a protocol version that the issuing bank supports, [you must get the `additionalData.threeds2.threeDS2ResponseData.messageVersion`](#required) from the [/authorise](https://docs.adyen.com/api-explorer/#/Payment/authorise) response and pass it on to your SDK when you create a transaction. Otherwise, the transaction can fail due to a version mismatch.
### Using 3D Secure 2 protocol version 2.2.0 and later
If you want to use the latest 3D Secure 2 protocol version 2.2.0, include the `threeDSRequestorAppURL` parameter during the challenge flow. This parameter is used in an [OOB authentication](#supported). If you specify a [previous protocol version](#previous-version), the `threeDSRequestorAppURL` parameter is ignored.
The examples in the tabs below show how to specify the `threeDSRequestorAppURL` parameter in iOS and Android:
### Tab: iOS
Because of recent updates to the 3D Secure protocol, we strongly recommend that you provide the `threeDSRequestorAppURL` parameter as a [universal link](https://developer.apple.com/documentation/xcode/allowing-apps-and-websites-to-link-to-your-content?language=objc).
Set the `threeDSRequestorAppURL` in the [`ADYChallengeParameters` ](https://adyen.github.io/adyen-3ds2-ios/2.3.2/documentation/adyen3ds2/adychallengeparameters).
Make sure to add the URL should to the app build settings. For more information, refer to the [Apple Developer documentation](https://developer.apple.com/documentation/uikit/inter-process_communication/allowing_apps_and_websites_to_link_to_your_content/defining_a_custom_url_scheme_for_your_app).
```swift
NSDictionary *additionalData = ...; // Retrieved from Adyen.
ADYChallengeParameters *parameters = [ADYChallengeParameters
...
threeDSRequestorAppURL: [NSURL URLWithString:@"{YOUR_CUSTOM_SCHEME}://{YOUR_CUSTOM_DOMAIN}"]];
```
### Tab: Android
Because of recent updates to the 3D Secure protocol, we strongly recommend that you provide the `threeDSRequestorAppURL` parameter as an [Android App Link](https://developer.android.com/training/app-links) when using [Adyen 3DS2 Android SDK version 2.2.12 and later](https://github.com/Adyen/adyen-3ds2-android/releases/tag/2.2.12).
Set the `threeDSRequestorAppURL` in the [`ChallengeParameters` ](https://adyen.github.io/adyen-3ds2-android/com/adyen/threeds2/parameters/ChallengeParameters.html):
1. Copy the code to your app Manifest file. Replace the value of `android:host` from `{yourapp.com}` with your web domain name. Do not change the other configuration:
```XML
```
2. Pass your App Link with `ChallengeParameters` object
```kotlin
Map additionalData = ...; // Retrieved from Adyen.
ChallengeParameters challengeParameters = new ChallengeParameters();
...
challengeParameters.setThreeDSRequestorAppURL("https://{yourapp.com}/adyen3ds2");
```
3. Verify the App Link following [Android documentation](https://developer.android.com/training/app-links/verify-android-applinks)
### Using 3D Secure 2 protocol version earlier than 2.2.0
[]()If you want to use an earlier 3D Secure 2 protocol version:
1. The `additionalData.threeds2.threeDS2ResponseData.messageVersion` from the [/authorise](https://docs.adyen.com/api-explorer/#/Payment/authorise) response must be used to [create a transaction in the iOS SDK](/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/ios-sdk-integration#get-the-3d-secure-2-device-fingerprint) or [create a transaction in the Android SDK](/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/android-sdk-integration#get-the-3d-secure-2-device-fingerprint).
2. You need to include [`threeDS2RequestData.messageVersion` ](https://docs.adyen.com/api-explorer/#/Payment/latest/post/authorise__reqParam_threeDS2RequestData-messageVersion)in your POST [/authorise](https://docs.adyen.com/api-explorer/#/Payment/authorise) request. For example, set this parameter to **2.1.0**.
The `threeDS2RequestData.messageVersion` that you send in the request will be used to guide the Adyen 3D Secure 2 Server in the protocol version to use in the transaction. But a different version than requested can still be returned if, for example, the issuing bank does not support the requested version. Because of this, the `additionalData.threeds2.threeDS2ResponseData.messageVersion` must still be the one used to initialize the 3D Secure 2 SDK; otherwise the transaction will fail.
## See also
* [Adyen 3DS2 iOS SDK](https://github.com/Adyen/adyen-3ds2-ios) on GitHub
* [iOS SDK Reference](https://adyen.github.io/adyen-3ds2-ios/)
* [Adyen 3DS2 Android SDK](https://github.com/Adyen/adyen-3ds2-android) on GitHub
* [Android SDK Reference](https://adyen.github.io/adyen-3ds2-android/)