{"title":"Manage bank account details","category":"default","creationDate":1675944360,"content":"<p>This page explains how to manage bank account details for third-party payouts. It covers how to securely <a href=\"#store-bank-account-details\">store bank account details<\/a>, allowing you to process bank account transfers efficiently.<\/p>\n<h2>Tokenization for payouts<\/h2>\n<p>Adyen's <a href=\"\/pt\/online-payments\/tokenization\">tokenization<\/a> service lets you process payouts to your counterparties using tokenized bank account details. A token is a unique reference for a third party's bank account details, which helps you minimize security risks, simplify data management, and streamline recurring payouts to known recipients.<\/p>\n<h2>Requirements<\/h2>\n<p>Before you begin, take into account the following requirements, limitations, and preparations.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Requirement<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>Integration type<\/strong><\/td>\n<td style=\"text-align: left;\">An Adyen <a href=\"\/pt\/payouts\/payout-service\/integration-checklist\/\">payout service integration<\/a> and our  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/overview\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Checkout API<\/a> for tokenization.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/pt\/development-resources\/api-credentials\">API credentials<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">Your company (<span translate=\"no\"><strong>ws@Company.[YourCompanyAccount]<\/strong><\/span>) has the following <a href=\"\/pt\/development-resources\/api-credentials\/roles\">role<\/a> to use with the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/overview\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Checkout API<\/a>:<br><ul><li><strong>Checkout encrypted cardholder data<\/strong><\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/pt\/development-resources\/webhooks\">Webhooks<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">Your server must be able to receive and accept webhooks.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Limitations<\/strong><\/td>\n<td style=\"text-align: left;\">Take the following limitations into account:<ul><li>You cannot use local account details for cross-border transfers. When tokenizing bank details for cross-border payouts, you must use a format that supports them, such as  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/transfers\/latest\/post\/transfers#request-counterparty-bankAccount-accountIdentification-NumberAndBicAccountIdentification\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">NumberAndBicAccountIdentification<\/a>.<\/li><li>The tokenization service does not validate bank accounts when creating a token. Invalid details may lead to failed payouts later.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Setup steps<\/strong><\/td>\n<td style=\"text-align: left;\">Reach out to your Adyen contact to enable the feature on your account.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Supported countries\/regions<\/h2>\n<p>Adyen currently supports payouts to tokenized local bank account details in the following regions:<\/p>\n<div class=\"row\" style=\"align-items: flex-start;justify-content: center;\">\n<div class=\"col col-12 col-md-3\" style=\"background-color:transparent;;\"><table><thead><tr><th>Europe<\/th><th><\/th><\/tr><\/thead><tbody><\/tbody><\/table><div class=\"sc-columns\" style=\"columns:1 auto;-moz-columns:1 auto;column-gap:normal;-moz-column-gap:normal;\"><p>IBANs (SEPA Direct Debit)<br>\nUK Local (BACS)<\/p><\/div><\/div><div class=\"col col-12 col-md-9\" style=\"background-color:transparent;;\"><table><thead><tr><th>North America<\/th><th><\/th><\/tr><\/thead><tbody><\/tbody><\/table><div class=\"sc-columns\" style=\"columns:1 auto;-moz-columns:1 auto;column-gap:normal;-moz-column-gap:normal;\"><p>US Local (ACH)<\/p><\/div><\/div><\/div>\n<h2 id=\"store-bank-account-details\">Store bank account details<\/h2>\n<p>To tokenize and store bank account details:<\/p>\n<ol>\n<li>\n<p>Make a POST  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments<\/a> request, specifying the following parameters:<\/p>\n<div class=\"sticky-table-container\">\n    \n<table>\n<thead>\n<tr>\n<th>Request parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-amount-currency\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">amount.currency<\/a><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>Set to the <a href=\"\/pt\/development-resources\/currency-codes\/#currency-codes\">currency<\/a> that is applicable to the bank account.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-amount-value\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">amount.value<\/a><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>Set to <strong>0<\/strong> (zero) to combine with a zero-auth payment.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-paymentMethod\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">paymentMethod<\/a><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>Set to one of the following: <ul><li><span translate=\"no\"><strong>sepadirectdebit<\/strong><\/span>: SEPA Direct Debit<\/li><li><span translate=\"no\"><strong>ukLocal<\/strong><\/span>: UK Local<\/li><li><span translate=\"no\"><strong>usLocal<\/strong><\/span>: US Local<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-billingAddress\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">billingAddress<\/a><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>An object that contains the address details of the bank account.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-enablePayOut\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">enablePayOut<\/a><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>Set to <span translate=\"no\"><strong>true<\/strong><\/span>.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-merchantAccount\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">merchantAccount<\/a><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>The identifier of your merchant account.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-recurringProcessingModel\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">recurringProcessingModel<\/a><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>Set to <span translate=\"no\"><strong>Subscription<\/strong><\/span>.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-reference\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">reference<\/a><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>Your unique reference to identify the payment request.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-returnUrl\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">returnUrl<\/a><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>The return URL to redirect the bank account holder after the payment process.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-shopperReference\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">shopperReference<\/a><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>Your unique reference to identify the bank account holder.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-storePaymentMethod\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">storePaymentMethod<\/a><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>Set to <span translate=\"no\"><strong>true<\/strong><\/span>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n<\/div>\n\n<p>The following code sample shows a zero-auth payment request that creates a token for bank account details.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Tokenization request with raw data'\" :id=\"'save-details-raw'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;curl&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/checkout-test.adyen.com\\\/v72\\\/payments \\\\\\n-H 'x-api-key: ADYEN_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-X POST \\\\\\n-d '{\\n      \\&quot;amount\\&quot;: {\\n        \\&quot;value\\&quot;: 0,\\n        \\&quot;currency\\&quot;: \\&quot;EUR\\&quot;\\n      },\\n      \\&quot;paymentMethod\\&quot;: {\\n        \\&quot;type\\&quot;: \\&quot;sepadirectdebit\\&quot;,\\n        \\&quot;iban\\&quot;: \\&quot;The IBAN of the bank account\\&quot;,\\n        \\&quot;ownerName\\&quot;: \\&quot;The owner of the bank account\\&quot;\\n      },\\n      \\&quot;billingAddress\\&quot;: {\\n        \\&quot;houseNumberOrName\\&quot;: \\&quot;1\\&quot;,\\n        \\&quot;street\\&quot;: \\&quot;Admiralenstraat\\&quot;,\\n        \\&quot;city\\&quot;: \\&quot;Amsterdam\\&quot;,\\n        \\&quot;country\\&quot;: \\&quot;NL\\&quot;,\\n        \\&quot;postalCode\\&quot;: \\&quot;1000AA\\&quot;\\n      },\\n      \\&quot;enablePayOut\\&quot;: true,\\n      \\&quot;merchantAccount\\&quot;: \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;,\\n      \\&quot;reference\\&quot;: \\&quot;A reference for the payment request\\&quot;,\\n      \\&quot;returnUrl\\&quot;: \\&quot;https:\\\/\\\/your-company.example.com\\\/...\\&quot;,\\n      \\&quot;recurringProcessingModel\\&quot;: \\&quot;Subscription\\&quot;,\\n      \\&quot;shopperReference\\&quot;: \\&quot;A reference for the bank account holder\\&quot;,\\n      \\&quot;storePaymentMethod\\&quot;: true\\n    }'&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v39.4.0\\nimport com.adyen.Client;\\nimport com.adyen.enums.Environment;\\nimport com.adyen.model.checkout.*;\\nimport java.time.OffsetDateTime;\\nimport java.util.*;\\nimport com.adyen.model.RequestOptions;\\nimport com.adyen.service.checkout.*;\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nClient client = new Client(\\&quot;ADYEN_API_KEY\\&quot;, Environment.TEST);\\n\\n\\\/\\\/ Create the request object(s)\\nAmount amount = new Amount()\\n  .currency(\\&quot;EUR\\&quot;)\\n  .value(0L);\\n\\nSepaDirectDebitDetails sepaDirectDebitDetails = new SepaDirectDebitDetails()\\n  .ownerName(\\&quot;The owner of the bank account\\&quot;)\\n  .iban(\\&quot;The IBAN of the bank account\\&quot;)\\n  .type(SepaDirectDebitDetails.TypeEnum.SEPADIRECTDEBIT);\\n\\nBillingAddress billingAddress = new BillingAddress()\\n  .country(\\&quot;NL\\&quot;)\\n  .city(\\&quot;Amsterdam\\&quot;)\\n  .houseNumberOrName(\\&quot;1\\&quot;)\\n  .street(\\&quot;Admiralenstraat\\&quot;)\\n  .postalCode(\\&quot;1000AA\\&quot;);\\n\\nPaymentRequest paymentRequest = new PaymentRequest()\\n  .reference(\\&quot;A reference for the payment request\\&quot;)\\n  .enablePayOut(true)\\n  .amount(amount)\\n  .storePaymentMethod(true)\\n  .merchantAccount(\\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;)\\n  .recurringProcessingModel(PaymentRequest.RecurringProcessingModelEnum.SUBSCRIPTION)\\n  .paymentMethod(new CheckoutPaymentMethod(sepaDirectDebitDetails))\\n  .billingAddress(billingAddress)\\n  .returnUrl(\\&quot;https:\\\/\\\/your-company.example.com\\\/...\\&quot;)\\n  .shopperReference(\\&quot;A reference for the bank account holder\\&quot;);\\n\\n\\\/\\\/ Send the request\\nPaymentsApi service = new PaymentsApi(client);\\nPaymentResponse response = service.payments(paymentRequest, new RequestOptions().idempotencyKey(\\&quot;UUID\\&quot;));&quot;},{&quot;language&quot;:&quot;php&quot;,&quot;tabTitle&quot;:&quot;PHP&quot;,&quot;content&quot;:&quot;&lt;?php\\n\\\/\\\/ Adyen PHP API Library v28.2.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Model\\\\Checkout\\\\Amount;\\nuse Adyen\\\\Model\\\\Checkout\\\\CheckoutPaymentMethod;\\nuse Adyen\\\\Model\\\\Checkout\\\\BillingAddress;\\nuse Adyen\\\\Model\\\\Checkout\\\\PaymentRequest;\\nuse Adyen\\\\Service\\\\Checkout\\\\PaymentsApi;\\n\\n$client = new Client();\\n$client-&gt;setXApiKey(\\&quot;ADYEN_API_KEY\\&quot;);\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\n$client-&gt;setEnvironment(Environment::TEST);\\n\\n\\n\\\/\\\/ Create the request object(s)\\n$amount = new Amount();\\n$amount\\n  -&gt;setCurrency(\\&quot;EUR\\&quot;)\\n  -&gt;setValue(0);\\n\\n$checkoutPaymentMethod = new CheckoutPaymentMethod();\\n$checkoutPaymentMethod\\n  -&gt;setOwnerName(\\&quot;The owner of the bank account\\&quot;)\\n  -&gt;setIban(\\&quot;The IBAN of the bank account\\&quot;)\\n  -&gt;setType(\\&quot;sepadirectdebit\\&quot;);\\n\\n$billingAddress = new BillingAddress();\\n$billingAddress\\n  -&gt;setCountry(\\&quot;NL\\&quot;)\\n  -&gt;setCity(\\&quot;Amsterdam\\&quot;)\\n  -&gt;setHouseNumberOrName(\\&quot;1\\&quot;)\\n  -&gt;setStreet(\\&quot;Admiralenstraat\\&quot;)\\n  -&gt;setPostalCode(\\&quot;1000AA\\&quot;);\\n\\n$paymentRequest = new PaymentRequest();\\n$paymentRequest\\n  -&gt;setReference(\\&quot;A reference for the payment request\\&quot;)\\n  -&gt;setEnablePayOut(true)\\n  -&gt;setAmount($amount)\\n  -&gt;setStorePaymentMethod(true)\\n  -&gt;setMerchantAccount(\\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;)\\n  -&gt;setRecurringProcessingModel(\\&quot;Subscription\\&quot;)\\n  -&gt;setPaymentMethod($checkoutPaymentMethod)\\n  -&gt;setBillingAddress($billingAddress)\\n  -&gt;setReturnUrl(\\&quot;https:\\\/\\\/your-company.example.com\\\/...\\&quot;)\\n  -&gt;setShopperReference(\\&quot;A reference for the bank account holder\\&quot;);\\n\\n$requestOptions['idempotencyKey'] = 'UUID';\\n\\n\\\/\\\/ Send the request\\n$service = new PaymentsApi($client);\\n$response = $service-&gt;payments($paymentRequest, $requestOptions);&quot;},{&quot;language&quot;:&quot;cs&quot;,&quot;tabTitle&quot;:&quot;C#&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen .net API Library v32.1.2\\nusing Adyen;\\nusing Environment = Adyen.Model.Environment;\\nusing Adyen.Model;\\nusing Adyen.Model.Checkout;\\nusing Adyen.Service.Checkout;\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nvar config = new Config()\\n{\\n    XApiKey = \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment = Environment.Test\\n};\\nvar client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\nAmount amount = new Amount\\n{\\n  Currency = \\&quot;EUR\\&quot;,\\n  Value = 0\\n};\\n\\nSepaDirectDebitDetails sepaDirectDebitDetails = new SepaDirectDebitDetails\\n{\\n  OwnerName = \\&quot;The owner of the bank account\\&quot;,\\n  Iban = \\&quot;The IBAN of the bank account\\&quot;,\\n  Type = SepaDirectDebitDetails.TypeEnum.Sepadirectdebit\\n};\\n\\nBillingAddress billingAddress = new BillingAddress\\n{\\n  Country = \\&quot;NL\\&quot;,\\n  City = \\&quot;Amsterdam\\&quot;,\\n  HouseNumberOrName = \\&quot;1\\&quot;,\\n  Street = \\&quot;Admiralenstraat\\&quot;,\\n  PostalCode = \\&quot;1000AA\\&quot;\\n};\\n\\nPaymentRequest paymentRequest = new PaymentRequest\\n{\\n  Reference = \\&quot;A reference for the payment request\\&quot;,\\n  EnablePayOut = true,\\n  Amount = amount,\\n  StorePaymentMethod = true,\\n  MerchantAccount = \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;,\\n  RecurringProcessingModel = PaymentRequest.RecurringProcessingModelEnum.Subscription,\\n  PaymentMethod = new CheckoutPaymentMethod(sepaDirectDebitDetails),\\n  BillingAddress = billingAddress,\\n  ReturnUrl = \\&quot;https:\\\/\\\/your-company.example.com\\\/...\\&quot;,\\n  ShopperReference = \\&quot;A reference for the bank account holder\\&quot;\\n};\\n\\n\\\/\\\/ Send the request\\nvar service = new PaymentsService(client);\\nvar response = service.Payments(paymentRequest, requestOptions: new RequestOptions { IdempotencyKey = \\&quot;UUID\\&quot;});&quot;},{&quot;language&quot;:&quot;js&quot;,&quot;tabTitle&quot;:&quot;NodeJS (JavaScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v29.1.0\\nconst { Client, CheckoutAPI } = require('@adyen\\\/api-library');\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nconst config = new Config({\\n  apiKey: \\&quot;ADYEN_API_KEY\\&quot;,\\n  environment: EnvironmentEnum.TEST\\n});\\n\\nconst client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\nconst paymentRequest = {\\n  amount: {\\n    value: 0,\\n    currency: \\&quot;EUR\\&quot;\\n  },\\n  paymentMethod: {\\n    type: \\&quot;sepadirectdebit\\&quot;,\\n    iban: \\&quot;The IBAN of the bank account\\&quot;,\\n    ownerName: \\&quot;The owner of the bank account\\&quot;\\n  },\\n  billingAddress: {\\n    houseNumberOrName: \\&quot;1\\&quot;,\\n    street: \\&quot;Admiralenstraat\\&quot;,\\n    city: \\&quot;Amsterdam\\&quot;,\\n    country: \\&quot;NL\\&quot;,\\n    postalCode: \\&quot;1000AA\\&quot;\\n  },\\n  enablePayOut: true,\\n  merchantAccount: \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;,\\n  reference: \\&quot;A reference for the payment request\\&quot;,\\n  returnUrl: \\&quot;https:\\\/\\\/your-company.example.com\\\/...\\&quot;,\\n  recurringProcessingModel: \\&quot;Subscription\\&quot;,\\n  shopperReference: \\&quot;A reference for the bank account holder\\&quot;,\\n  storePaymentMethod: true\\n}\\n\\n\\\/\\\/ Send the request\\nconst checkoutAPI = new CheckoutAPI(client);\\nconst response = checkoutAPI.PaymentsApi.payments(paymentRequest, { idempotencyKey: \\&quot;UUID\\&quot; });&quot;},{&quot;language&quot;:&quot;go&quot;,&quot;tabTitle&quot;:&quot;Go&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Go API Library v21.0.0\\nimport (\\n  \\&quot;context\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v21\\\/src\\\/common\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v21\\\/src\\\/adyen\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v21\\\/src\\\/checkout\\&quot;\\n)\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nclient := adyen.NewClient(&amp;common.Config{\\n  ApiKey:      \\&quot;ADYEN_API_KEY\\&quot;,\\n  Environment: common.TestEnv,\\n})\\n\\n\\\/\\\/ Create the request object(s)\\namount := checkout.Amount{\\n  Currency: \\&quot;EUR\\&quot;,\\n  Value: 0,\\n}\\n\\nsepaDirectDebitDetails := checkout.SepaDirectDebitDetails{\\n  OwnerName: \\&quot;The owner of the bank account\\&quot;,\\n  Iban: \\&quot;The IBAN of the bank account\\&quot;,\\n  Type: common.PtrString(\\&quot;sepadirectdebit\\&quot;),\\n}\\n\\nbillingAddress := checkout.BillingAddress{\\n  Country: \\&quot;NL\\&quot;,\\n  City: \\&quot;Amsterdam\\&quot;,\\n  HouseNumberOrName: \\&quot;1\\&quot;,\\n  Street: \\&quot;Admiralenstraat\\&quot;,\\n  PostalCode: \\&quot;1000AA\\&quot;,\\n}\\n\\npaymentRequest := checkout.PaymentRequest{\\n  Reference: \\&quot;A reference for the payment request\\&quot;,\\n  EnablePayOut: common.PtrBool(true),\\n  Amount: amount,\\n  StorePaymentMethod: common.PtrBool(true),\\n  MerchantAccount: \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;,\\n  RecurringProcessingModel: common.PtrString(\\&quot;Subscription\\&quot;),\\n  PaymentMethod: checkout.SepaDirectDebitDetailsAsCheckoutPaymentMethod(&amp;sepaDirectDebitDetails),\\n  BillingAddress: &amp;billingAddress,\\n  ReturnUrl: \\&quot;https:\\\/\\\/your-company.example.com\\\/...\\&quot;,\\n  ShopperReference: common.PtrString(\\&quot;A reference for the bank account holder\\&quot;),\\n}\\n\\n\\\/\\\/ Send the request\\nservice := client.Checkout()\\nreq := service.PaymentsApi.PaymentsInput().IdempotencyKey(\\&quot;UUID\\&quot;).PaymentRequest(paymentRequest)\\nres, httpRes, err := service.PaymentsApi.Payments(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.6.0\\nimport Adyen\\n\\nadyen = Adyen.Adyen()\\nadyen.client.xapikey = \\&quot;ADYEN_API_KEY\\&quot;\\n# For the LIVE environment, also include your liveEndpointUrlPrefix.\\nadyen.client.platform = \\&quot;test\\&quot; # The environment to use library in.\\n\\n# Create the request object(s)\\njson_request = {\\n  \\&quot;amount\\&quot;: {\\n    \\&quot;value\\&quot;: 0,\\n    \\&quot;currency\\&quot;: \\&quot;EUR\\&quot;\\n  },\\n  \\&quot;paymentMethod\\&quot;: {\\n    \\&quot;type\\&quot;: \\&quot;sepadirectdebit\\&quot;,\\n    \\&quot;iban\\&quot;: \\&quot;The IBAN of the bank account\\&quot;,\\n    \\&quot;ownerName\\&quot;: \\&quot;The owner of the bank account\\&quot;\\n  },\\n  \\&quot;billingAddress\\&quot;: {\\n    \\&quot;houseNumberOrName\\&quot;: \\&quot;1\\&quot;,\\n    \\&quot;street\\&quot;: \\&quot;Admiralenstraat\\&quot;,\\n    \\&quot;city\\&quot;: \\&quot;Amsterdam\\&quot;,\\n    \\&quot;country\\&quot;: \\&quot;NL\\&quot;,\\n    \\&quot;postalCode\\&quot;: \\&quot;1000AA\\&quot;\\n  },\\n  \\&quot;enablePayOut\\&quot;: True,\\n  \\&quot;merchantAccount\\&quot;: \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;,\\n  \\&quot;reference\\&quot;: \\&quot;A reference for the payment request\\&quot;,\\n  \\&quot;returnUrl\\&quot;: \\&quot;https:\\\/\\\/your-company.example.com\\\/...\\&quot;,\\n  \\&quot;recurringProcessingModel\\&quot;: \\&quot;Subscription\\&quot;,\\n  \\&quot;shopperReference\\&quot;: \\&quot;A reference for the bank account holder\\&quot;,\\n  \\&quot;storePaymentMethod\\&quot;: True\\n}\\n\\n# Send the request\\nresult = adyen.checkout.payments_api.payments(request=json_request, idempotency_key=\\&quot;UUID\\&quot;)&quot;},{&quot;language&quot;:&quot;rb&quot;,&quot;tabTitle&quot;:&quot;Ruby&quot;,&quot;content&quot;:&quot;# Adyen Ruby API Library v10.4.0\\nrequire \\&quot;adyen-ruby-api-library\\&quot;\\n\\nadyen = Adyen::Client.new\\nadyen.api_key = 'ADYEN_API_KEY'\\n# For the LIVE environment, also include your liveEndpointUrlPrefix.\\nadyen.env = :test # Set to \\&quot;live\\&quot; for live environment\\n\\n# Create the request object(s)\\nrequest_body = {\\n  :amount =&gt; {\\n    :value =&gt; 0,\\n    :currency =&gt; 'EUR'\\n  },\\n  :paymentMethod =&gt; {\\n    :type =&gt; 'sepadirectdebit',\\n    :iban =&gt; 'The IBAN of the bank account',\\n    :ownerName =&gt; 'The owner of the bank account'\\n  },\\n  :billingAddress =&gt; {\\n    :houseNumberOrName =&gt; '1',\\n    :street =&gt; 'Admiralenstraat',\\n    :city =&gt; 'Amsterdam',\\n    :country =&gt; 'NL',\\n    :postalCode =&gt; '1000AA'\\n  },\\n  :enablePayOut =&gt; true,\\n  :merchantAccount =&gt; 'YOUR_MERCHANT_ACCOUNT',\\n  :reference =&gt; 'A reference for the payment request',\\n  :returnUrl =&gt; 'https:\\\/\\\/your-company.example.com\\\/...',\\n  :recurringProcessingModel =&gt; 'Subscription',\\n  :shopperReference =&gt; 'A reference for the bank account holder',\\n  :storePaymentMethod =&gt; true\\n}\\n\\n# Send the request\\nresult = adyen.checkout.payments_api.payments(request_body, headers: { 'Idempotency-Key' =&gt; 'UUID' })&quot;},{&quot;language&quot;:&quot;ts&quot;,&quot;tabTitle&quot;:&quot;NodeJS (TypeScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v29.1.0\\nimport { Client, CheckoutAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nconst config = new Config({\\n  apiKey: \\&quot;ADYEN_API_KEY\\&quot;,\\n  environment: EnvironmentEnum.TEST\\n});\\n\\nconst client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\nconst amount: Types.checkout.Amount = {\\n  currency: \\&quot;EUR\\&quot;,\\n  value: 0\\n};\\n\\nconst sepaDirectDebitDetails: Types.checkout.SepaDirectDebitDetails = {\\n  ownerName: \\&quot;The owner of the bank account\\&quot;,\\n  iban: \\&quot;The IBAN of the bank account\\&quot;,\\n  type: Types.checkout.SepaDirectDebitDetails.TypeEnum.Sepadirectdebit\\n};\\n\\nconst billingAddress: Types.checkout.BillingAddress = {\\n  country: \\&quot;NL\\&quot;,\\n  city: \\&quot;Amsterdam\\&quot;,\\n  houseNumberOrName: \\&quot;1\\&quot;,\\n  street: \\&quot;Admiralenstraat\\&quot;,\\n  postalCode: \\&quot;1000AA\\&quot;\\n};\\n\\nconst paymentRequest: Types.checkout.PaymentRequest = {\\n  reference: \\&quot;A reference for the payment request\\&quot;,\\n  enablePayOut: true,\\n  amount: amount,\\n  storePaymentMethod: true,\\n  merchantAccount: \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;,\\n  recurringProcessingModel: Types.checkout.PaymentRequest.RecurringProcessingModelEnum.Subscription,\\n  paymentMethod: sepaDirectDebitDetails,\\n  billingAddress: billingAddress,\\n  returnUrl: \\&quot;https:\\\/\\\/your-company.example.com\\\/...\\&quot;,\\n  shopperReference: \\&quot;A reference for the bank account holder\\&quot;\\n};\\n\\n\\\/\\\/ Send the request\\nconst checkoutAPI = new CheckoutAPI(client);\\nconst response = checkoutAPI.PaymentsApi.payments(paymentRequest, { idempotencyKey: \\&quot;UUID\\&quot; });&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>The token is created after a successful payment authorization. This ensures that the payment details are linked to an active, chargeable account.<\/p>\n<\/li>\n<li>\n<p>Find the token in the <code>storedPaymentMethodId<\/code> parameter. You can locate it in either of these places:<\/p>\n<ul>\n<li>In the successful authorization response, under <code>additionalData.tokenization.storedPaymentMethodId<\/code>.<\/li>\n<li>In the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Tokenization-webhooks\/latest\/post\/recurring.token.created\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">recurring.token.created<\/a> webhook.<\/li>\n<\/ul>\n<p>The following code sample shows an authorized payment response that includes the token.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Tokenization response with raw bank account data'\" :id=\"'token-response-raw'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/checkout-test.adyen.com\\\/checkout\\\/v72\\\/payments \\\\\\n-H 'x-api-key: ADYEN_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-X POST \\\\\\n-d '{\\n    \\&quot;additionalData\\&quot;: {\\n        \\&quot;sepadirectdebit.sequenceType\\&quot;: \\&quot;First\\&quot;,\\n        \\&quot;recurring.recurringDetailReference\\&quot;: \\&quot;W7RFRMFXHP447NV5\\&quot;,\\n        \\&quot;recurringProcessingModel\\&quot;: \\&quot;Subscription\\&quot;,\\n        \\&quot;recurring.shopperReference\\&quot;: \\&quot;Your unique reference for the bank account holder\\&quot;,\\n        \\&quot;sepadirectdebit.dateOfSignature\\&quot;: \\&quot;2025-08-25\\&quot;,\\n        \\&quot;tokenization.store.operationType\\&quot;: \\&quot;created\\&quot;,\\n        \\&quot;sepadirectdebit.mandateId\\&quot;: \\&quot;GWWSVJKG5DB89PV5\\&quot;,\\n        \\&quot;tokenization.shopperReference\\&quot;: \\&quot;Your unique reference for the bank account holder\\&quot;,\\n        \\&quot;tokenization.storedPaymentMethodId\\&quot;: \\&quot;W7RFRMFXHP447NV5\\&quot;\\n    },\\n    \\&quot;pspReference\\&quot;: \\&quot;GWWSVJKG5DB89PV5\\&quot;,\\n    \\&quot;resultCode\\&quot;: \\&quot;Authorised\\&quot;,\\n    \\&quot;amount\\&quot;: {\\n        \\&quot;currency\\&quot;: \\&quot;EUR\\&quot;,\\n        \\&quot;value\\&quot;: 0\\n    },\\n    \\&quot;merchantReference\\&quot;: \\&quot;Your unique reference for the payment request\\&quot;,\\n    \\&quot;paymentMethod\\&quot;: {\\n        \\&quot;type\\&quot;: \\&quot;sepadirectdebit\\&quot;\\n    }\\n}'&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>In your system, store the following parameters together, so that the token is associated with the bank account holder:<\/p>\n<ul>\n<li><code>additionalData.tokenization.shopperReference<\/code><\/li>\n<li><code>additionalData.tokenization.storedPaymentMethodId<\/code><\/li>\n<\/ul>\n<p>You must provide these values when making a bank account payout request.<\/p>\n<\/li>\n<\/ol>","url":"https:\/\/docs.adyen.com\/pt\/payouts\/payout-service\/pay-out-to-bank-accounts\/manage-bank-details","articleFields":{"description":"Learn how to securely process the details of third-party bank accounts.","feedback_component":true,"next_steps":[{"title":"Make a bank account payout request","description":"Pay out your funds to a third-party bank account using the Transfers API.","url":"\/payouts\/payout-service\/pay-out-to-bank-accounts\/bank-payout-request","required":false}],"type":"page","_expandable":{"operations":""},"status":"current","cache_enable":false,"parameters":{"integrationType":"payouts","directoryPath":"\/payouts\/payout-service","payoutType":"third-party"},"filters_component":false,"page_id":"42a76235-52b1-4be4-bdb2-7ae9bd417a01","last_edit_on":"30-11-2023 12:07"},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/payouts\/payout-service\/pay-out-to-bank-accounts\/manage-bank-details","title":"Manage bank account details","content":"This page explains how to manage bank account details for third-party payouts. It covers how to securely store bank account details, allowing you to process bank account transfers efficiently.\nTokenization for payouts\nAdyen's tokenization service lets you process payouts to your counterparties using tokenized bank account details. A token is a unique reference for a third party's bank account details, which helps you minimize security risks, simplify data management, and streamline recurring payouts to known recipients.\nRequirements\nBefore you begin, take into account the following requirements, limitations, and preparations.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nAn Adyen payout service integration and our  Checkout API for tokenization.\n\n\nAPI credentials\nYour company (ws@Company.[YourCompanyAccount]) has the following role to use with the  Checkout API:Checkout encrypted cardholder data\n\n\nWebhooks\nYour server must be able to receive and accept webhooks.\n\n\nLimitations\nTake the following limitations into account:You cannot use local account details for cross-border transfers. When tokenizing bank details for cross-border payouts, you must use a format that supports them, such as  NumberAndBicAccountIdentification.The tokenization service does not validate bank accounts when creating a token. Invalid details may lead to failed payouts later.\n\n\n\n\nSetup steps\nReach out to your Adyen contact to enable the feature on your account.\n\n\n\nSupported countries\/regions\nAdyen currently supports payouts to tokenized local bank account details in the following regions:\n\nEuropeIBANs (SEPA Direct Debit)\nUK Local (BACS)North AmericaUS Local (ACH)\nStore bank account details\nTo tokenize and store bank account details:\n\n\nMake a POST  \/payments request, specifying the following parameters:\n\n    \n\n\n\nRequest parameter\nRequired\nDescription\n\n\n\n\n amount.currency\n\nSet to the currency that is applicable to the bank account.\n\n\n amount.value\n\nSet to 0 (zero) to combine with a zero-auth payment.\n\n\n paymentMethod\n\nSet to one of the following: sepadirectdebit: SEPA Direct DebitukLocal: UK LocalusLocal: US Local\n\n\n billingAddress\n\nAn object that contains the address details of the bank account.\n\n\n enablePayOut\n\nSet to true.\n\n\n merchantAccount\n\nThe identifier of your merchant account.\n\n\n recurringProcessingModel\n\nSet to Subscription.\n\n\n reference\n\nYour unique reference to identify the payment request.\n\n\n returnUrl\n\nThe return URL to redirect the bank account holder after the payment process.\n\n\n shopperReference\n\nYour unique reference to identify the bank account holder.\n\n\n storePaymentMethod\n\nSet to true.\n\n\n\n\n\n\nThe following code sample shows a zero-auth payment request that creates a token for bank account details.\n\n\n\nThe token is created after a successful payment authorization. This ensures that the payment details are linked to an active, chargeable account.\n\n\nFind the token in the storedPaymentMethodId parameter. You can locate it in either of these places:\n\nIn the successful authorization response, under additionalData.tokenization.storedPaymentMethodId.\nIn the  recurring.token.created webhook.\n\nThe following code sample shows an authorized payment response that includes the token.\n\n\n\n\n\nIn your system, store the following parameters together, so that the token is associated with the bank account holder:\n\nadditionalData.tokenization.shopperReference\nadditionalData.tokenization.storedPaymentMethodId\n\nYou must provide these values when making a bank account payout request.\n\n","type":"page","locale":"pt","boost":16,"hierarchy":{"lvl0":"Home","lvl1":"Adyen Payouts","lvl2":"Payouts and Payments","lvl3":"Pay out to bank accounts","lvl4":"Manage bank account details"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/payouts","lvl2":"https:\/\/docs.adyen.com\/pt\/payouts\/payout-service","lvl3":"https:\/\/docs.adyen.com\/pt\/payouts\/payout-service\/pay-out-to-bank-accounts","lvl4":"\/pt\/payouts\/payout-service\/pay-out-to-bank-accounts\/manage-bank-details"},"levels":5,"category":"","category_color":"","tags":["Manage","account","details"]},"articleFiles":{"save-details-raw.js":"<p alt=\"\">save-details-raw.js<\/p>"}}
