{"title":"ACH Direct Debit for API only","category":"default","creationDate":1776961628,"content":"<p>You can add ACH Direct Debit to your existing integration. The following instructions show only what you must add to your integration specifically for ACH Direct Debit.<\/p>\n<p>If an instruction on this page corresponds with a step in the main integration guide, it includes a link to that corresponding step of the main integration guide.<\/p>\n<h2>Requirements<\/h2>\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;\">Make sure that you have an existing <a href=\"\/pt\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=API%20only\">API-only integration<\/a>. <br> This page includes only instructions to add ACH Direct Debit to your existing integration.<\/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;\">To issue a refund using an API request, make sure you have the <strong>Merchant allow bank-refund<\/strong> role.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/pt\/account\/user-roles\">Customer Area roles<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">To issue a refund using the Customer Area, make sure you have the <strong>Merchant allow bank-refund<\/strong> role.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Webhooks<\/strong><\/td>\n<td style=\"text-align: left;\">Subscribe to  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Webhooks\/latest\/post\/DIRECT_DEBIT_NOTICE_OF_CHANGE_NOTIFICATION\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">DIRECT_DEBIT_NOTICE_OF_CHANGE_NOTIFICATION<\/a> webhooks to receive a notification when a shopper has outdated banking details.<\/td>\n<td> <\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Setup steps<\/strong><\/td>\n<td style=\"text-align: left;\"> Before you begin, <a href=\"\/pt\/payment-methods\/add-payment-methods\">add ACH Direct Debit in your Customer Area<\/a>.  <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Get ACH Direct Debit as an available payment method<\/h2>\n<p>When you make the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/paymentMethods\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/paymentMethods<\/a> call to <a href=\"\/pt\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=API%20only#get-available-payment-methods\">get available payment methods<\/a>, specify the following so that ACH Direct Debit is included in the response.<\/p>\n<table>\n<thead>\n<tr>\n<th>Parameter<\/th>\n<th>Values<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/paymentMethods#request-countryCode\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">countryCode<\/a><\/td>\n<td><strong><strong>US<\/strong>, <strong>PR<\/strong><\/strong><\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/paymentMethods#request-amount-currency\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">amount.currency<\/a><\/td>\n<td><strong><strong>USD<\/strong><\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Build your payment form<\/h2>\n<div class=\"sc-notice info\"><div>\n<p>We provide the logo for ACH Direct Debit that <a href=\"\/pt\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=API%20only#downloading-logos\">you can download<\/a>.<\/p>\n<\/div><\/div>\n<p>When a customer chooses to pay with ACH Direct Debit, collect the following payment details in your payment form and use these to get a <a href=\"\/pt\/payment-methods\/ach-direct-debit#mandate\">mandate from the customer<\/a>:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Payment details<\/th>\n<th style=\"text-align: left;\">Example<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">Bank account number<\/td>\n<td style=\"text-align: left;\">The US bank account number from which the payment will be debited. <br\/><br\/> Format: numeric. <br\/>Minimum length: 4<br\/>Maximum length: 17 <br\/><br\/> Example: <code>01234567890123<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Bank routing number<\/td>\n<td style=\"text-align: left;\">The 9-digit ACH routing number of the account. <div class=\"notices yellow\">Alert your customers that some banks have different routing numbers for different transfers. Customers should not provide their wire transfer routing number. <\/div><br\/>Do not remove any leading zeros. Adyen performs validation to ensure the routing number is genuine. <br\/><br\/>Example: <code>123456789<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><a href=\"#bank-account-type\">Bank account type<\/a><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>checking<\/strong><\/span> or <span translate=\"no\"><strong>savings<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Account holder name<\/td>\n<td style=\"text-align: left;\">\"John Smith\"<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Account holder address<\/td>\n<td style=\"text-align: left;\">A valid US address (optional field).<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Type of account holder<\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>personal<\/strong><\/span> or <span translate=\"no\"><strong>business<\/strong><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 id=\"bank-account-type\">Bank account type<\/h3>\n<p>Customers can use both checking accounts and savings accounts to make ACH payments. If you do not provide the <code>bankAccountType<\/code> in your payment request, this defaults to <span translate=\"no\"><strong>checking<\/strong><\/span> account. In cases where the account type defaulted to checking account while the customer provided the account number of a savings account, this mismatch will lead to a chargeback.<\/p>\n<p>To avoid chargebacks, we recommend collecting the bank account type from the customer, and providing it in your payment request.<\/p>\n<h3 id=\"sec-code\">SEC code<\/h3>\n<p>Nacha requires a <a href=\"\/pt\/payment-methods\/ach-direct-debit#sec-code\">Standard Entry Class (SEC) code<\/a> for ACH payments. If you do not provide the correct SEC code, you risk chargebacks and potential fines.<\/p>\n<p>Collect the account holder type (<span translate=\"no\"><strong>personal<\/strong><\/span> or <span translate=\"no\"><strong>business<\/strong><\/span>) from the customer and provide the appropriate SEC code in your payment request. There are a few ways you can specify an SEC code:<\/p>\n<ul>\n<li>Send the SEC code in your ACH Direct Debit payment request using the <code>additionalData.ach.secCode<\/code> field.<\/li>\n<li>Send the field <code>paymentmethod.accountHolderType<\/code> in your payment request.\n<ul>\n<li>If the value is <span translate=\"no\"><strong>business<\/strong><\/span>, we use <span translate=\"no\"><strong>CCD<\/strong><\/span>.<\/li>\n<li>If it is <span translate=\"no\"><strong>personal<\/strong><\/span>, we use <span translate=\"no\"><strong>WEB<\/strong><\/span>.<\/li>\n<\/ul><\/li>\n<li>Ask our Support Team to configure a default SEC code for all your ACH Direct Debit payments.<\/li>\n<\/ul>\n<p>If you do not provide an SEC code, we try to select the correct code based on the account holder's name. If we cannot make a confident guess, we default to <span translate=\"no\"><strong>WEB<\/strong><\/span>.<\/p>\n<h2>Add additional parameters to your \/payments request<\/h2>\n<p>When you <a href=\"\/pt\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=API%20only#make-a-payment\">make a payment<\/a>, add the following parameters:<\/p>\n<table>\n<thead>\n<tr>\n<th>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\/Checkout\/latest\/post\/payments#request-paymentMethod-AchDetails-type\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">paymentMethod.type<\/a><\/td>\n<td><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td><span translate=\"no\"><strong>ach<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-paymentMethod-AchDetails-bankAccountNumber\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">paymentMethod.bankAccountNumber<\/a> <br>or <br>  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-paymentMethod-AchDetails-encryptedBankAccountNumber\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">paymentMethod.encryptedBankAccountNumber<\/a><\/td>\n<td><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>The customer's bank account number.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-paymentMethod-AchDetails-bankAccountType\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">paymentMethod.bankAccountType<\/a><\/td>\n<td><\/td>\n<td>The <a href=\"#bank-account-type\">type of bank account<\/a>. Allowed values: <span translate=\"no\"><strong>checking<\/strong><\/span>, <span translate=\"no\"><strong>savings<\/strong><\/span>.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-paymentMethod-AchDetails-bankLocationId\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">paymentMethod.bankLocationId<\/a> <br>or <br>  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-paymentMethod-AchDetails-encryptedBankLocationId\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">paymentMethod.encryptedBankLocationId<\/a><\/td>\n<td><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>The ACH routing number of the account.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-paymentMethod-AchDetails-ownerName\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">paymentMethod.ownerName<\/a><\/td>\n<td><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>The name on the bank account.<\/td>\n<\/tr>\n<tr>\n<td><code>additionalData.ach.secCode<\/code><\/td>\n<td><\/td>\n<td>The <a href=\"\/pt\/payment-methods\/ach-direct-debit#sec-code\">SEC code<\/a> to use for the payment. Possible values: <span translate=\"no\"><strong>CDD<\/strong><\/span> (for B2B transactions), <span translate=\"no\"><strong>PPD<\/strong><\/span> (for personal transactions with written authorization), or <span translate=\"no\"><strong>WEB<\/strong><\/span> (for personal transactions with digital authorization).<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-paymentMethod-AchDetails-accountHolderType\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">paymentMethod.accountHolderType<\/a><\/td>\n<td><\/td>\n<td>The type of account holder (<span translate=\"no\"><strong>personal<\/strong><\/span> or <span translate=\"no\"><strong>business<\/strong><\/span>). If you are not using <code>additionalData.ach.secCode<\/code>, use this field to determine the SEC code.<\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Make a payment request'\" :id=\"'payments-request-api-only'\" :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;currency\\&quot;:\\&quot;USD\\&quot;,\\n    \\&quot;value\\&quot;:1000\\n  },\\n  \\&quot;reference\\&quot;:\\&quot;YOUR_ORDER_NUMBER\\&quot;,\\n  \\&quot;paymentMethod\\&quot;: {\\n    \\&quot;type\\&quot;:\\&quot;ach\\&quot;,\\n    \\&quot;encryptedBankAccountNumber\\&quot;: \\&quot;adyenjs_0_1_25$GTE\\\/ytzAupIEbFEybScAA\\\/T3W8+Xj3ZWj3CIl5IeIdMfkNd8rRnH0T\\\/YfmR9rU3pLsZDEoIg8SLGLTdehuYFf9Oxl7FO+Fqi7uFBJpDyJm0BE8IFN330k+01UNRObpLjbJSUr0a7ylZoZxEBrw7Sj2PDEIIxfnHF8mVuxanDUoD7t91MB1VKe\\\/p5vwE2YylLzkuCbmM5RXv5Ahd05eF+zL39B8+TUpuK+gShwCJH0Ay+hnF6FavpcLRvmD4YYL4glBTqiEta+vsO6R9EDejDRlDTOqDAZ4P5gleU1ALEkWzwcN+GNCk0K0LQVNkPCsMUTLIeor+n95t3zuUC+5kTAw==$a7K23S61C2maU8SUH6w\\\/XzZbNYoXF\\\/ndSLd3JyLS51EqXCEx8JGOzFjp52uIKCyHPxxr9zquWSqdiC8GQsXl1mth2AOS97Xcwu1pf+pYO3NGCPsTzQNKoXcd5yyyb+1SYdiiPsPSdSNhb1CT9O2rvfWRqSBUSikgyhoYkUg\\\/o8KPI8hKVvpdUf5EEZoctKPr5CU7mXFp+pD8M2FzDP8dr6KYgGprtytWjPxXYtUw7T+uNJfbuIvAuKDsFPK0UrkYcDyW43QHZwtualg\\\/YRDXnIzeIdY\\\/I5s13zGsWUGWVuOFFZEANhnJCtyLbQCVYzqs6t9ziAARMXyb\\\/ZhUR+\\\/R2gAkIP7dGQZFUyCzyCHyCSExbUv\\\/VEHSIVTR8NVUx+inHfLMtsS3cplRwCeKJ4ThQR228F8KPEaZlu7FOCUmZxQcDyYUrcTa70ddJkNEt0NsjOMUDaNPSaURUnCkFwsY83FUY\\\/rql74p8ZFF\\&quot;,\\n    \\&quot;encryptedBankLocationId\\&quot;: \\&quot;adyenjs_0_1_25$UbyYyi7693Ya9e3cZNYOJj\\\/\\\/l7bxQMMYChWRpLmzhx+WU21kI0RGOTrf26YSeGZBPY04D0vYohMLJfXkBrvIHFthOtat7ZPvQgXCpXfao3KuKogDMM6KoAVpH7wtp7D6wZfUR7uP38ARbqyl4Ztn7ymPJ3OcCl6CxqMn05ixtcLv418XvNTM+P\\\/67TLhQbdhy9OYUnh2Ja2+xueXZJRSTaUn\\\/ILtMQs81hp8XTwMF7aoQJ6cd4cxfkmZ\\\/jU57DE0YFrTtEsvsGJIcgF70vY5yXj2ODpLnnMHr3Fwd8pne0j\\\/zzd\\\/IT\\\/+UDXOQoZvzDWpmO7tNW6rcVLCEtBijnqUCw==$9COJh5qZrOHnhmPXv9z07sDKu3DCFe5iyxBwy\\\/rtDhBL7pZFpsmpxtCfFhFqjfd\\\/A2iwMFQ8WqOaHQhzKGYswlauH33WbcNVUmw+B+SvHSJIWxJOkPbWv5zCX5KIATnIRGmi9c\\\/vNNRI2TBbxML8P89245lyc2c7mIXZC\\\/xCbpVXu0fRZCEWEo2PM43HNBwYZNQ\\\/QTf285lMFNHhIEJUJnfMElHp1nV\\\/pcdo2zw8zwKsAXn\\\/BiTaT341SQcmm4JtcXvFEcetCPEElN9yemcwtCt1qzPUSZuM5+q5A\\\/s+M4edH6lyjKKUqrqxps39EJxzam0NISJIszlhPKib0ML\\\/lG7yiJU6EDBOflntKBBt490A0igN2GyK4HbxjonvlDMTgpHwkLLU5cf3zg3lfHFHyxTpsq5sLuwXuJcDaDK3TSl8\\\/jjkmCcHXWJLdK5UaqRjg1QZ4EQadTiP\\\/iPjEIrj4mKZJMXyw2gB\\\/dDDN0egEy6pQmt9pzlgRNQ=\\&quot;,\\n    \\&quot;ownerName\\&quot;: \\&quot;John Smith\\&quot;,\\n    \\&quot;bankAccountType\\&quot;:\\&quot;checking\\&quot;\\n  },\\n  \\&quot;returnUrl\\&quot;:\\&quot;https:\\\/\\\/your-company.example.com\\\/checkout?shopperOrder=12xy..\\&quot;,\\n  \\&quot;merchantAccount\\&quot;:\\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n}'&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v38.1.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;USD\\&quot;)\\n  .value(1000L);\\n\\nAchDetails achDetails = new AchDetails()\\n  .ownerName(\\&quot;John Smith\\&quot;)\\n  .bankAccountType(AchDetails.BankAccountTypeEnum.CHECKING)\\n  .encryptedBankAccountNumber(\\&quot;adyenjs_0_1_25$GTE\\\/ytzAupIEbFEybScAA\\\/T3W8+Xj3ZWj3CIl5IeIdMfkNd8rRnH0T\\\/YfmR9rU3pLsZDEoIg8SLGLTdehuYFf9Oxl7FO+Fqi7uFBJpDyJm0BE8IFN330k+01UNRObpLjbJSUr0a7ylZoZxEBrw7Sj2PDEIIxfnHF8mVuxanDUoD7t91MB1VKe\\\/p5vwE2YylLzkuCbmM5RXv5Ahd05eF+zL39B8+TUpuK+gShwCJH0Ay+hnF6FavpcLRvmD4YYL4glBTqiEta+vsO6R9EDejDRlDTOqDAZ4P5gleU1ALEkWzwcN+GNCk0K0LQVNkPCsMUTLIeor+n95t3zuUC+5kTAw==$a7K23S61C2maU8SUH6w\\\/XzZbNYoXF\\\/ndSLd3JyLS51EqXCEx8JGOzFjp52uIKCyHPxxr9zquWSqdiC8GQsXl1mth2AOS97Xcwu1pf+pYO3NGCPsTzQNKoXcd5yyyb+1SYdiiPsPSdSNhb1CT9O2rvfWRqSBUSikgyhoYkUg\\\/o8KPI8hKVvpdUf5EEZoctKPr5CU7mXFp+pD8M2FzDP8dr6KYgGprtytWjPxXYtUw7T+uNJfbuIvAuKDsFPK0UrkYcDyW43QHZwtualg\\\/YRDXnIzeIdY\\\/I5s13zGsWUGWVuOFFZEANhnJCtyLbQCVYzqs6t9ziAARMXyb\\\/ZhUR+\\\/R2gAkIP7dGQZFUyCzyCHyCSExbUv\\\/VEHSIVTR8NVUx+inHfLMtsS3cplRwCeKJ4ThQR228F8KPEaZlu7FOCUmZxQcDyYUrcTa70ddJkNEt0NsjOMUDaNPSaURUnCkFwsY83FUY\\\/rql74p8ZFF\\&quot;)\\n  .type(AchDetails.TypeEnum.ACH)\\n  .encryptedBankLocationId(\\&quot;adyenjs_0_1_25$UbyYyi7693Ya9e3cZNYOJj\\\/\\\/l7bxQMMYChWRpLmzhx+WU21kI0RGOTrf26YSeGZBPY04D0vYohMLJfXkBrvIHFthOtat7ZPvQgXCpXfao3KuKogDMM6KoAVpH7wtp7D6wZfUR7uP38ARbqyl4Ztn7ymPJ3OcCl6CxqMn05ixtcLv418XvNTM+P\\\/67TLhQbdhy9OYUnh2Ja2+xueXZJRSTaUn\\\/ILtMQs81hp8XTwMF7aoQJ6cd4cxfkmZ\\\/jU57DE0YFrTtEsvsGJIcgF70vY5yXj2ODpLnnMHr3Fwd8pne0j\\\/zzd\\\/IT\\\/+UDXOQoZvzDWpmO7tNW6rcVLCEtBijnqUCw==$9COJh5qZrOHnhmPXv9z07sDKu3DCFe5iyxBwy\\\/rtDhBL7pZFpsmpxtCfFhFqjfd\\\/A2iwMFQ8WqOaHQhzKGYswlauH33WbcNVUmw+B+SvHSJIWxJOkPbWv5zCX5KIATnIRGmi9c\\\/vNNRI2TBbxML8P89245lyc2c7mIXZC\\\/xCbpVXu0fRZCEWEo2PM43HNBwYZNQ\\\/QTf285lMFNHhIEJUJnfMElHp1nV\\\/pcdo2zw8zwKsAXn\\\/BiTaT341SQcmm4JtcXvFEcetCPEElN9yemcwtCt1qzPUSZuM5+q5A\\\/s+M4edH6lyjKKUqrqxps39EJxzam0NISJIszlhPKib0ML\\\/lG7yiJU6EDBOflntKBBt490A0igN2GyK4HbxjonvlDMTgpHwkLLU5cf3zg3lfHFHyxTpsq5sLuwXuJcDaDK3TSl8\\\/jjkmCcHXWJLdK5UaqRjg1QZ4EQadTiP\\\/iPjEIrj4mKZJMXyw2gB\\\/dDDN0egEy6pQmt9pzlgRNQ=\\&quot;);\\n\\nPaymentRequest paymentRequest = new PaymentRequest()\\n  .reference(\\&quot;YOUR_ORDER_NUMBER\\&quot;)\\n  .amount(amount)\\n  .merchantAccount(\\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;)\\n  .paymentMethod(new CheckoutPaymentMethod(achDetails))\\n  .returnUrl(\\&quot;https:\\\/\\\/your-company.example.com\\\/checkout?shopperOrder=12xy..\\&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.0.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Model\\\\Checkout\\\\Amount;\\nuse Adyen\\\\Model\\\\Checkout\\\\CheckoutPaymentMethod;\\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;USD\\&quot;)\\n  -&gt;setValue(1000);\\n\\n$checkoutPaymentMethod = new CheckoutPaymentMethod();\\n$checkoutPaymentMethod\\n  -&gt;setOwnerName(\\&quot;John Smith\\&quot;)\\n  -&gt;setBankAccountType(\\&quot;checking\\&quot;)\\n  -&gt;setEncryptedBankAccountNumber(\\&quot;adyenjs_0_1_25\\\\$GTE\\\/ytzAupIEbFEybScAA\\\/T3W8+Xj3ZWj3CIl5IeIdMfkNd8rRnH0T\\\/YfmR9rU3pLsZDEoIg8SLGLTdehuYFf9Oxl7FO+Fqi7uFBJpDyJm0BE8IFN330k+01UNRObpLjbJSUr0a7ylZoZxEBrw7Sj2PDEIIxfnHF8mVuxanDUoD7t91MB1VKe\\\/p5vwE2YylLzkuCbmM5RXv5Ahd05eF+zL39B8+TUpuK+gShwCJH0Ay+hnF6FavpcLRvmD4YYL4glBTqiEta+vsO6R9EDejDRlDTOqDAZ4P5gleU1ALEkWzwcN+GNCk0K0LQVNkPCsMUTLIeor+n95t3zuUC+5kTAw==\\\\$a7K23S61C2maU8SUH6w\\\/XzZbNYoXF\\\/ndSLd3JyLS51EqXCEx8JGOzFjp52uIKCyHPxxr9zquWSqdiC8GQsXl1mth2AOS97Xcwu1pf+pYO3NGCPsTzQNKoXcd5yyyb+1SYdiiPsPSdSNhb1CT9O2rvfWRqSBUSikgyhoYkUg\\\/o8KPI8hKVvpdUf5EEZoctKPr5CU7mXFp+pD8M2FzDP8dr6KYgGprtytWjPxXYtUw7T+uNJfbuIvAuKDsFPK0UrkYcDyW43QHZwtualg\\\/YRDXnIzeIdY\\\/I5s13zGsWUGWVuOFFZEANhnJCtyLbQCVYzqs6t9ziAARMXyb\\\/ZhUR+\\\/R2gAkIP7dGQZFUyCzyCHyCSExbUv\\\/VEHSIVTR8NVUx+inHfLMtsS3cplRwCeKJ4ThQR228F8KPEaZlu7FOCUmZxQcDyYUrcTa70ddJkNEt0NsjOMUDaNPSaURUnCkFwsY83FUY\\\/rql74p8ZFF\\&quot;)\\n  -&gt;setType(\\&quot;ach\\&quot;)\\n  -&gt;setEncryptedBankLocationId(\\&quot;adyenjs_0_1_25\\\\$UbyYyi7693Ya9e3cZNYOJj\\\/\\\/l7bxQMMYChWRpLmzhx+WU21kI0RGOTrf26YSeGZBPY04D0vYohMLJfXkBrvIHFthOtat7ZPvQgXCpXfao3KuKogDMM6KoAVpH7wtp7D6wZfUR7uP38ARbqyl4Ztn7ymPJ3OcCl6CxqMn05ixtcLv418XvNTM+P\\\/67TLhQbdhy9OYUnh2Ja2+xueXZJRSTaUn\\\/ILtMQs81hp8XTwMF7aoQJ6cd4cxfkmZ\\\/jU57DE0YFrTtEsvsGJIcgF70vY5yXj2ODpLnnMHr3Fwd8pne0j\\\/zzd\\\/IT\\\/+UDXOQoZvzDWpmO7tNW6rcVLCEtBijnqUCw==\\\\$9COJh5qZrOHnhmPXv9z07sDKu3DCFe5iyxBwy\\\/rtDhBL7pZFpsmpxtCfFhFqjfd\\\/A2iwMFQ8WqOaHQhzKGYswlauH33WbcNVUmw+B+SvHSJIWxJOkPbWv5zCX5KIATnIRGmi9c\\\/vNNRI2TBbxML8P89245lyc2c7mIXZC\\\/xCbpVXu0fRZCEWEo2PM43HNBwYZNQ\\\/QTf285lMFNHhIEJUJnfMElHp1nV\\\/pcdo2zw8zwKsAXn\\\/BiTaT341SQcmm4JtcXvFEcetCPEElN9yemcwtCt1qzPUSZuM5+q5A\\\/s+M4edH6lyjKKUqrqxps39EJxzam0NISJIszlhPKib0ML\\\/lG7yiJU6EDBOflntKBBt490A0igN2GyK4HbxjonvlDMTgpHwkLLU5cf3zg3lfHFHyxTpsq5sLuwXuJcDaDK3TSl8\\\/jjkmCcHXWJLdK5UaqRjg1QZ4EQadTiP\\\/iPjEIrj4mKZJMXyw2gB\\\/dDDN0egEy6pQmt9pzlgRNQ=\\&quot;);\\n\\n$paymentRequest = new PaymentRequest();\\n$paymentRequest\\n  -&gt;setReference(\\&quot;YOUR_ORDER_NUMBER\\&quot;)\\n  -&gt;setAmount($amount)\\n  -&gt;setMerchantAccount(\\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;)\\n  -&gt;setPaymentMethod($checkoutPaymentMethod)\\n  -&gt;setReturnUrl(\\&quot;https:\\\/\\\/your-company.example.com\\\/checkout?shopperOrder=12xy..\\&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.0.0\\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;USD\\&quot;,\\n  Value = 1000\\n};\\n\\nAchDetails achDetails = new AchDetails\\n{\\n  OwnerName = \\&quot;John Smith\\&quot;,\\n  BankAccountType = AchDetails.BankAccountTypeEnum.Checking,\\n  EncryptedBankAccountNumber = \\&quot;adyenjs_0_1_25$GTE\\\/ytzAupIEbFEybScAA\\\/T3W8+Xj3ZWj3CIl5IeIdMfkNd8rRnH0T\\\/YfmR9rU3pLsZDEoIg8SLGLTdehuYFf9Oxl7FO+Fqi7uFBJpDyJm0BE8IFN330k+01UNRObpLjbJSUr0a7ylZoZxEBrw7Sj2PDEIIxfnHF8mVuxanDUoD7t91MB1VKe\\\/p5vwE2YylLzkuCbmM5RXv5Ahd05eF+zL39B8+TUpuK+gShwCJH0Ay+hnF6FavpcLRvmD4YYL4glBTqiEta+vsO6R9EDejDRlDTOqDAZ4P5gleU1ALEkWzwcN+GNCk0K0LQVNkPCsMUTLIeor+n95t3zuUC+5kTAw==$a7K23S61C2maU8SUH6w\\\/XzZbNYoXF\\\/ndSLd3JyLS51EqXCEx8JGOzFjp52uIKCyHPxxr9zquWSqdiC8GQsXl1mth2AOS97Xcwu1pf+pYO3NGCPsTzQNKoXcd5yyyb+1SYdiiPsPSdSNhb1CT9O2rvfWRqSBUSikgyhoYkUg\\\/o8KPI8hKVvpdUf5EEZoctKPr5CU7mXFp+pD8M2FzDP8dr6KYgGprtytWjPxXYtUw7T+uNJfbuIvAuKDsFPK0UrkYcDyW43QHZwtualg\\\/YRDXnIzeIdY\\\/I5s13zGsWUGWVuOFFZEANhnJCtyLbQCVYzqs6t9ziAARMXyb\\\/ZhUR+\\\/R2gAkIP7dGQZFUyCzyCHyCSExbUv\\\/VEHSIVTR8NVUx+inHfLMtsS3cplRwCeKJ4ThQR228F8KPEaZlu7FOCUmZxQcDyYUrcTa70ddJkNEt0NsjOMUDaNPSaURUnCkFwsY83FUY\\\/rql74p8ZFF\\&quot;,\\n  Type = AchDetails.TypeEnum.Ach,\\n  EncryptedBankLocationId = \\&quot;adyenjs_0_1_25$UbyYyi7693Ya9e3cZNYOJj\\\/\\\/l7bxQMMYChWRpLmzhx+WU21kI0RGOTrf26YSeGZBPY04D0vYohMLJfXkBrvIHFthOtat7ZPvQgXCpXfao3KuKogDMM6KoAVpH7wtp7D6wZfUR7uP38ARbqyl4Ztn7ymPJ3OcCl6CxqMn05ixtcLv418XvNTM+P\\\/67TLhQbdhy9OYUnh2Ja2+xueXZJRSTaUn\\\/ILtMQs81hp8XTwMF7aoQJ6cd4cxfkmZ\\\/jU57DE0YFrTtEsvsGJIcgF70vY5yXj2ODpLnnMHr3Fwd8pne0j\\\/zzd\\\/IT\\\/+UDXOQoZvzDWpmO7tNW6rcVLCEtBijnqUCw==$9COJh5qZrOHnhmPXv9z07sDKu3DCFe5iyxBwy\\\/rtDhBL7pZFpsmpxtCfFhFqjfd\\\/A2iwMFQ8WqOaHQhzKGYswlauH33WbcNVUmw+B+SvHSJIWxJOkPbWv5zCX5KIATnIRGmi9c\\\/vNNRI2TBbxML8P89245lyc2c7mIXZC\\\/xCbpVXu0fRZCEWEo2PM43HNBwYZNQ\\\/QTf285lMFNHhIEJUJnfMElHp1nV\\\/pcdo2zw8zwKsAXn\\\/BiTaT341SQcmm4JtcXvFEcetCPEElN9yemcwtCt1qzPUSZuM5+q5A\\\/s+M4edH6lyjKKUqrqxps39EJxzam0NISJIszlhPKib0ML\\\/lG7yiJU6EDBOflntKBBt490A0igN2GyK4HbxjonvlDMTgpHwkLLU5cf3zg3lfHFHyxTpsq5sLuwXuJcDaDK3TSl8\\\/jjkmCcHXWJLdK5UaqRjg1QZ4EQadTiP\\\/iPjEIrj4mKZJMXyw2gB\\\/dDDN0egEy6pQmt9pzlgRNQ=\\&quot;\\n};\\n\\nPaymentRequest paymentRequest = new PaymentRequest\\n{\\n  Reference = \\&quot;YOUR_ORDER_NUMBER\\&quot;,\\n  Amount = amount,\\n  MerchantAccount = \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n  PaymentMethod = new CheckoutPaymentMethod(achDetails),\\n  ReturnUrl = \\&quot;https:\\\/\\\/your-company.example.com\\\/checkout?shopperOrder=12xy..\\&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 v27.0.0\\nconst { Client, CheckoutAPI } = require('@adyen\\\/api-library');\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nconst client = new Client({ apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot; });\\n\\n\\\/\\\/ Create the request object(s)\\nconst paymentRequest = {\\n  amount: {\\n    currency: \\&quot;USD\\&quot;,\\n    value: 1000\\n  },\\n  reference: \\&quot;YOUR_ORDER_NUMBER\\&quot;,\\n  paymentMethod: {\\n    type: \\&quot;ach\\&quot;,\\n    encryptedBankAccountNumber: \\&quot;adyenjs_0_1_25$GTE\\\/ytzAupIEbFEybScAA\\\/T3W8+Xj3ZWj3CIl5IeIdMfkNd8rRnH0T\\\/YfmR9rU3pLsZDEoIg8SLGLTdehuYFf9Oxl7FO+Fqi7uFBJpDyJm0BE8IFN330k+01UNRObpLjbJSUr0a7ylZoZxEBrw7Sj2PDEIIxfnHF8mVuxanDUoD7t91MB1VKe\\\/p5vwE2YylLzkuCbmM5RXv5Ahd05eF+zL39B8+TUpuK+gShwCJH0Ay+hnF6FavpcLRvmD4YYL4glBTqiEta+vsO6R9EDejDRlDTOqDAZ4P5gleU1ALEkWzwcN+GNCk0K0LQVNkPCsMUTLIeor+n95t3zuUC+5kTAw==$a7K23S61C2maU8SUH6w\\\/XzZbNYoXF\\\/ndSLd3JyLS51EqXCEx8JGOzFjp52uIKCyHPxxr9zquWSqdiC8GQsXl1mth2AOS97Xcwu1pf+pYO3NGCPsTzQNKoXcd5yyyb+1SYdiiPsPSdSNhb1CT9O2rvfWRqSBUSikgyhoYkUg\\\/o8KPI8hKVvpdUf5EEZoctKPr5CU7mXFp+pD8M2FzDP8dr6KYgGprtytWjPxXYtUw7T+uNJfbuIvAuKDsFPK0UrkYcDyW43QHZwtualg\\\/YRDXnIzeIdY\\\/I5s13zGsWUGWVuOFFZEANhnJCtyLbQCVYzqs6t9ziAARMXyb\\\/ZhUR+\\\/R2gAkIP7dGQZFUyCzyCHyCSExbUv\\\/VEHSIVTR8NVUx+inHfLMtsS3cplRwCeKJ4ThQR228F8KPEaZlu7FOCUmZxQcDyYUrcTa70ddJkNEt0NsjOMUDaNPSaURUnCkFwsY83FUY\\\/rql74p8ZFF\\&quot;,\\n    encryptedBankLocationId: \\&quot;adyenjs_0_1_25$UbyYyi7693Ya9e3cZNYOJj\\\/\\\/l7bxQMMYChWRpLmzhx+WU21kI0RGOTrf26YSeGZBPY04D0vYohMLJfXkBrvIHFthOtat7ZPvQgXCpXfao3KuKogDMM6KoAVpH7wtp7D6wZfUR7uP38ARbqyl4Ztn7ymPJ3OcCl6CxqMn05ixtcLv418XvNTM+P\\\/67TLhQbdhy9OYUnh2Ja2+xueXZJRSTaUn\\\/ILtMQs81hp8XTwMF7aoQJ6cd4cxfkmZ\\\/jU57DE0YFrTtEsvsGJIcgF70vY5yXj2ODpLnnMHr3Fwd8pne0j\\\/zzd\\\/IT\\\/+UDXOQoZvzDWpmO7tNW6rcVLCEtBijnqUCw==$9COJh5qZrOHnhmPXv9z07sDKu3DCFe5iyxBwy\\\/rtDhBL7pZFpsmpxtCfFhFqjfd\\\/A2iwMFQ8WqOaHQhzKGYswlauH33WbcNVUmw+B+SvHSJIWxJOkPbWv5zCX5KIATnIRGmi9c\\\/vNNRI2TBbxML8P89245lyc2c7mIXZC\\\/xCbpVXu0fRZCEWEo2PM43HNBwYZNQ\\\/QTf285lMFNHhIEJUJnfMElHp1nV\\\/pcdo2zw8zwKsAXn\\\/BiTaT341SQcmm4JtcXvFEcetCPEElN9yemcwtCt1qzPUSZuM5+q5A\\\/s+M4edH6lyjKKUqrqxps39EJxzam0NISJIszlhPKib0ML\\\/lG7yiJU6EDBOflntKBBt490A0igN2GyK4HbxjonvlDMTgpHwkLLU5cf3zg3lfHFHyxTpsq5sLuwXuJcDaDK3TSl8\\\/jjkmCcHXWJLdK5UaqRjg1QZ4EQadTiP\\\/iPjEIrj4mKZJMXyw2gB\\\/dDDN0egEy6pQmt9pzlgRNQ=\\&quot;,\\n    ownerName: \\&quot;John Smith\\&quot;,\\n    bankAccountType: \\&quot;checking\\&quot;\\n  },\\n  returnUrl: \\&quot;https:\\\/\\\/your-company.example.com\\\/checkout?shopperOrder=12xy..\\&quot;,\\n  merchantAccount: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n  billingAddress: {\\n    city: \\&quot;Amsterdam\\&quot;,\\n    country: \\&quot;US\\&quot;,\\n    houseNumberOrName: \\&quot;50\\&quot;,\\n    postalCode: \\&quot;12010\\&quot;,\\n    stateOrProvince: \\&quot;NY\\&quot;,\\n    street: \\&quot;Test Street\\&quot;\\n  }\\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;USD\\&quot;,\\n  Value: 1000,\\n}\\n\\nachDetails := checkout.AchDetails{\\n  OwnerName: common.PtrString(\\&quot;John Smith\\&quot;),\\n  BankAccountType: common.PtrString(\\&quot;checking\\&quot;),\\n  EncryptedBankAccountNumber: common.PtrString(\\&quot;adyenjs_0_1_25$GTE\\\/ytzAupIEbFEybScAA\\\/T3W8+Xj3ZWj3CIl5IeIdMfkNd8rRnH0T\\\/YfmR9rU3pLsZDEoIg8SLGLTdehuYFf9Oxl7FO+Fqi7uFBJpDyJm0BE8IFN330k+01UNRObpLjbJSUr0a7ylZoZxEBrw7Sj2PDEIIxfnHF8mVuxanDUoD7t91MB1VKe\\\/p5vwE2YylLzkuCbmM5RXv5Ahd05eF+zL39B8+TUpuK+gShwCJH0Ay+hnF6FavpcLRvmD4YYL4glBTqiEta+vsO6R9EDejDRlDTOqDAZ4P5gleU1ALEkWzwcN+GNCk0K0LQVNkPCsMUTLIeor+n95t3zuUC+5kTAw==$a7K23S61C2maU8SUH6w\\\/XzZbNYoXF\\\/ndSLd3JyLS51EqXCEx8JGOzFjp52uIKCyHPxxr9zquWSqdiC8GQsXl1mth2AOS97Xcwu1pf+pYO3NGCPsTzQNKoXcd5yyyb+1SYdiiPsPSdSNhb1CT9O2rvfWRqSBUSikgyhoYkUg\\\/o8KPI8hKVvpdUf5EEZoctKPr5CU7mXFp+pD8M2FzDP8dr6KYgGprtytWjPxXYtUw7T+uNJfbuIvAuKDsFPK0UrkYcDyW43QHZwtualg\\\/YRDXnIzeIdY\\\/I5s13zGsWUGWVuOFFZEANhnJCtyLbQCVYzqs6t9ziAARMXyb\\\/ZhUR+\\\/R2gAkIP7dGQZFUyCzyCHyCSExbUv\\\/VEHSIVTR8NVUx+inHfLMtsS3cplRwCeKJ4ThQR228F8KPEaZlu7FOCUmZxQcDyYUrcTa70ddJkNEt0NsjOMUDaNPSaURUnCkFwsY83FUY\\\/rql74p8ZFF\\&quot;),\\n  Type: common.PtrString(\\&quot;ach\\&quot;),\\n  EncryptedBankLocationId: common.PtrString(\\&quot;adyenjs_0_1_25$UbyYyi7693Ya9e3cZNYOJj\\\/\\\/l7bxQMMYChWRpLmzhx+WU21kI0RGOTrf26YSeGZBPY04D0vYohMLJfXkBrvIHFthOtat7ZPvQgXCpXfao3KuKogDMM6KoAVpH7wtp7D6wZfUR7uP38ARbqyl4Ztn7ymPJ3OcCl6CxqMn05ixtcLv418XvNTM+P\\\/67TLhQbdhy9OYUnh2Ja2+xueXZJRSTaUn\\\/ILtMQs81hp8XTwMF7aoQJ6cd4cxfkmZ\\\/jU57DE0YFrTtEsvsGJIcgF70vY5yXj2ODpLnnMHr3Fwd8pne0j\\\/zzd\\\/IT\\\/+UDXOQoZvzDWpmO7tNW6rcVLCEtBijnqUCw==$9COJh5qZrOHnhmPXv9z07sDKu3DCFe5iyxBwy\\\/rtDhBL7pZFpsmpxtCfFhFqjfd\\\/A2iwMFQ8WqOaHQhzKGYswlauH33WbcNVUmw+B+SvHSJIWxJOkPbWv5zCX5KIATnIRGmi9c\\\/vNNRI2TBbxML8P89245lyc2c7mIXZC\\\/xCbpVXu0fRZCEWEo2PM43HNBwYZNQ\\\/QTf285lMFNHhIEJUJnfMElHp1nV\\\/pcdo2zw8zwKsAXn\\\/BiTaT341SQcmm4JtcXvFEcetCPEElN9yemcwtCt1qzPUSZuM5+q5A\\\/s+M4edH6lyjKKUqrqxps39EJxzam0NISJIszlhPKib0ML\\\/lG7yiJU6EDBOflntKBBt490A0igN2GyK4HbxjonvlDMTgpHwkLLU5cf3zg3lfHFHyxTpsq5sLuwXuJcDaDK3TSl8\\\/jjkmCcHXWJLdK5UaqRjg1QZ4EQadTiP\\\/iPjEIrj4mKZJMXyw2gB\\\/dDDN0egEy6pQmt9pzlgRNQ=\\&quot;),\\n}\\n\\npaymentRequest := checkout.PaymentRequest{\\n  Reference: \\&quot;YOUR_ORDER_NUMBER\\&quot;,\\n  Amount: amount,\\n  MerchantAccount: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n  PaymentMethod: checkout.AchDetailsAsCheckoutPaymentMethod(&amp;achDetails),\\n  ReturnUrl: \\&quot;https:\\\/\\\/your-company.example.com\\\/checkout?shopperOrder=12xy..\\&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.4.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;currency\\&quot;: \\&quot;USD\\&quot;,\\n    \\&quot;value\\&quot;: 1000\\n  },\\n  \\&quot;reference\\&quot;: \\&quot;YOUR_ORDER_NUMBER\\&quot;,\\n  \\&quot;paymentMethod\\&quot;: {\\n    \\&quot;type\\&quot;: \\&quot;ach\\&quot;,\\n    \\&quot;encryptedBankAccountNumber\\&quot;: \\&quot;adyenjs_0_1_25$GTE\\\/ytzAupIEbFEybScAA\\\/T3W8+Xj3ZWj3CIl5IeIdMfkNd8rRnH0T\\\/YfmR9rU3pLsZDEoIg8SLGLTdehuYFf9Oxl7FO+Fqi7uFBJpDyJm0BE8IFN330k+01UNRObpLjbJSUr0a7ylZoZxEBrw7Sj2PDEIIxfnHF8mVuxanDUoD7t91MB1VKe\\\/p5vwE2YylLzkuCbmM5RXv5Ahd05eF+zL39B8+TUpuK+gShwCJH0Ay+hnF6FavpcLRvmD4YYL4glBTqiEta+vsO6R9EDejDRlDTOqDAZ4P5gleU1ALEkWzwcN+GNCk0K0LQVNkPCsMUTLIeor+n95t3zuUC+5kTAw==$a7K23S61C2maU8SUH6w\\\/XzZbNYoXF\\\/ndSLd3JyLS51EqXCEx8JGOzFjp52uIKCyHPxxr9zquWSqdiC8GQsXl1mth2AOS97Xcwu1pf+pYO3NGCPsTzQNKoXcd5yyyb+1SYdiiPsPSdSNhb1CT9O2rvfWRqSBUSikgyhoYkUg\\\/o8KPI8hKVvpdUf5EEZoctKPr5CU7mXFp+pD8M2FzDP8dr6KYgGprtytWjPxXYtUw7T+uNJfbuIvAuKDsFPK0UrkYcDyW43QHZwtualg\\\/YRDXnIzeIdY\\\/I5s13zGsWUGWVuOFFZEANhnJCtyLbQCVYzqs6t9ziAARMXyb\\\/ZhUR+\\\/R2gAkIP7dGQZFUyCzyCHyCSExbUv\\\/VEHSIVTR8NVUx+inHfLMtsS3cplRwCeKJ4ThQR228F8KPEaZlu7FOCUmZxQcDyYUrcTa70ddJkNEt0NsjOMUDaNPSaURUnCkFwsY83FUY\\\/rql74p8ZFF\\&quot;,\\n    \\&quot;encryptedBankLocationId\\&quot;: \\&quot;adyenjs_0_1_25$UbyYyi7693Ya9e3cZNYOJj\\\/\\\/l7bxQMMYChWRpLmzhx+WU21kI0RGOTrf26YSeGZBPY04D0vYohMLJfXkBrvIHFthOtat7ZPvQgXCpXfao3KuKogDMM6KoAVpH7wtp7D6wZfUR7uP38ARbqyl4Ztn7ymPJ3OcCl6CxqMn05ixtcLv418XvNTM+P\\\/67TLhQbdhy9OYUnh2Ja2+xueXZJRSTaUn\\\/ILtMQs81hp8XTwMF7aoQJ6cd4cxfkmZ\\\/jU57DE0YFrTtEsvsGJIcgF70vY5yXj2ODpLnnMHr3Fwd8pne0j\\\/zzd\\\/IT\\\/+UDXOQoZvzDWpmO7tNW6rcVLCEtBijnqUCw==$9COJh5qZrOHnhmPXv9z07sDKu3DCFe5iyxBwy\\\/rtDhBL7pZFpsmpxtCfFhFqjfd\\\/A2iwMFQ8WqOaHQhzKGYswlauH33WbcNVUmw+B+SvHSJIWxJOkPbWv5zCX5KIATnIRGmi9c\\\/vNNRI2TBbxML8P89245lyc2c7mIXZC\\\/xCbpVXu0fRZCEWEo2PM43HNBwYZNQ\\\/QTf285lMFNHhIEJUJnfMElHp1nV\\\/pcdo2zw8zwKsAXn\\\/BiTaT341SQcmm4JtcXvFEcetCPEElN9yemcwtCt1qzPUSZuM5+q5A\\\/s+M4edH6lyjKKUqrqxps39EJxzam0NISJIszlhPKib0ML\\\/lG7yiJU6EDBOflntKBBt490A0igN2GyK4HbxjonvlDMTgpHwkLLU5cf3zg3lfHFHyxTpsq5sLuwXuJcDaDK3TSl8\\\/jjkmCcHXWJLdK5UaqRjg1QZ4EQadTiP\\\/iPjEIrj4mKZJMXyw2gB\\\/dDDN0egEy6pQmt9pzlgRNQ=\\&quot;,\\n    \\&quot;ownerName\\&quot;: \\&quot;John Smith\\&quot;,\\n    \\&quot;bankAccountType\\&quot;: \\&quot;checking\\&quot;\\n  },\\n  \\&quot;returnUrl\\&quot;: \\&quot;https:\\\/\\\/your-company.example.com\\\/checkout?shopperOrder=12xy..\\&quot;,\\n  \\&quot;merchantAccount\\&quot;: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\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.3.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    :currency =&gt; 'USD',\\n    :value =&gt; 1000\\n  },\\n  :reference =&gt; 'YOUR_ORDER_NUMBER',\\n  :paymentMethod =&gt; {\\n    :type =&gt; 'ach',\\n    :encryptedBankAccountNumber =&gt; 'adyenjs_0_1_25$GTE\\\/ytzAupIEbFEybScAA\\\/T3W8+Xj3ZWj3CIl5IeIdMfkNd8rRnH0T\\\/YfmR9rU3pLsZDEoIg8SLGLTdehuYFf9Oxl7FO+Fqi7uFBJpDyJm0BE8IFN330k+01UNRObpLjbJSUr0a7ylZoZxEBrw7Sj2PDEIIxfnHF8mVuxanDUoD7t91MB1VKe\\\/p5vwE2YylLzkuCbmM5RXv5Ahd05eF+zL39B8+TUpuK+gShwCJH0Ay+hnF6FavpcLRvmD4YYL4glBTqiEta+vsO6R9EDejDRlDTOqDAZ4P5gleU1ALEkWzwcN+GNCk0K0LQVNkPCsMUTLIeor+n95t3zuUC+5kTAw==$a7K23S61C2maU8SUH6w\\\/XzZbNYoXF\\\/ndSLd3JyLS51EqXCEx8JGOzFjp52uIKCyHPxxr9zquWSqdiC8GQsXl1mth2AOS97Xcwu1pf+pYO3NGCPsTzQNKoXcd5yyyb+1SYdiiPsPSdSNhb1CT9O2rvfWRqSBUSikgyhoYkUg\\\/o8KPI8hKVvpdUf5EEZoctKPr5CU7mXFp+pD8M2FzDP8dr6KYgGprtytWjPxXYtUw7T+uNJfbuIvAuKDsFPK0UrkYcDyW43QHZwtualg\\\/YRDXnIzeIdY\\\/I5s13zGsWUGWVuOFFZEANhnJCtyLbQCVYzqs6t9ziAARMXyb\\\/ZhUR+\\\/R2gAkIP7dGQZFUyCzyCHyCSExbUv\\\/VEHSIVTR8NVUx+inHfLMtsS3cplRwCeKJ4ThQR228F8KPEaZlu7FOCUmZxQcDyYUrcTa70ddJkNEt0NsjOMUDaNPSaURUnCkFwsY83FUY\\\/rql74p8ZFF',\\n    :encryptedBankLocationId =&gt; 'adyenjs_0_1_25$UbyYyi7693Ya9e3cZNYOJj\\\/\\\/l7bxQMMYChWRpLmzhx+WU21kI0RGOTrf26YSeGZBPY04D0vYohMLJfXkBrvIHFthOtat7ZPvQgXCpXfao3KuKogDMM6KoAVpH7wtp7D6wZfUR7uP38ARbqyl4Ztn7ymPJ3OcCl6CxqMn05ixtcLv418XvNTM+P\\\/67TLhQbdhy9OYUnh2Ja2+xueXZJRSTaUn\\\/ILtMQs81hp8XTwMF7aoQJ6cd4cxfkmZ\\\/jU57DE0YFrTtEsvsGJIcgF70vY5yXj2ODpLnnMHr3Fwd8pne0j\\\/zzd\\\/IT\\\/+UDXOQoZvzDWpmO7tNW6rcVLCEtBijnqUCw==$9COJh5qZrOHnhmPXv9z07sDKu3DCFe5iyxBwy\\\/rtDhBL7pZFpsmpxtCfFhFqjfd\\\/A2iwMFQ8WqOaHQhzKGYswlauH33WbcNVUmw+B+SvHSJIWxJOkPbWv5zCX5KIATnIRGmi9c\\\/vNNRI2TBbxML8P89245lyc2c7mIXZC\\\/xCbpVXu0fRZCEWEo2PM43HNBwYZNQ\\\/QTf285lMFNHhIEJUJnfMElHp1nV\\\/pcdo2zw8zwKsAXn\\\/BiTaT341SQcmm4JtcXvFEcetCPEElN9yemcwtCt1qzPUSZuM5+q5A\\\/s+M4edH6lyjKKUqrqxps39EJxzam0NISJIszlhPKib0ML\\\/lG7yiJU6EDBOflntKBBt490A0igN2GyK4HbxjonvlDMTgpHwkLLU5cf3zg3lfHFHyxTpsq5sLuwXuJcDaDK3TSl8\\\/jjkmCcHXWJLdK5UaqRjg1QZ4EQadTiP\\\/iPjEIrj4mKZJMXyw2gB\\\/dDDN0egEy6pQmt9pzlgRNQ=',\\n    :ownerName =&gt; 'John Smith',\\n    :bankAccountType =&gt; 'checking'\\n  },\\n  :returnUrl =&gt; 'https:\\\/\\\/your-company.example.com\\\/checkout?shopperOrder=12xy..',\\n  :merchantAccount =&gt; 'ADYEN_MERCHANT_ACCOUNT',\\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 v27.0.0\\nimport { Client, CheckoutAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nconst client = new Client({ apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot; });\\n\\n\\\/\\\/ Create the request object(s)\\nconst amount: Types.checkout.Amount = {\\n  currency: \\&quot;USD\\&quot;,\\n  value: 1000\\n};\\n\\nconst achDetails: Types.checkout.AchDetails = {\\n  ownerName: \\&quot;John Smith\\&quot;,\\n  bankAccountType: Types.checkout.AchDetails.BankAccountTypeEnum.Checking,\\n  encryptedBankAccountNumber: \\&quot;adyenjs_0_1_25$GTE\\\/ytzAupIEbFEybScAA\\\/T3W8+Xj3ZWj3CIl5IeIdMfkNd8rRnH0T\\\/YfmR9rU3pLsZDEoIg8SLGLTdehuYFf9Oxl7FO+Fqi7uFBJpDyJm0BE8IFN330k+01UNRObpLjbJSUr0a7ylZoZxEBrw7Sj2PDEIIxfnHF8mVuxanDUoD7t91MB1VKe\\\/p5vwE2YylLzkuCbmM5RXv5Ahd05eF+zL39B8+TUpuK+gShwCJH0Ay+hnF6FavpcLRvmD4YYL4glBTqiEta+vsO6R9EDejDRlDTOqDAZ4P5gleU1ALEkWzwcN+GNCk0K0LQVNkPCsMUTLIeor+n95t3zuUC+5kTAw==$a7K23S61C2maU8SUH6w\\\/XzZbNYoXF\\\/ndSLd3JyLS51EqXCEx8JGOzFjp52uIKCyHPxxr9zquWSqdiC8GQsXl1mth2AOS97Xcwu1pf+pYO3NGCPsTzQNKoXcd5yyyb+1SYdiiPsPSdSNhb1CT9O2rvfWRqSBUSikgyhoYkUg\\\/o8KPI8hKVvpdUf5EEZoctKPr5CU7mXFp+pD8M2FzDP8dr6KYgGprtytWjPxXYtUw7T+uNJfbuIvAuKDsFPK0UrkYcDyW43QHZwtualg\\\/YRDXnIzeIdY\\\/I5s13zGsWUGWVuOFFZEANhnJCtyLbQCVYzqs6t9ziAARMXyb\\\/ZhUR+\\\/R2gAkIP7dGQZFUyCzyCHyCSExbUv\\\/VEHSIVTR8NVUx+inHfLMtsS3cplRwCeKJ4ThQR228F8KPEaZlu7FOCUmZxQcDyYUrcTa70ddJkNEt0NsjOMUDaNPSaURUnCkFwsY83FUY\\\/rql74p8ZFF\\&quot;,\\n  type: Types.checkout.AchDetails.TypeEnum.Ach,\\n  encryptedBankLocationId: \\&quot;adyenjs_0_1_25$UbyYyi7693Ya9e3cZNYOJj\\\/\\\/l7bxQMMYChWRpLmzhx+WU21kI0RGOTrf26YSeGZBPY04D0vYohMLJfXkBrvIHFthOtat7ZPvQgXCpXfao3KuKogDMM6KoAVpH7wtp7D6wZfUR7uP38ARbqyl4Ztn7ymPJ3OcCl6CxqMn05ixtcLv418XvNTM+P\\\/67TLhQbdhy9OYUnh2Ja2+xueXZJRSTaUn\\\/ILtMQs81hp8XTwMF7aoQJ6cd4cxfkmZ\\\/jU57DE0YFrTtEsvsGJIcgF70vY5yXj2ODpLnnMHr3Fwd8pne0j\\\/zzd\\\/IT\\\/+UDXOQoZvzDWpmO7tNW6rcVLCEtBijnqUCw==$9COJh5qZrOHnhmPXv9z07sDKu3DCFe5iyxBwy\\\/rtDhBL7pZFpsmpxtCfFhFqjfd\\\/A2iwMFQ8WqOaHQhzKGYswlauH33WbcNVUmw+B+SvHSJIWxJOkPbWv5zCX5KIATnIRGmi9c\\\/vNNRI2TBbxML8P89245lyc2c7mIXZC\\\/xCbpVXu0fRZCEWEo2PM43HNBwYZNQ\\\/QTf285lMFNHhIEJUJnfMElHp1nV\\\/pcdo2zw8zwKsAXn\\\/BiTaT341SQcmm4JtcXvFEcetCPEElN9yemcwtCt1qzPUSZuM5+q5A\\\/s+M4edH6lyjKKUqrqxps39EJxzam0NISJIszlhPKib0ML\\\/lG7yiJU6EDBOflntKBBt490A0igN2GyK4HbxjonvlDMTgpHwkLLU5cf3zg3lfHFHyxTpsq5sLuwXuJcDaDK3TSl8\\\/jjkmCcHXWJLdK5UaqRjg1QZ4EQadTiP\\\/iPjEIrj4mKZJMXyw2gB\\\/dDDN0egEy6pQmt9pzlgRNQ=\\&quot;\\n};\\n\\nconst paymentRequest: Types.checkout.PaymentRequest = {\\n  reference: \\&quot;YOUR_ORDER_NUMBER\\&quot;,\\n  amount: amount,\\n  merchantAccount: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n  paymentMethod: achDetails,\\n  returnUrl: \\&quot;https:\\\/\\\/your-company.example.com\\\/checkout?shopperOrder=12xy..\\&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<h2>Test and go live<\/h2>\n<p>You can test ACH Direct Debit payments as well as chargebacks.<\/p>\n<h3>Test the payment flow<\/h3>\n<p>Before making live ACH Direct Debit payments, use the following account details to test your integration.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\"><code>ownerName<\/code><\/th>\n<th style=\"text-align: left;\"><code>bankAccountNumber<\/code><\/th>\n<th style=\"text-align: left;\"><code>bankLocationId<\/code> <br>(routing number)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">Any name<\/td>\n<td style=\"text-align: left;\">Any correctly formatted account number. <br>Example: <strong>1234567890<\/strong><\/td>\n<td style=\"text-align: left;\">Any correctly formatted routing number. <br>Examples: <strong>011000138<\/strong> or <strong>121000358<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Test the chargeback flow<\/h3>\n<p>You can test the chargeback flow by making test payments with an <code>ownerName<\/code> value that consists of <strong>chargeback:<\/strong> followed by an ACH return <a href=\"\/pt\/risk-management\/chargeback-guidelines\/ach-chargebacks\/#ach-retry\">reason code<\/a>. For example, <strong>chargeback:R01<\/strong>. The other account details to use are the same as when testing payments.<\/p>\n<p>For instructions, see <a href=\"\/pt\/risk-management\/chargeback-guidelines\/ach-chargebacks#test-a-chargeback-scenario\">Test a chargeback scenario<\/a>.<\/p>\n<h2 id=\"see-also\">See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/payment-methods\/ach-direct-debit\/verification-with-giact\"\n                        target=\"_self\"\n                        >\n                    Account validation with giact\n                <\/a><\/li><li><a href=\"\/online-payments\/tokenization\"\n                        target=\"_self\"\n                        >\n                    Tokenization\n                <\/a><\/li><li><a href=\"\/risk-management\/chargeback-guidelines\/ach-chargebacks\"\n                        target=\"_self\"\n                        >\n                    ACH Direct Debit chargebacks\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/pt\/payment-methods\/ach-direct-debit\/api-only","articleFields":{"description":"Add ACH Direct Debit to your API-only integration.","never_cache_twig":true,"parameters":{"flow":"Advanced","integration_guide_url":"\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&integration=API%20only","payment_method":"ACH Direct Debit","payment_method_type":"ach","payment_method_type_capitalized":"Ach","tx_variant":"ach","tx_variant_capitalized":"Ach","country_codes":"<strong>US<\/strong>, <strong>PR<\/strong>","currency_codes":"<strong>USD<\/strong>","additional_api":"true","api_version":"none","action_type":"none","pm_directory":"ach-direct-debit","contact":"false"}},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/payment-methods\/ach-direct-debit\/api-only","title":"ACH Direct Debit for API only","content":"You can add ACH Direct Debit to your existing integration. The following instructions show only what you must add to your integration specifically for ACH Direct Debit.\nIf an instruction on this page corresponds with a step in the main integration guide, it includes a link to that corresponding step of the main integration guide.\nRequirements\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nMake sure that you have an existing API-only integration.  This page includes only instructions to add ACH Direct Debit to your existing integration.\n\n\nAPI credentials\nTo issue a refund using an API request, make sure you have the Merchant allow bank-refund role.\n\n\nCustomer Area roles\nTo issue a refund using the Customer Area, make sure you have the Merchant allow bank-refund role.\n\n\nWebhooks\nSubscribe to  DIRECT_DEBIT_NOTICE_OF_CHANGE_NOTIFICATION webhooks to receive a notification when a shopper has outdated banking details.\n \n\n\nSetup steps\n Before you begin, add ACH Direct Debit in your Customer Area.  \n\n\n\nGet ACH Direct Debit as an available payment method\nWhen you make the  \/paymentMethods call to get available payment methods, specify the following so that ACH Direct Debit is included in the response.\n\n\n\nParameter\nValues\n\n\n\n\n countryCode\nUS, PR\n\n\n amount.currency\nUSD\n\n\n\nBuild your payment form\n\nWe provide the logo for ACH Direct Debit that you can download.\n\nWhen a customer chooses to pay with ACH Direct Debit, collect the following payment details in your payment form and use these to get a mandate from the customer:\n\n\n\nPayment details\nExample\n\n\n\n\nBank account number\nThe US bank account number from which the payment will be debited.  Format: numeric. Minimum length: 4Maximum length: 17  Example: 01234567890123\n\n\nBank routing number\nThe 9-digit ACH routing number of the account. Alert your customers that some banks have different routing numbers for different transfers. Customers should not provide their wire transfer routing number. Do not remove any leading zeros. Adyen performs validation to ensure the routing number is genuine. Example: 123456789\n\n\nBank account type\nchecking or savings\n\n\nAccount holder name\n\"John Smith\"\n\n\nAccount holder address\nA valid US address (optional field).\n\n\nType of account holder\npersonal or business\n\n\n\nBank account type\nCustomers can use both checking accounts and savings accounts to make ACH payments. If you do not provide the bankAccountType in your payment request, this defaults to checking account. In cases where the account type defaulted to checking account while the customer provided the account number of a savings account, this mismatch will lead to a chargeback.\nTo avoid chargebacks, we recommend collecting the bank account type from the customer, and providing it in your payment request.\nSEC code\nNacha requires a Standard Entry Class (SEC) code for ACH payments. If you do not provide the correct SEC code, you risk chargebacks and potential fines.\nCollect the account holder type (personal or business) from the customer and provide the appropriate SEC code in your payment request. There are a few ways you can specify an SEC code:\n\nSend the SEC code in your ACH Direct Debit payment request using the additionalData.ach.secCode field.\nSend the field paymentmethod.accountHolderType in your payment request.\n\nIf the value is business, we use CCD.\nIf it is personal, we use WEB.\n\nAsk our Support Team to configure a default SEC code for all your ACH Direct Debit payments.\n\nIf you do not provide an SEC code, we try to select the correct code based on the account holder's name. If we cannot make a confident guess, we default to WEB.\nAdd additional parameters to your \/payments request\nWhen you make a payment, add the following parameters:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\n paymentMethod.type\n\nach\n\n\n paymentMethod.bankAccountNumber or   paymentMethod.encryptedBankAccountNumber\n\nThe customer's bank account number.\n\n\n paymentMethod.bankAccountType\n\nThe type of bank account. Allowed values: checking, savings.\n\n\n paymentMethod.bankLocationId or   paymentMethod.encryptedBankLocationId\n\nThe ACH routing number of the account.\n\n\n paymentMethod.ownerName\n\nThe name on the bank account.\n\n\nadditionalData.ach.secCode\n\nThe SEC code to use for the payment. Possible values: CDD (for B2B transactions), PPD (for personal transactions with written authorization), or WEB (for personal transactions with digital authorization).\n\n\n paymentMethod.accountHolderType\n\nThe type of account holder (personal or business). If you are not using additionalData.ach.secCode, use this field to determine the SEC code.\n\n\n\n\n\n    \n\nTest and go live\nYou can test ACH Direct Debit payments as well as chargebacks.\nTest the payment flow\nBefore making live ACH Direct Debit payments, use the following account details to test your integration.\n\n\n\nownerName\nbankAccountNumber\nbankLocationId (routing number)\n\n\n\n\nAny name\nAny correctly formatted account number. Example: 1234567890\nAny correctly formatted routing number. Examples: 011000138 or 121000358\n\n\n\nTest the chargeback flow\nYou can test the chargeback flow by making test payments with an ownerName value that consists of chargeback: followed by an ACH return reason code. For example, chargeback:R01. The other account details to use are the same as when testing payments.\nFor instructions, see Test a chargeback scenario.\nSee also\n\n\n                    Account validation with giact\n                \n                    Tokenization\n                \n                    ACH Direct Debit chargebacks\n                \n","type":"page","locale":"pt","boost":17,"hierarchy":{"lvl0":"Home","lvl1":"Payment methods","lvl2":"ACH Direct Debit","lvl3":"ACH Direct Debit for API only"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/payment-methods","lvl2":"https:\/\/docs.adyen.com\/pt\/payment-methods\/ach-direct-debit","lvl3":"\/pt\/payment-methods\/ach-direct-debit\/api-only"},"levels":4,"category":"Payment method","category_color":"green","tags":["Direct","Debit"]},"articleFiles":{"payments-request-api-only.js":"<p alt=\"\">payments-request-api-only.js<\/p>"}}
