The purpose of this page is to provide an overview of the SCA process and not to provide examples for specific use cases.
Some procedures involving business accounts require you to perform Strong Customer Authentication (SCA). For example:
- Making funds transfers to third-party bank accounts.
- Consulting the transaction history of a business account.
- Creating transfer limits.
When you make API requests for this procedure, you must also perform SCA. After verifying the identity of your user, the Authentication SDK produces an output that you must include in your API request. Adyen validates this information before sending back a successful response.
This page explains how the SCA process works when using Adyen's Authentication SDK.
Requirements
Before you begin, make sure that you fulfill the following requirements:
| Requirement | Description |
|---|---|
| Integration type | You must have an Adyen for Platforms integration that includes business accounts. |
| API credentials | To make API requests, you need an API credential for webservices. The roles that you need depend on the specific API request that you want to make. |
| Setup steps | Make sure that you have installed the Authentication SDK. |
How it works
After your user starts a procedure that requires SCA, your application initiates the SCA flow. Your user must successfully complete the SCA flow to the API requests required for the procedure.
The following diagram shows the flow for performing SCA challenges to validate API requests.
As shown in the preceding diagram, the flow for performing SCA on your user is as follows:
- The Authentication SDK checks if the device is eligible for SCA.
- Your application initializes the Authentication SDK.
- The Authentication SDK calls a method that checks if the device is eligible for SCA.
- If the check is successful, the Authentication SDK passes the
sdkOutputto your server.
- Your server makes an API request to initiate the procedure.
- Your server makes an API request to Adyen including the
sdkOutputfrom the previous step in the header. - If the request is successful, Adyen returns an HTTP 401 response that includes an
sdkInput. - Your server passes the
sdkInputto the Authentication SDK.
- Your server makes an API request to Adyen including the
- The Authentication SDK initiates the SCA verification process for your user.
- The Authentication SDK calls a method to prompt an SCA challenge in your application.
- Your user completes the challenge.
- The Authentication SDK validates the solution of the challenge.
- If the challenge is completed successfully, the Authentication SDK passes a new
sdkOutputto your server.
- Your server makes an API request to finalize the procedure.
- Your server makes an API request to Adyen including the
sdkOutputfrom the previous step in the header. - If the request is successful, Adyen returns an HTTP 2xx response. The exact HTTP status code depends on the endpoint.
- Your server makes an API request to Adyen including the
The following sections explain more details about the steps in the flow.
Check SCA eligibility
Before initiating a procedure that requires SCA, you must check that the device is eligible for SCA.
The following tabs explain how to check for SCA eligibility using the Authentication SDK for Kotlin, Swift, or JavaScript.
This functionality requires additional configuration from Adyen. To enable it, contact our Support Team.
You will use the sdkOutput when initiating a procedure.
Initiate the procedure
To initiate a procedure that requires SCA:
-
Make an API request to the endpoint that you need. In the header, specify the following parameter:
Parameter Type Required Description WWW-AuthenticateHeader 
Include the following values: SCA realm: Specifies the type of procedure that you want to do.
Example values: Transfer, Transaction, TransferLimit.auth-param1: Base64-encoded value of sdkOutput you get when you checked the SCA eligibility of the device.
The following example shows the
WWW-Authenticateheader using theSCA realmTransfers. -
Verify that you receive an HTTP 401 response that includes the
WWW-Authenticateparameter in the header. The value of this parameter also includes:SCA realm: This must be the same value as the one in the request header.auth-param1: This is a new base64-encoded blob of data.
-
Pass the new
auth-param1value to the SDK assdkInput.
Authenticate your user
To register the device with the Authentication SDK:
-
Authenticate the user by performing two-factor authentication (2FA).
-
Trigger the SDK to start the device registration and pass
sdkInputyou received when you initiated the procedure.After a successful registration, the SDK generates a Base64-encoded
sdkOutputdata blob. -
Pass
sdkOutputto your server.
Finalize the procedure
To finalize a procedure after SCA was completed:
-
Make an API request to the endpoint that you need. In the header, specify the following parameter:
Parameter Type Required Description WWW-AuthenticateHeader 
Include the following values: SCA realm: Specifies the type of procedure that you want to do.
Use the same value that you used when you initiated the procedure.auth-param1: Base64-encoded value of sdkOutput you get when you authenticated your user of the device.
-
Verify that you receive an HTTP 2xx response. This means that the request was successful.
The HTTP status and the content of the response depend on the endpoint.