{"title":"Register a device for SCA","category":"default","creationDate":1669827120,"content":"<p>To enable Strong Customer Authentication (SCA) for your users, you must register their device as an SCA device. The registration associates your user's device with their business account.<\/p>\n<p>You can register devices for SCA using Adyen's Authentication SDK. To do so:<\/p>\n<ol>\n<li><a href=\"#check-sca\">Check SCA eligibility<\/a>.<\/li>\n<li><a href=\"#initiate-registration\">Initiate the device registration<\/a> from your server.<\/li>\n<li><a href=\"#register-device\">Register the device<\/a>.<\/li>\n<li><a href=\"#finalize-registration\">Finalize the registration<\/a> from your server.<\/li>\n<\/ol>\n<p>The following sections explain how to perform all the steps to register a user's device for SCA.<\/p>\n<h2>Requirements<\/h2>\n<ul>\n<li>Make sure that the operating system or web browser on your user's device supports SCA.<\/li>\n<li>Make sure that you have <a href=\"\/pt\/business-accounts\/install-auth-sdk\">installed the Authentication SDK<\/a>.<\/li>\n<li>Make sure that your <a href=\"\/pt\/business-accounts\/manage-access#manage-api-credentials\">API credential<\/a> has the following role:\n<ul>\n<li><strong>Bank SCA Webservice Role<\/strong><\/li>\n<\/ul><\/li>\n<\/ul>\n<h2 id=\"check-sca\">Check SCA eligibility<\/h2>\n<div class=\"notices green\">\n<p>This functionality requires additional configuration from Adyen. To enable it, contact our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a>.<\/p>\n<\/div>\n\n<div id=\"tabhglQn\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Android (Kotlin)&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;To check if the Android device is eligible for SCA:&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Initiate the &lt;code&gt;AdyenAuthentication&lt;\\\/code&gt; class in your Activity or Fragment.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Initiate authentication&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;kotlin\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;private lateinit var adyenAuthentication: AdyenAuthentication\\\\n\\\\noverride fun onCreate(savedInstanceState: Bundle?) {\\\\n    super.onCreate(savedInstanceState)\\\\n    adyenAuthentication = AdyenAuthentication(this)\\\\n}\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Check if SCA is available on the device.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Check SCA eligibility&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;kotlin\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;lifecycleScope.launch {\\\\n    val availabilityResult: AvailabilityResult = adyenAuthentication.checkAvailability()\\\\n    if (availabilityResult is AvailabilityResult.Available) {\\\\n        availabilityResult.sdkOutput\\\\n    }\\\\n}\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&lt;p&gt;The function returns an &lt;code&gt;sdkOutput&lt;\\\/code&gt;.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Pass the &lt;code&gt;sdkOutput&lt;\\\/code&gt; to your server.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&quot;,&quot;altTitle&quot;:&quot;kotlin&quot;,&quot;oldTabId&quot;:&quot;sca-eligibility-kotlin_1&quot;,&quot;relation&quot;:&quot;kotlin&quot;},{&quot;title&quot;:&quot;iOS (Swift)&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;To check if the iOS device is eligible for SCA:&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Initialize the &lt;code&gt;AuthenticationService&lt;\\\/code&gt; class.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Initialize authentication service&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;swift\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;let configuration = AuthenticationService.Configuration(\\\\n    localizedRegistrationReason: registrationReason,\\\\n    localizedAuthenticationReason: authenticationReason,\\\\n    appleTeamIdendtifier: appleTeamIdentifier\\\\n)\\\\nlet authenticationService = AuthenticationService(configuration: configuration)\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Check if SCA is available on the device.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Check SCA eligibility&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;swift\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;let sdkOutput = try authenticationService.checkSupport()\\\\n\\\\\\\/\\\\\\\/\\\\\\\/ send the sdkOutput to your backend\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&lt;p&gt;The function returns an &lt;code&gt;sdkOutput&lt;\\\/code&gt;.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Pass the &lt;code&gt;sdkOutput&lt;\\\/code&gt; to your server.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&quot;,&quot;altTitle&quot;:&quot;swift&quot;,&quot;oldTabId&quot;:&quot;sca-eligibility-swift_2&quot;,&quot;relation&quot;:&quot;swift&quot;},{&quot;title&quot;:&quot;Web (JavaScript)&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;To check if the web browser on your web-enabled device is eligible for SCA:&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Import the node package in your application. &lt;\\\/p&gt;\\n&lt;p&gt;&lt;code&gt;RelyingPartyName&lt;\\\/code&gt; is the name the user will be presented with when creating or validating a &lt;code&gt;WebAuthn&lt;\\\/code&gt; operation. We recommend that the value of the &lt;code&gt;RelyingPartyName&lt;\\\/code&gt; be the merchant name or the URL domain.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Import web sdk and initiate authentication&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;javascript&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;import ScaWebauthn from &#039;@adyen\\\\\\\/bpscaweb&#039;;\\\\n\\\\nconst scaWebauthn = ScaWebauthn.create({ \\\\n    relyingPartyName: &#039;merchant&#039;,\\\\n});\\\\n\\\\nconst sdkOutput = await scaWebauthn.checkAvailability().catch((error) =&amp;gt; \\\\\\\/* SCA_UNAVAILABLE error*\\\\\\\/);&amp;quot;}]\\&quot; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&lt;p&gt;If the user&#039;s browser supports SCA, the function returns &lt;code&gt;sdkOutput&lt;\\\/code&gt; to exchange in requests to the server. If SCA is not supported, the method throws an &lt;code&gt;SCA_UNAVAILABLE&lt;\\\/code&gt; error.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Pass the &lt;code&gt;sdkOutput&lt;\\\/code&gt; to your server.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&quot;,&quot;altTitle&quot;:&quot;javascript&quot;,&quot;oldTabId&quot;:&quot;sca-eligibility-javascript_3&quot;,&quot;relation&quot;:&quot;javascript&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<p>You will use the <code>sdkOutput<\/code> when <a href=\"#initiate-registration\">initiating the registration<\/a>.<\/p>\n<h2 id=\"initiate-registration\">Initiate device registration<\/h2>\n<p>Registering the device is a one-off procedure for each device. If your user has multiple devices, you need to register each of their devices separately.<\/p>\n<p>After a device is registered, you can associate more payment instruments with it. To learn how to associate multiple payment instruments with a registered device, go to <a href=\"\/pt\/business-accounts\/manage-sca-devices\/\">Manage registered devices<\/a>.<\/p>\n<p><\/p>\n<p>To start the device registration, make a POST  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/balanceplatform\/latest\/post\/registeredDevices\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/registeredDevices<\/a> request from your server.<\/p>\n<p>In the request, specify the following:<\/p>\n<table>\n<thead>\n<tr>\n<th>Request parameter<\/th>\n<th>Required<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/balanceplatform\/latest\/post\/registeredDevices#request-paymentInstrumentId\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">paymentInstrumentId<\/a><\/td>\n<td>yes<\/td>\n<td>The unique identifier of the business account you want to register the device for.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/balanceplatform\/latest\/post\/registeredDevices#request-name\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">name<\/a><\/td>\n<td>no<\/td>\n<td>The name of the SCA device that you are registering. You can use it to help your users identify the device. If you do not specify a <code>name<\/code>, Adyen automatically generates one.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/balanceplatform\/latest\/post\/registeredDevices#request-strongCustomerAuthentication-sdkOutput\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">strongCustomerAuthentication.sdkOutput<\/a><\/td>\n<td>yes<\/td>\n<td>Base64-encoded blob of data created in the <a href=\"#check-sca\">previous step<\/a>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Initiate device registration'\" :id=\"'initiate-registration'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;curl&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/balanceplatform-api-test.adyen.com\\\/bcl\\\/v2\\\/registeredDevices \\\\\\n-H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-X POST \\\\\\n-d '{\\n    \\&quot;paymentInstrumentId\\&quot;: \\&quot;PI00000000000000000000001\\&quot;,\\n    \\&quot;strongCustomerAuthentication\\&quot; : {\\n      \\&quot;sdkOutput\\&quot;: \\&quot;eyJjaGFubmVsIjoiYXBwIiwib3BlcmF0aW5nU3lzdGV...\\&quot;\\n    }\\n}'&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v33.0.0\\nimport com.adyen.Client;\\nimport com.adyen.enums.Environment;\\nimport com.adyen.model.balanceplatform.*;\\nimport java.time.OffsetDateTime;\\nimport java.util.*;\\nimport com.adyen.service.balancePlatform.*;\\n\\nClient client = new Client(\\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;, Environment.TEST);\\n\\n\\\/\\\/ Create the request object(s)\\nDelegatedAuthenticationData delegatedAuthenticationData = new DelegatedAuthenticationData()\\n  .sdkOutput(\\&quot;eyJjaGFubmVsIjoiYXBwIiwib3BlcmF0aW5nU3lzdGV...\\&quot;);\\n\\nRegisterSCARequest registerSCARequest = new RegisterSCARequest()\\n  .strongCustomerAuthentication(delegatedAuthenticationData)\\n  .paymentInstrumentId(\\&quot;PI00000000000000000000001\\&quot;);\\n\\n\\\/\\\/ Send the request\\nManageScaDevicesApi service = new ManageScaDevicesApi(client);\\nRegisterSCAResponse response = service.initiateRegistrationOfScaDevice(registerSCARequest, null);&quot;},{&quot;language&quot;:&quot;php&quot;,&quot;tabTitle&quot;:&quot;PHP&quot;,&quot;content&quot;:&quot;&lt;?php\\n\\\/\\\/ Adyen PHP API Library v24.0.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Model\\\\BalancePlatform\\\\DelegatedAuthenticationData;\\nuse Adyen\\\\Model\\\\BalancePlatform\\\\RegisterSCARequest;\\nuse Adyen\\\\Service\\\\BalancePlatform\\\\ManageScaDevicesApi;\\n\\n$client = new Client();\\n$client-&gt;setXApiKey(\\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;);\\n$client-&gt;setEnvironment(Environment::TEST);\\n\\n\\n\\\/\\\/ Create the request object(s)\\n$delegatedAuthenticationData = new DelegatedAuthenticationData();\\n$delegatedAuthenticationData\\n  -&gt;setSdkOutput(\\&quot;eyJjaGFubmVsIjoiYXBwIiwib3BlcmF0aW5nU3lzdGV...\\&quot;);\\n\\n$registerSCARequest = new RegisterSCARequest();\\n$registerSCARequest\\n  -&gt;setStrongCustomerAuthentication($delegatedAuthenticationData)\\n  -&gt;setPaymentInstrumentId(\\&quot;PI00000000000000000000001\\&quot;);\\n\\n\\\/\\\/ Send the request\\n$service = new ManageScaDevicesApi($client);\\n$response = $service-&gt;initiateRegistrationOfScaDevice($registerSCARequest);&quot;},{&quot;language&quot;:&quot;cs&quot;,&quot;tabTitle&quot;:&quot;C#&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen .net API Library v28.0.0\\nusing Adyen;\\nusing Environment = Adyen.Model.Environment;\\nusing Adyen.Model;\\nusing Adyen.Model.BalancePlatform;\\nusing Adyen.Service.BalancePlatform;\\n\\nvar config = new Config()\\n{\\n    XApiKey = \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;,\\n    Environment = Environment.Test\\n};\\nvar client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\nDelegatedAuthenticationData delegatedAuthenticationData = new DelegatedAuthenticationData\\n{\\n  SdkOutput = \\&quot;eyJjaGFubmVsIjoiYXBwIiwib3BlcmF0aW5nU3lzdGV...\\&quot;\\n};\\n\\nRegisterSCARequest registerSCARequest = new RegisterSCARequest\\n{\\n  StrongCustomerAuthentication = delegatedAuthenticationData,\\n  PaymentInstrumentId = \\&quot;PI00000000000000000000001\\&quot;\\n};\\n\\n\\\/\\\/ Send the request\\nvar service = new ManageScaDevicesService(client);\\nvar response = service.InitiateRegistrationOfScaDevice(registerSCARequest);&quot;},{&quot;language&quot;:&quot;js&quot;,&quot;tabTitle&quot;:&quot;NodeJS (JavaScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v23.3.0\\nconst { Client, BalancePlatformAPI } = require('@adyen\\\/api-library');\\n\\nconst client = new Client({ apiKey: \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot; });\\n\\n\\\/\\\/ Create the request object(s)\\nconst registerSCARequest = {\\n  paymentInstrumentId: \\&quot;PI00000000000000000000001\\&quot;,\\n  strongCustomerAuthentication: {\\n    sdkOutput: \\&quot;eyJjaGFubmVsIjoiYXBwIiwib3BlcmF0aW5nU3lzdGV...\\&quot;\\n  }\\n}\\n\\n\\\/\\\/ Send the request\\nconst balancePlatformAPI = new BalancePlatformAPI(client);\\nconst response = balancePlatformAPI.ManageScaDevicesApi.initiateRegistrationOfScaDevice(registerSCARequest);&quot;},{&quot;language&quot;:&quot;go&quot;,&quot;tabTitle&quot;:&quot;Go&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Go API Library v17.0.0\\nimport (\\n  \\&quot;context\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v17\\\/src\\\/common\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v17\\\/src\\\/adyen\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v17\\\/src\\\/balancePlatform\\&quot;\\n)\\nclient := adyen.NewClient(&amp;common.Config{\\n  ApiKey:      \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;,\\n  Environment: common.TestEnv,\\n})\\n\\n\\\/\\\/ Create the request object(s)\\ndelegatedAuthenticationData := balancePlatform.DelegatedAuthenticationData{\\n  SdkOutput: \\&quot;eyJjaGFubmVsIjoiYXBwIiwib3BlcmF0aW5nU3lzdGV...\\&quot;,\\n}\\n\\nregisterSCARequest := balancePlatform.RegisterSCARequest{\\n  StrongCustomerAuthentication: delegatedAuthenticationData,\\n  PaymentInstrumentId: \\&quot;PI00000000000000000000001\\&quot;,\\n}\\n\\n\\\/\\\/ Send the request\\nservice := client.BalancePlatform()\\nreq := service.ManageScaDevicesApi.InitiateRegistrationOfScaDeviceInput().RegisterSCARequest(registerSCARequest)\\nres, httpRes, err := service.ManageScaDevicesApi.InitiateRegistrationOfScaDevice(context.Background(), req)&quot;},{&quot;language&quot;:&quot;py&quot;,&quot;tabTitle&quot;:&quot;Python&quot;,&quot;content&quot;:&quot;# Adyen Python API Library v13.3.0\\nimport Adyen\\n\\nadyen = Adyen.Adyen()\\nadyen.client.xapikey = \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;\\nadyen.client.platform = \\&quot;test\\&quot; # The environment to use library in.\\n\\n# Create the request object(s)\\njson_request = {\\n  \\&quot;paymentInstrumentId\\&quot;: \\&quot;PI00000000000000000000001\\&quot;,\\n  \\&quot;strongCustomerAuthentication\\&quot;: {\\n    \\&quot;sdkOutput\\&quot;: \\&quot;eyJjaGFubmVsIjoiYXBwIiwib3BlcmF0aW5nU3lzdGV...\\&quot;\\n  }\\n}\\n\\n# Send the request\\nresult = adyen.balancePlatform.manage_sca_devices_api.initiate_registration_of_sca_device(request=json_request)&quot;},{&quot;language&quot;:&quot;rb&quot;,&quot;tabTitle&quot;:&quot;Ruby&quot;,&quot;content&quot;:&quot;# Adyen Ruby API Library v10.1.1\\nrequire \\&quot;adyen-ruby-api-library\\&quot;\\n\\nadyen = Adyen::Client.new\\nadyen.api_key = 'ADYEN_BALANCE_PLATFORM_API_KEY'\\nadyen.env = :test # Set to \\&quot;live\\&quot; for live environment\\n\\n# Create the request object(s)\\nrequest_body = {\\n  :paymentInstrumentId =&gt; 'PI00000000000000000000001',\\n  :strongCustomerAuthentication =&gt; {\\n    :sdkOutput =&gt; 'eyJjaGFubmVsIjoiYXBwIiwib3BlcmF0aW5nU3lzdGV...'\\n  }\\n}\\n\\n# Send the request\\nresult = adyen.balancePlatform.manage_sca_devices_api.initiate_registration_of_sca_device(request_body)&quot;},{&quot;language&quot;:&quot;ts&quot;,&quot;tabTitle&quot;:&quot;NodeJS (TypeScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v23.3.0\\nimport { Client, BalancePlatformAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\nconst client = new Client({ apiKey: \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot; });\\n\\n\\\/\\\/ Create the request object(s)\\nconst delegatedAuthenticationData: Types.balancePlatform.DelegatedAuthenticationData = {\\n  sdkOutput: \\&quot;eyJjaGFubmVsIjoiYXBwIiwib3BlcmF0aW5nU3lzdGV...\\&quot;\\n};\\n\\nconst registerSCARequest: Types.balancePlatform.RegisterSCARequest = {\\n  strongCustomerAuthentication: delegatedAuthenticationData,\\n  paymentInstrumentId: \\&quot;PI00000000000000000000001\\&quot;\\n};\\n\\n\\\/\\\/ Send the request\\nconst balancePlatformAPI = new BalancePlatformAPI(client);\\nconst response = balancePlatformAPI.ManageScaDevicesApi.initiateRegistrationOfScaDevice(registerSCARequest);&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>The response returns:<\/p>\n<ul>\n<li> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/balanceplatform\/latest\/post\/registeredDevices#responses-200-sdkInput\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">sdkInput<\/a>: pass the value to the SDK when <a href=\"#register-device\">registering the device<\/a>.<\/li>\n<li> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/balanceplatform\/latest\/post\/registeredDevices#responses-200-id\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">id<\/a>: the device ID needed when <a href=\"#finalize-registration\">finalizing the registration<\/a>. This ID begins either with <code>BSDR<\/code> or <code>RD<\/code>.<\/li>\n<\/ul>\n<p>We suggest that you create and store a mapping between the registered device <code>id<\/code> and the human-readable account holder name. For example, <strong>BSDR00000000000000000000001<\/strong> is \"Cardholder's iPhone\". You can use this pair later to show the details, for example, when <a href=\"\/pt\/business-accounts\/manage-sca-devices#deregister-device\">deregistering the device<\/a> if the user doesn't specify a device name during registration.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Initiate device registration response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"id\\\": \\\"BSDR00000000000000000000001\\\",\\n    \\\"paymentInstrumentId\\\": \\\"PI00000000000000000000001\\\",\\n    \\\"sdkInput\\\": \\\"eyJjaGFsbGVuZ2UiOiJiVlV6ZW5wek0waFNlQzFvVjBGSGRVaDNaVXc1UVE9PSJ9\\\",\\n    \\\"success\\\": true\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h2 id=\"register-device\">Register the device<\/h2>\n<p>To register the device with the Authentication SDK:<\/p>\n<ol>\n<li>\n<p>Authenticate the user by performing <a href=\"https:\/\/en.wikipedia.org\/wiki\/Multi-factor_authentication\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">two-factor authentication<\/a> (2FA).<\/p>\n<\/li>\n<li>\n<p>Trigger the SDK to start the device registration and pass <code>sdkInput<\/code> from <a href=\"#initiate-registration\">step 2<\/a>.<\/p>\n\n<div id=\"tabfnV7z\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Android (Kotlin)&quot;,&quot;content&quot;:&quot;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Register device with SCA SDK&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;kotlin\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;lifecycleScope.launch {\\\\n    val registrationResult: AuthenticationResult = adyenAuthentication.register(\\\\\\&quot;sdkInput\\\\\\&quot;)\\\\n    when (registrationResult) {\\\\n        is AuthenticationResult.RegistrationSuccessful -&amp;gt; {\\\\n            registrationResult.sdkOutput\\\\n        }\\\\n        is AuthenticationResult.Canceled -&amp;gt; {\\\\n            \\\\\\\/\\\\\\\/ cardholder canceled the flow\\\\n        }\\\\n        is AuthenticationResult.Error -&amp;gt; {\\\\n            \\\\\\\/\\\\\\\/ Unexpected error\\\\n            registrationResult.errorMessage\\\\n        }\\\\n        is AuthenticationResult.AuthenticationError -&amp;gt; {\\\\n            \\\\\\\/\\\\\\\/ FIDO API Error\\\\n            registrationResult.authenticationError\\\\n        }\\\\n    }\\\\n}\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&lt;p&gt;After the successful registration, the SDK generates a Base64-encoded &lt;code&gt;sdkOutput&lt;\\\/code&gt; data blob.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:&quot;kotlin&quot;,&quot;oldTabId&quot;:&quot;register-device-kotlin_1&quot;,&quot;relation&quot;:&quot;kotlin&quot;},{&quot;title&quot;:&quot;iOS (Swift)&quot;,&quot;content&quot;:&quot;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Register device with SCA SDK&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;swift\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;let sdkOutput = try await authenticationService.register(withBase64URLString: sdkInput)\\\\n\\\\\\\/\\\\\\\/\\\\\\\/ send the sdkOutput to the backend\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&lt;p&gt;The SDK uses the &lt;a href=\\&quot;https:\\\/\\\/developer.apple.com\\\/documentation\\\/devicecheck\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;Apple DeviceCheck framework&lt;\\\/a&gt; to generate a Base64-encoded &lt;code&gt;sdkOutput&lt;\\\/code&gt; data blob. To do this, the SDK authenticates the user using Touch ID, Face ID, or the device passcode. To enable Face ID support, add &lt;code&gt;NSFaceIDUsageDescription&lt;\\\/code&gt; to &lt;code&gt;Info.plist&lt;\\\/code&gt;.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:&quot;swift&quot;,&quot;oldTabId&quot;:&quot;register-device-swift_2&quot;,&quot;relation&quot;:&quot;swift&quot;},{&quot;title&quot;:&quot;Web (JavaScript)&quot;,&quot;content&quot;:&quot;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Register device with SCA SDK&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;javascript\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;const sdkOutput = await scaWebauthn.register(sdkInput);\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&lt;p&gt;After the successful registration, the SDK generates a Base64-encoded &lt;code&gt;sdkOutput&lt;\\\/code&gt; data blob.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:&quot;javascript&quot;,&quot;oldTabId&quot;:&quot;register-device-javascript_3&quot;,&quot;relation&quot;:&quot;javascript&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<\/li>\n<li>\n<p>Pass <code>sdkOutput<\/code> to your server.<\/p>\n<\/li>\n<\/ol>\n<h2 id=\"finalize-registration\">Finalize registration<\/h2>\n<p>To finalize the device registration:<\/p>\n<ol>\n<li>\n<p>Make a PATCH  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/balanceplatform\/latest\/patch\/registeredDevices\/(id)\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/registeredDevices\/{id}<\/a> request from your server. Specify the following parameters:<\/p>\n<table>\n<thead>\n<tr>\n<th>Parameter<\/th>\n<th style=\"text-align: center;\">Parameter type<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/balanceplatform\/latest\/patch\/registeredDevices\/(id)#path-id\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">id<\/a><\/td>\n<td style=\"text-align: center;\">Path<\/td>\n<td>The unique identifier of the SCA device. You obtain this <code>id<\/code> after you <a href=\"#initiate-registration\">initiate the device registration<\/a>.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/balanceplatform\/latest\/patch\/registeredDevices\/(id)#request-paymentInstrumentId\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">paymentInstrumentId<\/a><\/td>\n<td style=\"text-align: center;\">Body<\/td>\n<td>The unique identifier of the business account you want to register the device for.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/balanceplatform\/latest\/patch\/registeredDevices\/(id)#request-strongCustomerAuthentication-sdkOutput\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">strongCustomerAuthentication.sdkOutput<\/a><\/td>\n<td style=\"text-align: center;\">Body<\/td>\n<td>Base64-encoded blob of data created in the previous step.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Finalize device registration'\" :id=\"'finalize-registration'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;curl&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/balanceplatform-api-test.adyen.com\\\/bcl\\\/v2\\\/registeredDevices\\\/{id} \\\\\\n-H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-X PATCH \\\\\\n-d '{\\n    \\&quot;paymentInstrumentId\\&quot;: \\&quot;PI00000000000000000000001\\&quot;,\\n    \\&quot;strongCustomerAuthentication\\&quot; : {\\n      \\&quot;sdkOutput\\&quot;: \\&quot;eyJhdHRlc3RhdGlvbk9iamVjdCI6Im8yTm1iWF...\\&quot;\\n    }\\n}'&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v33.0.0\\nimport com.adyen.Client;\\nimport com.adyen.enums.Environment;\\nimport com.adyen.model.balanceplatform.*;\\nimport java.time.OffsetDateTime;\\nimport java.util.*;\\nimport com.adyen.service.balancePlatform.*;\\n\\nClient client = new Client(\\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;, Environment.TEST);\\n\\n\\\/\\\/ Create the request object(s)\\nDelegatedAuthenticationData delegatedAuthenticationData = new DelegatedAuthenticationData()\\n  .sdkOutput(\\&quot;eyJhdHRlc3RhdGlvbk9iamVjdCI6Im8yTm1iWF...\\&quot;);\\n\\nRegisterSCARequest registerSCARequest = new RegisterSCARequest()\\n  .strongCustomerAuthentication(delegatedAuthenticationData)\\n  .paymentInstrumentId(\\&quot;PI00000000000000000000001\\&quot;);\\n\\n\\\/\\\/ Send the request\\nManageScaDevicesApi service = new ManageScaDevicesApi(client);\\nRegisterSCAFinalResponse response = service.completeRegistrationOfScaDevice(\\&quot;id\\&quot;, registerSCARequest, null);&quot;},{&quot;language&quot;:&quot;php&quot;,&quot;tabTitle&quot;:&quot;PHP&quot;,&quot;content&quot;:&quot;&lt;?php\\n\\\/\\\/ Adyen PHP API Library v24.0.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Model\\\\BalancePlatform\\\\DelegatedAuthenticationData;\\nuse Adyen\\\\Model\\\\BalancePlatform\\\\RegisterSCARequest;\\nuse Adyen\\\\Service\\\\BalancePlatform\\\\ManageScaDevicesApi;\\n\\n$client = new Client();\\n$client-&gt;setXApiKey(\\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;);\\n$client-&gt;setEnvironment(Environment::TEST);\\n\\n\\n\\\/\\\/ Create the request object(s)\\n$delegatedAuthenticationData = new DelegatedAuthenticationData();\\n$delegatedAuthenticationData\\n  -&gt;setSdkOutput(\\&quot;eyJhdHRlc3RhdGlvbk9iamVjdCI6Im8yTm1iWF...\\&quot;);\\n\\n$registerSCARequest = new RegisterSCARequest();\\n$registerSCARequest\\n  -&gt;setStrongCustomerAuthentication($delegatedAuthenticationData)\\n  -&gt;setPaymentInstrumentId(\\&quot;PI00000000000000000000001\\&quot;);\\n\\n\\\/\\\/ Send the request\\n$service = new ManageScaDevicesApi($client);\\n$response = $service-&gt;completeRegistrationOfScaDevice('id', $registerSCARequest);&quot;},{&quot;language&quot;:&quot;cs&quot;,&quot;tabTitle&quot;:&quot;C#&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen .net API Library v28.0.0\\nusing Adyen;\\nusing Environment = Adyen.Model.Environment;\\nusing Adyen.Model;\\nusing Adyen.Model.BalancePlatform;\\nusing Adyen.Service.BalancePlatform;\\n\\nvar config = new Config()\\n{\\n    XApiKey = \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;,\\n    Environment = Environment.Test\\n};\\nvar client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\nDelegatedAuthenticationData delegatedAuthenticationData = new DelegatedAuthenticationData\\n{\\n  SdkOutput = \\&quot;eyJhdHRlc3RhdGlvbk9iamVjdCI6Im8yTm1iWF...\\&quot;\\n};\\n\\nRegisterSCARequest registerSCARequest = new RegisterSCARequest\\n{\\n  StrongCustomerAuthentication = delegatedAuthenticationData,\\n  PaymentInstrumentId = \\&quot;PI00000000000000000000001\\&quot;\\n};\\n\\n\\\/\\\/ Send the request\\nvar service = new ManageScaDevicesService(client);\\nvar response = service.CompleteRegistrationOfScaDevice(\\&quot;id\\&quot;, registerSCARequest);&quot;},{&quot;language&quot;:&quot;js&quot;,&quot;tabTitle&quot;:&quot;NodeJS (JavaScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v23.3.0\\nconst { Client, BalancePlatformAPI } = require('@adyen\\\/api-library');\\n\\nconst client = new Client({ apiKey: \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot; });\\n\\n\\\/\\\/ Create the request object(s)\\nconst registerSCARequest = {\\n  paymentInstrumentId: \\&quot;PI00000000000000000000001\\&quot;,\\n  strongCustomerAuthentication: {\\n    sdkOutput: \\&quot;eyJhdHRlc3RhdGlvbk9iamVjdCI6Im8yTm1iWF...\\&quot;\\n  }\\n}\\n\\n\\\/\\\/ Send the request\\nconst balancePlatformAPI = new BalancePlatformAPI(client);\\nconst response = balancePlatformAPI.ManageScaDevicesApi.completeRegistrationOfScaDevice(\\&quot;id\\&quot;, registerSCARequest);&quot;},{&quot;language&quot;:&quot;go&quot;,&quot;tabTitle&quot;:&quot;Go&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Go API Library v17.0.0\\nimport (\\n  \\&quot;context\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v17\\\/src\\\/common\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v17\\\/src\\\/adyen\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v17\\\/src\\\/balancePlatform\\&quot;\\n)\\nclient := adyen.NewClient(&amp;common.Config{\\n  ApiKey:      \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;,\\n  Environment: common.TestEnv,\\n})\\n\\n\\\/\\\/ Create the request object(s)\\ndelegatedAuthenticationData := balancePlatform.DelegatedAuthenticationData{\\n  SdkOutput: \\&quot;eyJhdHRlc3RhdGlvbk9iamVjdCI6Im8yTm1iWF...\\&quot;,\\n}\\n\\nregisterSCARequest := balancePlatform.RegisterSCARequest{\\n  StrongCustomerAuthentication: delegatedAuthenticationData,\\n  PaymentInstrumentId: \\&quot;PI00000000000000000000001\\&quot;,\\n}\\n\\n\\\/\\\/ Send the request\\nservice := client.BalancePlatform()\\nreq := service.ManageScaDevicesApi.CompleteRegistrationOfScaDeviceInput(\\&quot;id\\&quot;).RegisterSCARequest(registerSCARequest)\\nres, httpRes, err := service.ManageScaDevicesApi.CompleteRegistrationOfScaDevice(context.Background(), req)&quot;},{&quot;language&quot;:&quot;py&quot;,&quot;tabTitle&quot;:&quot;Python&quot;,&quot;content&quot;:&quot;# Adyen Python API Library v13.3.0\\nimport Adyen\\n\\nadyen = Adyen.Adyen()\\nadyen.client.xapikey = \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;\\nadyen.client.platform = \\&quot;test\\&quot; # The environment to use library in.\\n\\n# Create the request object(s)\\njson_request = {\\n  \\&quot;paymentInstrumentId\\&quot;: \\&quot;PI00000000000000000000001\\&quot;,\\n  \\&quot;strongCustomerAuthentication\\&quot;: {\\n    \\&quot;sdkOutput\\&quot;: \\&quot;eyJhdHRlc3RhdGlvbk9iamVjdCI6Im8yTm1iWF...\\&quot;\\n  }\\n}\\n\\n# Send the request\\nresult = adyen.balancePlatform.manage_sca_devices_api.complete_registration_of_sca_device(request=json_request, id=\\&quot;id\\&quot;)&quot;},{&quot;language&quot;:&quot;rb&quot;,&quot;tabTitle&quot;:&quot;Ruby&quot;,&quot;content&quot;:&quot;# Adyen Ruby API Library v10.1.1\\nrequire \\&quot;adyen-ruby-api-library\\&quot;\\n\\nadyen = Adyen::Client.new\\nadyen.api_key = 'ADYEN_BALANCE_PLATFORM_API_KEY'\\nadyen.env = :test # Set to \\&quot;live\\&quot; for live environment\\n\\n# Create the request object(s)\\nrequest_body = {\\n  :paymentInstrumentId =&gt; 'PI00000000000000000000001',\\n  :strongCustomerAuthentication =&gt; {\\n    :sdkOutput =&gt; 'eyJhdHRlc3RhdGlvbk9iamVjdCI6Im8yTm1iWF...'\\n  }\\n}\\n\\n# Send the request\\nresult = adyen.balancePlatform.manage_sca_devices_api.complete_registration_of_sca_device(request_body, 'id')&quot;},{&quot;language&quot;:&quot;ts&quot;,&quot;tabTitle&quot;:&quot;NodeJS (TypeScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v23.3.0\\nimport { Client, BalancePlatformAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\nconst client = new Client({ apiKey: \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot; });\\n\\n\\\/\\\/ Create the request object(s)\\nconst delegatedAuthenticationData: Types.balancePlatform.DelegatedAuthenticationData = {\\n  sdkOutput: \\&quot;eyJhdHRlc3RhdGlvbk9iamVjdCI6Im8yTm1iWF...\\&quot;\\n};\\n\\nconst registerSCARequest: Types.balancePlatform.RegisterSCARequest = {\\n  strongCustomerAuthentication: delegatedAuthenticationData,\\n  paymentInstrumentId: \\&quot;PI00000000000000000000001\\&quot;\\n};\\n\\n\\\/\\\/ Send the request\\nconst balancePlatformAPI = new BalancePlatformAPI(client);\\nconst response = balancePlatformAPI.ManageScaDevicesApi.completeRegistrationOfScaDevice(\\&quot;id\\&quot;, registerSCARequest);&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>Verify that the response contains <code>success<\/code> <strong>true<\/strong>.<\/p>\n<\/li>\n<\/ol>\n<p>The registration is now complete and the device ID is connected to the payment instrument. An element for the device ID is added to the <code>data<\/code> array of GET  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/balanceplatform\/latest\/get\/registeredDevices\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/registeredDevices<\/a>. The user can start authenticating themselves for future operations related to the payment instrument ID used during registration.<\/p>\n<p>You cannot register a device more than once. However, now that the device is registered, you can connect more payment instruments to the device <a href=\"\/pt\/business-accounts\/manage-sca-devices\/#associate-business-accounts-to-a-registered-device\">using the device association API<\/a>.<\/p>","url":"https:\/\/docs.adyen.com\/pt\/business-accounts\/register-sca-devices","articleFields":{"description":"Learn how to use our Authentication SDK to register an iOS or Android device for SCA purposes.","feedback_component":true,"next_steps_description":"Authenticate your users before authorizing operations.","next_steps":[{"title":"Manage devices","description":"Use our APIs to get registration details, connect payment instruments to devices, and delete registrations.","url":"\/business-accounts\/manage-sca-devices","required":true},{"title":"Authenticate users when making a transfer","description":"Use our Authentication SDK to authenticate your users before they transfer funds.","url":"\/business-accounts\/sca-for-funds-transfers","required":true},{"title":"Authenticate users when getting their transaction history","description":"Use our Authentication SDK to authenticate your users before showing them their transaction history.","url":"\/business-accounts\/sca-for-transaction-history","required":true}],"type":"page","_expandable":{"operations":""},"status":"current","parameters":{"directoryPath":"\/business-accounts","model":"balance platform"},"last_edit_on":"30-11-2022 17:52"},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/business-accounts\/register-sca-devices","title":"Register a device for SCA","content":"To enable Strong Customer Authentication (SCA) for your users, you must register their device as an SCA device. The registration associates your user's device with their business account.\nYou can register devices for SCA using Adyen's Authentication SDK. To do so:\n\nCheck SCA eligibility.\nInitiate the device registration from your server.\nRegister the device.\nFinalize the registration from your server.\n\nThe following sections explain how to perform all the steps to register a user's device for SCA.\nRequirements\n\nMake sure that the operating system or web browser on your user's device supports SCA.\nMake sure that you have installed the Authentication SDK.\nMake sure that your API credential has the following role:\n\nBank SCA Webservice Role\n\n\nCheck SCA eligibility\n\nThis functionality requires additional configuration from Adyen. To enable it, contact our Support Team.\n\n\n\n    \n        \n        \n    \n\n\nYou will use the sdkOutput when initiating the registration.\nInitiate device registration\nRegistering the device is a one-off procedure for each device. If your user has multiple devices, you need to register each of their devices separately.\nAfter a device is registered, you can associate more payment instruments with it. To learn how to associate multiple payment instruments with a registered device, go to Manage registered devices.\n\nTo start the device registration, make a POST  \/registeredDevices request from your server.\nIn the request, specify the following:\n\n\n\nRequest parameter\nRequired\nDescription\n\n\n\n\n paymentInstrumentId\nyes\nThe unique identifier of the business account you want to register the device for.\n\n\n name\nno\nThe name of the SCA device that you are registering. You can use it to help your users identify the device. If you do not specify a name, Adyen automatically generates one.\n\n\n strongCustomerAuthentication.sdkOutput\nyes\nBase64-encoded blob of data created in the previous step.\n\n\n\n\n    \n\nThe response returns:\n\n sdkInput: pass the value to the SDK when registering the device.\n id: the device ID needed when finalizing the registration. This ID begins either with BSDR or RD.\n\nWe suggest that you create and store a mapping between the registered device id and the human-readable account holder name. For example, BSDR00000000000000000000001 is \"Cardholder's iPhone\". You can use this pair later to show the details, for example, when deregistering the device if the user doesn't specify a device name during registration.\n\n    \n\nRegister the device\nTo register the device with the Authentication SDK:\n\n\nAuthenticate the user by performing two-factor authentication (2FA).\n\n\nTrigger the SDK to start the device registration and pass sdkInput from step 2.\n\n\n    \n        \n        \n    \n\n\n\n\nPass sdkOutput to your server.\n\n\nFinalize registration\nTo finalize the device registration:\n\n\nMake a PATCH  \/registeredDevices\/{id} request from your server. Specify the following parameters:\n\n\n\nParameter\nParameter type\nDescription\n\n\n\n\n id\nPath\nThe unique identifier of the SCA device. You obtain this id after you initiate the device registration.\n\n\n paymentInstrumentId\nBody\nThe unique identifier of the business account you want to register the device for.\n\n\n strongCustomerAuthentication.sdkOutput\nBody\nBase64-encoded blob of data created in the previous step.\n\n\n\n\n\n\n\n\nVerify that the response contains success true.\n\n\nThe registration is now complete and the device ID is connected to the payment instrument. An element for the device ID is added to the data array of GET  \/registeredDevices. The user can start authenticating themselves for future operations related to the payment instrument ID used during registration.\nYou cannot register a device more than once. However, now that the device is registered, you can connect more payment instruments to the device using the device association API.","type":"page","locale":"pt","boost":18,"hierarchy":{"lvl0":"Home","lvl1":"Business accounts","lvl2":"Register a device for SCA"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/business-accounts","lvl2":"\/pt\/business-accounts\/register-sca-devices"},"levels":3,"category":"","category_color":"","tags":["Register","device"]}}
