{"title":"Account validation with giact","category":"default","creationDate":1776961628,"content":"<p>When accepting ACH Direct Debit payments, <a href=\"https:\/\/www.nacha.org\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Nacha<\/a> requires you to validate the bank account details for <strong>consumer accounts<\/strong> (SEC code <span translate=\"no\"><strong>WEB<\/strong><\/span>) on the shopper's first transaction. This validation is mandatory to reduce fraud and minimize payment failures. To help you meet this requirement, we partner with giact gVERIFY.<\/p>\n<p>Using giact gVERIFY allows you to verify the validity and status of a shopper's bank account before initiating a transaction. This verification reduces the chance that payments are returned because of issues such as incorrect routing numbers or closed accounts. Giact checks account information against an extensive proprietary database and static rules, not through real-time access to the bank.<\/p>\n<h2 id=\"before-you-begin\">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;\">An <a href=\"\/pt\/online-payments\/build-your-integration\">online-payments integration<\/a>. <\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Limitations<\/strong><\/td>\n<td style=\"text-align: left;\">For cost reasons, we recommend using giact validation only on the shopper's initial transaction, and when the shopper changes their account.<\/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: <ul><li markdown=\"1\">Get in touch with your Adyen contact and sign the contract addendum that specifies the terms and conditions for the use of account validation through giact.<\/li> <li markdown=\"1\">Ask 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> to enable giact verification for your Adyen account. For this, you need to <a href=\"#select-a-validation-option\">select a validation option<\/a>.<\/li> <li markdown=\"1\"><a href=\"\/pt\/payment-methods\/add-payment-methods\">Add ACH Direct Debit in your test Customer Area<\/a>.<\/li> <li markdown=\"1\">In the <a href=\"\/pt\/development-resources\/webhooks\/webhook-types\/additional-settings\/\">Additional settings<\/a> of your Standard webhook configuration, under <strong>Bank<\/strong>, select <strong>Include Bank Verification results<\/strong>.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Select a validation option<\/h2>\n<p>Adyen offers three integration options to trigger the giact validation service, allowing you to comply with Nacha requirements and manage validation costs according to your business model. The configuration is managed on your Adyen account, and you can only select one option. Ask our Support Team to configure the option you need on your account.<\/p>\n<h3>Validation options<\/h3>\n<table>\n<thead>\n<tr>\n<th>Validation option<\/th>\n<th>Which payments trigger validation?<\/th>\n<th>Use case<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><a href=\"#consumer-ecommerce-payments-validation\">Consumer ecommerce payments<\/a><\/td>\n<td>ACH Direct Debit payments with <code>shopperInteraction<\/code> <span translate=\"no\"><strong>ecommerce<\/strong><\/span> and <a href=\"\/pt\/payment-methods\/ach-direct-debit#sec-code\">SEC code<\/a> <span translate=\"no\"><strong>WEB<\/strong><\/span>.<\/td>\n<td>Validate consumer accounts on their first payment, as per Nacha requirements.<\/td>\n<\/tr>\n<tr>\n<td><a href=\"#all-ecommerce-payments-validation\">All ecommerce payments<\/a><\/td>\n<td>All ACH Direct Debit payments with <code>shopperInteraction<\/code> <span translate=\"no\"><strong>ecommerce<\/strong><\/span> (any SEC code).<\/td>\n<td>Validate both consumer and corporate accounts on their first payment.<\/td>\n<\/tr>\n<tr>\n<td><a href=\"#zero-amount-payments-validation\">Zero amount payments<\/a><\/td>\n<td>All ACH Direct Debit payments with <code>amount.value<\/code> <strong>0<\/strong>, regardless of <code>shopperInteraction<\/code> or SEC code.<\/td>\n<td>Specify exactly when to trigger a call to giact. Only available for API-only integrations.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>If you have a Components or Drop-in integration, we recommend the <span translate=\"no\"><strong>consumer ecommerce payments<\/strong><\/span> option because it covers Nacha requirements and is the easiest to use.<br \/>\nIf you have an API-only integration, you can use any of the validation options.<\/p>\n<h2>Consumer ecommerce payments validation<\/h2>\n<h3>For Drop-in or Components integrations<\/h3>\n<ol>\n<li>The shopper selects ACH Direct Debit on the checkout page.<\/li>\n<li>The Drop-in or the Component collects the required details (the bank account number, ACH routing number, and account owner's name) from the shopper. Keep the <code>hasHolderName<\/code> and <code>holderNameRequired<\/code> configuration parameters set to <span translate=\"no\"><strong>true<\/strong><\/span>. If you change these to <span translate=\"no\"><strong>false<\/strong><\/span>, you will have to collect the account owner's name manually.<\/li>\n<li>If this is the shopper's first payment, the <code>shopperInteraction<\/code> is <span translate=\"no\"><strong>ecommerce<\/strong><\/span>, and the SEC code is <span translate=\"no\"><strong>WEB<\/strong><\/span>, we automatically send the account details to giact gVERIFY for validation. <\/li>\n<li>If the account passes validation, we try to process the payment. If the account fails validation, we refuse the payment.<\/li>\n<li>If the payment is refused, we show a refusal screen. The shopper can either use a different bank account for the ACH payment, or they can use a different payment method.<\/li>\n<\/ol>\n<h3>For API-only integrations<\/h3>\n<ol>\n<li>The shopper selects ACH Direct Debit on your payment form.<\/li>\n<li>You collect the required details from the shopper as a part of your payment request. To do this, <a href=\"\/pt\/payment-methods\/ach-direct-debit\/api-only#add-additional-parameters-to-your-payments-request\">add the required parameters<\/a>. You need to collect the following details:\n<ul>\n<li>Bank account number<\/li>\n<li>ACH routing number<\/li>\n<li>Account owner's name<\/li>\n<\/ul><\/li>\n<li>If this is the shopper's first payment and the <code>shopperInteraction<\/code> is <span translate=\"no\"><strong>ecommerce<\/strong><\/span>, and the SEC code is <span translate=\"no\"><strong>WEB<\/strong><\/span>, we automatically send the account details to giact gVERIFY for validation.<\/li>\n<li>If the account passes validation, we try to process the payment. If the account fails validation, we refuse the payment. <\/li>\n<li>If the payment is refused, you get a refusal response from the API. The shopper can either use a different bank account for the ACH payment, or they can use a different payment method.<\/li>\n<\/ol>\n<h2>All ecommerce payments validation<\/h2>\n<h3>For Drop-in or Components integrations<\/h3>\n<ol>\n<li>The shopper selects ACH Direct Debit on the checkout page.<\/li>\n<li>The Drop-in or the Component collects the required details (the bank account number, ACH routing number, and account owner's name) from the shopper. Keep the <code>hasHolderName<\/code> and <code>holderNameRequired<\/code> configuration parameters set to <span translate=\"no\"><strong>true<\/strong><\/span>. If you set these to <span translate=\"no\"><strong>false<\/strong><\/span>, you will have to collect the account owner's name manually.<\/li>\n<li>If this is the shopper's first payment and the <code>shopperInteraction<\/code> is <span translate=\"no\"><strong>ecommerce<\/strong><\/span>, we automatically send the account details to giact gVERIFY for validation.<\/li>\n<li>If the account passes validation, we try to process the payment. If the account fails validation, we refuse the payment.<\/li>\n<li>If the payment is refused, we display a refusal screen. The shopper can either use a different bank account for the ACH payment, or they can use a different payment method.<\/li>\n<\/ol>\n<h3>For API-only integrations<\/h3>\n<ol>\n<li>The shopper selects ACH Direct Debit on your payment form.<\/li>\n<li>You collect the required details from the shopper as a part of your payment request. To do this, <a href=\"\/pt\/payment-methods\/ach-direct-debit\/api-only#add-additional-parameters-to-your-payments-request\">add the required parameters<\/a>. You need to collect the following details: \n<ul>\n<li>Bank account number<\/li>\n<li>ACH routing number<\/li>\n<li>Account owner's name<\/li>\n<\/ul><\/li>\n<li>If this is the shopper's first payment, the <code>shopperInteraction<\/code> is <span translate=\"no\"><strong>ecommerce<\/strong><\/span>, we automatically send the account details to giact gVERIFY for validation.<\/li>\n<li>If the account passes validation, we try to process the payment. If the account fails validation, we refuse the payment.<\/li>\n<li>If the payment is refused, you get a refusal response from the API. The shopper can either use a different bank account for the ACH payment, or they can use a different payment method.<\/li>\n<\/ol>\n<h2>Zero amount payments validation<\/h2>\n<ol>\n<li>The shopper selects ACH Direct Debit on your payment form. <\/li>\n<li>You collect the required details from the shopper as a part of your payment request. To do this, <a href=\"\/pt\/payment-methods\/ach-direct-debit\/api-only#add-additional-parameters-to-your-payments-request\">add the required parameters<\/a>. You need to collect the following details:\n<ul>\n<li>Bank account number\n<ul>\n<li>ACH routing number \n<div class=\"notices yellow\">\n<p>Alert your shoppers that some banks have different routing numbers for different transfers. Shoppers should not provide their wire transfer routing number.<\/p>\n<\/div><\/li>\n<li>Bank account type: <span translate=\"no\"><strong>checking<\/strong><\/span> or <span translate=\"no\"><strong>savings<\/strong><\/span>.\n<div class=\"notices green\">\n<p>The account type is not verified by giact. But if you use the Advanced flow (the <code>\/payments<\/code> endpoint) you need to specify the account type when you make a payment request for the actual amount. This avoids unnecessary chargebacks due to account type mismatches.<\/p>\n<\/div><\/li>\n<li>Account owner's name<\/li>\n<\/ul><\/li>\n<\/ul><\/li>\n<li>You send a [zero-value authorization] (#validate-using-zero-value-authorization) request with the details that the shopper provided. Include the <code>storePaymentMethod<\/code> and <code>storePaymentMethodMode<\/code> parameters so you can store the shopper's details as a token to use later when you make the payment request for the actual amount.<\/li>\n<li>We send the details to giact gVERIFY and return the outcome in the zero-value authorization response and in the <span translate=\"no\"><strong>AUTHORISATION<\/strong><\/span> webhook.<\/li>\n<li>Based on the zero-value authorization response, you decide on your next step. You can either:\n<ul>\n<li>Make a payment request for the actual amount. Specify the token (<code>storedPaymentMethodId<\/code>) that was generated when you made the zero-auth request.<\/li>\n<li>Ask the shopper to provide correct details or use a different payment method.<\/li>\n<\/ul><\/li>\n<\/ol>\n<h2 id=\"validate-using-zero-value-authorization\">Validate using zero-value authorization<\/h2>\n<p>If you selected the zero amount payments option, you need to make a zero-value authorization request. After you have gathered the shopper's account details, verify those details.<\/p>\n<p>Select the tab for the endpoint you are using:<\/p>\n\n<div id=\"tabbS37F\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;&lt;code&gt;\\\/sessions&lt;\\\/code&gt;&quot;,&quot;content&quot;:&quot;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;From your server, make a  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/sessions\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/sessions&lt;\\\/a&gt; request, specifying:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;code&gt;amount.currency&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;USD&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;amount.value&lt;\\\/code&gt;: &lt;strong&gt;0&lt;\\\/strong&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;storePaymentMethod&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;storePaymentMethodMode&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;enabled&lt;\\\/strong&gt;&lt;\\\/span&gt; or &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;askForConsent&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;shopperReference&lt;\\\/code&gt;: your unique identification of the shopper.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;p&gt;&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Zero-value auth request&#039;\\&quot; :id=\\&quot;&#039;zero-value-auth-request-sessions&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;bash&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;curl https:\\\\\\\/\\\\\\\/checkout-test.adyen.com\\\\\\\/v71\\\\\\\/sessions \\\\\\\\\\\\n-H &#039;x-api-key: ADYEN_API_KEY&#039; \\\\\\\\\\\\n-H &#039;content-type: application\\\\\\\/json&#039; \\\\\\\\\\\\n-d &#039;{\\\\n    \\\\&amp;quot;merchantAccount\\\\&amp;quot;:\\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;,\\\\n    \\\\&amp;quot;amount\\\\&amp;quot;:{\\\\n        \\\\&amp;quot;currency\\\\&amp;quot;:\\\\&amp;quot;USD\\\\&amp;quot;,\\\\n        \\\\&amp;quot;value\\\\&amp;quot;:\\\\&amp;quot;0\\\\&amp;quot;\\\\n    },\\\\n    \\\\&amp;quot;countryCode\\\\&amp;quot;:\\\\&amp;quot;US\\\\&amp;quot;,\\\\n    \\\\&amp;quot;reference\\\\&amp;quot;:\\\\&amp;quot;YOUR_ORDER_NUMBER\\\\&amp;quot;,\\\\n    \\\\&amp;quot;recurringProcessingModel\\\\&amp;quot;: \\\\&amp;quot;CardOnFile\\\\&amp;quot;,\\\\n    \\\\&amp;quot;shopperInteraction\\\\&amp;quot;: \\\\&amp;quot;Ecommerce\\\\&amp;quot;,\\\\n    \\\\&amp;quot;shopperReference\\\\&amp;quot;:\\\\&amp;quot;YOUR_SHOPPER_REFERENCE\\\\&amp;quot;,\\\\n    \\\\&amp;quot;storePaymentMethod\\\\&amp;quot;:\\\\&amp;quot;true\\\\&amp;quot;,\\\\n    \\\\&amp;quot;storePaymentMethodMode\\\\&amp;quot;:\\\\&amp;quot;enabled\\\\&amp;quot;,\\\\n    \\\\&amp;quot;returnUrl\\\\&amp;quot;:\\\\&amp;quot;https:\\\\\\\/\\\\\\\/your-company.example.com\\\\\\\/...\\\\&amp;quot;\\\\n}&#039;&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;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;In the  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Webhooks\\\/latest\\\/post\\\/AUTHORISATION\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;AUTHORISATION&lt;\\\/a&gt; webhook, check the following parameters:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;code&gt;additionalData.bankVerificationResultRaw&lt;\\\/code&gt;: the details of the validation as reported by giact. See the table with &lt;a href=\\&quot;#validation-result-values\\&quot;&gt;validation result values&lt;\\\/a&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;additionalData.bankVerificationResult&lt;\\\/code&gt;: indicates if the account passed the validation. Possible values: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Passed&lt;\\\/strong&gt;&lt;\\\/span&gt; or &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Failed&lt;\\\/strong&gt;&lt;\\\/span&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;additionalData.storedPaymentMethodId&lt;\\\/code&gt;: an ID representing the shopper&#039;s account details. Save this together with your shopper reference, because you need it when making a payment request for the actual amount.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Validation result in the AUTHORISATION webhook&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n  ...\\\\n  \\\\\\&quot;additionalData\\\\\\&quot;:{\\\\n    \\\\\\&quot;bankVerificationResultRaw\\\\\\&quot;:\\\\\\&quot;1111: Account Verified - The checking account was found to be an open and valid account.\\\\\\&quot;,\\\\n    \\\\\\&quot;bankVerificationResult\\\\\\&quot;:\\\\\\&quot;Passed\\\\\\&quot;,\\\\n    \\\\\\&quot;tokenization.shopperReference\\\\\\&quot;:\\\\\\&quot;YOUR_SHOPPER_REFERENCE\\\\\\&quot;,\\\\n    \\\\\\&quot;tokenization.storedPaymentMethodId\\\\\\&quot;:\\\\\\&quot;JC5H4P79C9P7KPG6\\\\\\&quot;\\\\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;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Based on the validation result, determine your next step:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;\\n&lt;p&gt;If the account passed validation, make a payment request for the actual amount using the &lt;code&gt;storedPaymentMethodId&lt;\\\/code&gt; returned in the AUTHORISATION webhook.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Payment after validation&#039;\\&quot; :id=\\&quot;&#039;after-validation-sessions&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;bash&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;curl https:\\\\\\\/\\\\\\\/checkout-test.adyen.com\\\\\\\/v71\\\\\\\/sessions \\\\\\\\\\\\n-H &#039;x-api-key: ADYEN_API_KEY&#039; \\\\\\\\\\\\n-H &#039;content-type: application\\\\\\\/json&#039; \\\\\\\\\\\\n-d &#039;{\\\\n    \\\\&amp;quot;merchantAccount\\\\&amp;quot;:\\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;,\\\\n    \\\\&amp;quot;amount\\\\&amp;quot;:{\\\\n        \\\\&amp;quot;currency\\\\&amp;quot;:\\\\&amp;quot;USD\\\\&amp;quot;,\\\\n        \\\\&amp;quot;value\\\\&amp;quot;:\\\\&amp;quot;1000\\\\&amp;quot;\\\\n    },\\\\n    \\\\&amp;quot;reference\\\\&amp;quot;:\\\\&amp;quot;YOUR_ORDER_NUMBER\\\\&amp;quot;,\\\\n    \\\\&amp;quot;paymentMethod\\\\&amp;quot;:{\\\\n        \\\\&amp;quot;type\\\\&amp;quot;:\\\\&amp;quot;ach\\\\&amp;quot;,\\\\n        \\\\&amp;quot;storedPaymentMethodId\\\\&amp;quot;:\\\\&amp;quot;JC5H4P79C9P7KPG6\\\\&amp;quot;\\\\n    },\\\\n    \\\\&amp;quot;recurringProcessingModel\\\\&amp;quot;: \\\\&amp;quot;CardOnFile\\\\&amp;quot;,\\\\n    \\\\&amp;quot;shopperInteraction\\\\&amp;quot;: \\\\&amp;quot;ContAuth\\\\&amp;quot;,\\\\n    \\\\&amp;quot;shopperReference\\\\&amp;quot;:\\\\&amp;quot;YOUR_SHOPPER_REFERENCE\\\\&amp;quot;,\\\\n    \\\\&amp;quot;returnUrl\\\\&amp;quot;:\\\\&amp;quot;https:\\\\\\\/\\\\\\\/your-company.example.com\\\\\\\/...\\\\&amp;quot;\\\\n}&#039;&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;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;If the account did not pass validation, ask the shopper for the correct account details or for a different payment method.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:&quot;sessions_0_1&quot;,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;&lt;code&gt;\\\/payments&lt;\\\/code&gt;&quot;,&quot;content&quot;:&quot;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;From your server, make a  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/payments&lt;\\\/a&gt; request, specifying:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;code&gt;paymentMethod.type&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;ach&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;paymentMethod.bankAccountNumber&lt;\\\/code&gt;: the bank account number.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;paymentMethod.bankAccountType&lt;\\\/code&gt;: the type of bank account. Allowed values: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;checking&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;savings&lt;\\\/strong&gt;&lt;\\\/span&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;paymentMethod.bankLocationId&lt;\\\/code&gt;: the ACH routing number of the account.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;paymentMethod.ownerName&lt;\\\/code&gt;: the name on the bank account.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;billingAddress&lt;\\\/code&gt; (Optional): the account owner&#039;s address information.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;amount.currency&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;USD&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;amount.value&lt;\\\/code&gt;: &lt;strong&gt;0&lt;\\\/strong&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;p&gt;&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Zero-value auth request&#039;\\&quot; :id=\\&quot;&#039;zero-value-auth-request-9623119453&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;bash&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;curl https:\\\\\\\/\\\\\\\/checkout-test.adyen.com\\\\\\\/v68\\\\\\\/payments \\\\\\\\\\\\n-H &#039;x-api-key: ADYEN_API_KEY&#039; \\\\\\\\\\\\n-H &#039;content-type: application\\\\\\\/json&#039; \\\\\\\\\\\\n-d &#039;{\\\\n    \\\\&amp;quot;merchantAccount\\\\&amp;quot;:\\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;,\\\\n    \\\\&amp;quot;amount\\\\&amp;quot;:{\\\\n        \\\\&amp;quot;currency\\\\&amp;quot;:\\\\&amp;quot;USD\\\\&amp;quot;,\\\\n        \\\\&amp;quot;value\\\\&amp;quot;:\\\\&amp;quot;0\\\\&amp;quot;\\\\n    },\\\\n    \\\\&amp;quot;{hint:state.data.paymentMethod from onSubmit}paymentMethod{\\\\\\\/hint}\\\\&amp;quot;:{\\\\n        \\\\&amp;quot;type\\\\&amp;quot;:\\\\&amp;quot;ach\\\\&amp;quot;,\\\\n        \\\\&amp;quot;bankAccountNumber\\\\&amp;quot;:\\\\&amp;quot;1234567890\\\\&amp;quot;,\\\\n        \\\\&amp;quot;bankAccountType\\\\&amp;quot;:\\\\&amp;quot;checking\\\\&amp;quot;,\\\\n        \\\\&amp;quot;bankLocationId\\\\&amp;quot;:\\\\&amp;quot;121000358\\\\&amp;quot;,\\\\n        \\\\&amp;quot;ownerName\\\\&amp;quot;:\\\\&amp;quot;John Smith\\\\&amp;quot;\\\\n    },\\\\n    \\\\&amp;quot;billingAddress\\\\&amp;quot;:{\\\\n        \\\\&amp;quot;houseNumberOrName\\\\&amp;quot;:\\\\&amp;quot;50\\\\&amp;quot;,\\\\n        \\\\&amp;quot;street\\\\&amp;quot;:\\\\&amp;quot;Test Street\\\\&amp;quot;,\\\\n        \\\\&amp;quot;city\\\\&amp;quot;:\\\\&amp;quot;Amsterdam\\\\&amp;quot;,\\\\n        \\\\&amp;quot;stateOrProvince\\\\&amp;quot;:\\\\&amp;quot;NY\\\\&amp;quot;,\\\\n        \\\\&amp;quot;postalCode\\\\&amp;quot;:\\\\&amp;quot;12010\\\\&amp;quot;,\\\\n        \\\\&amp;quot;country\\\\&amp;quot;:\\\\&amp;quot;US\\\\&amp;quot;\\\\n    },\\\\n    \\\\&amp;quot;reference\\\\&amp;quot;:\\\\&amp;quot;YOUR_ORDER_NUMBER\\\\&amp;quot;,\\\\n    \\\\&amp;quot;recurringProcessingModel\\\\&amp;quot;:\\\\&amp;quot;Subscription\\\\&amp;quot;,\\\\n    \\\\&amp;quot;shopperInteraction\\\\&amp;quot;:\\\\&amp;quot;Ecommerce\\\\&amp;quot;,\\\\n    \\\\&amp;quot;shopperReference\\\\&amp;quot;:\\\\&amp;quot;YOUR_SHOPPER_REFERENCE\\\\&amp;quot;,\\\\n    \\\\&amp;quot;storePaymentMethod\\\\&amp;quot;:\\\\&amp;quot;true\\\\&amp;quot;,\\\\n    \\\\&amp;quot;returnUrl\\\\&amp;quot;:\\\\&amp;quot;https:\\\\\\\/\\\\\\\/your-company.example.com\\\\\\\/...\\\\&amp;quot;\\\\n}&#039;&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;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;In the zero-value authorization response or the  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Webhooks\\\/latest\\\/post\\\/AUTHORISATION\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;AUTHORISATION&lt;\\\/a&gt; webhook, check the following parameters:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;code&gt;additionalData.bankVerificationResultRaw&lt;\\\/code&gt;: the details of the validation as reported by giact. See the table with &lt;a href=\\&quot;#validation-result-values\\&quot;&gt;validation result values&lt;\\\/a&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;additionalData.bankVerificationResult&lt;\\\/code&gt;: indicates if the account passed the validation. Possible values: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Passed&lt;\\\/strong&gt;&lt;\\\/span&gt; or &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Failed&lt;\\\/strong&gt;&lt;\\\/span&gt;.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Validation result in zero-value auth response&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n  ...\\\\n  \\\\\\&quot;additionalData\\\\\\&quot;:{\\\\n    \\\\\\&quot;bankVerificationResultRaw\\\\\\&quot;:\\\\\\&quot;1111: Account Verified - The checking account was found to be an open and valid account.\\\\\\&quot;,\\\\n    \\\\\\&quot;bankVerificationResult\\\\\\&quot;:\\\\\\&quot;Passed\\\\\\&quot;\\\\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;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Based on the validation result, determine your next step.&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;If the account passed validation, make a payment request for the actual amount with the same account details that you provided in the zero-value request.&lt;\\\/li&gt;\\n&lt;li&gt;If the account did not pass validation, ask the shopper for the correct account details or for a different payment method.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:&quot;payments_1_2&quot;,&quot;relation&quot;:&quot;&quot;}]\"\n            :should-update-when-url-changes='false'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<h2 id=\"validation-result-values\">Validation result values<\/h2>\n<p>In the authorization response, the <code>additionalData.bankVerificationResultRaw<\/code> parameter can include the following information.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Code<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">1111<\/td>\n<td style=\"text-align: left;\">Account Verified - The checking account was found to be an open and valid account.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">2222<\/td>\n<td style=\"text-align: left;\">AMEX Cheque - The checking account was found to be an open and valid American Express account.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">3333<\/td>\n<td style=\"text-align: left;\">Non-Participant Provider - This account was reported with acceptable, positive data found in recent or current transactions.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">5555<\/td>\n<td style=\"text-align: left;\">Savings Account Verified - The savings account was found to be an open and valid account.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">7777<\/td>\n<td style=\"text-align: left;\">Account Verified - The checking account was found to be open and have a positive history.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">8888<\/td>\n<td style=\"text-align: left;\">Savings Account Verified - The savings account was found to be open and have a positive history.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">9999<\/td>\n<td style=\"text-align: left;\">This account was reported with acceptable, positive data found in recent transactions. Positive history exists for multiple transactions.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">GN01<\/td>\n<td style=\"text-align: left;\">Negative information was found.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">GN05<\/td>\n<td style=\"text-align: left;\">The routing number supplied is reported as not assigned to a financial institution.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">GP01<\/td>\n<td style=\"text-align: left;\">The value for Details will vary depending on the Value for CheckReject reason in the Private Bad Checks List.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">GS01<\/td>\n<td style=\"text-align: left;\">The routing number supplied did not match the format of a valid routing number.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">GS02<\/td>\n<td style=\"text-align: left;\">The account number supplied did not match the format of a valid account number.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">GS03<\/td>\n<td style=\"text-align: left;\">The check number supplied did not match the format of a valid check number.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">GS04<\/td>\n<td style=\"text-align: left;\">The amount supplied did not match the format of a valid amount.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">ND00<\/td>\n<td style=\"text-align: left;\">No positive or negative information has been reported on the account. This could be a small or regional bank that does not report.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">ND01<\/td>\n<td style=\"text-align: left;\">No positive or negative information has been reported on the account. This routing number can only be valid for US Government financial institutions. Please verify this item with its issuing authority.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">RT00<\/td>\n<td style=\"text-align: left;\">The routing number appears to be accurate however no positive or negative information has been reported on the account. Please contact customer to ensure that the correct account information was entered.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">RT01<\/td>\n<td style=\"text-align: left;\">This account should be returned based on the risk factor being reported.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">RT02<\/td>\n<td style=\"text-align: left;\">This account should be returned based on the risk factor being reported.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">RT03<\/td>\n<td style=\"text-align: left;\">Current negative data exists on this account. Accept transaction with risk. (Example: Checking or Savings account in NSF status, recent returns, or outstanding items)<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">RT04<\/td>\n<td style=\"text-align: left;\">This is a Non Demand Deposit Account (post no debits), Credit Card Cheque, Line of Credit, Home Equity, or a Brokerage check.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">RT05<\/td>\n<td style=\"text-align: left;\">Current negative data exists on this account. Accept transaction with risk. (Example: Checking or Savings account in NSF status, recent returns, or outstanding items)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Test and go live<\/h2>\n<p>To test your giact account validation integration, you can use specific mock account numbers in our test environment. These details simulate various validation outcomes, allowing you to confirm that your integration correctly handles both successful and unsuccessful scenarios before going live. You can enter these test account numbers directly into the payment details fields when using a Drop-in or Components integration, or include them in the API request body.<\/p>\n<p>The following table lists the specific test account numbers and the corresponding giact status codes they trigger. Use the routing number <strong>122105278<\/strong> across all test scenarios.<\/p>\n<table>\n<thead>\n<tr>\n<th>Code<\/th>\n<th>Bank Account Number<\/th>\n<th>Bank Verification Result<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>1111<\/td>\n<td>0000000016<\/td>\n<td>Passed<\/td>\n<\/tr>\n<tr>\n<td>3333<\/td>\n<td>0000000018<\/td>\n<td>Passed<\/td>\n<\/tr>\n<tr>\n<td>5555<\/td>\n<td>0000000019<\/td>\n<td>Passed<\/td>\n<\/tr>\n<tr>\n<td>ND00<\/td>\n<td>0000000008<\/td>\n<td>Passed<\/td>\n<\/tr>\n<tr>\n<td>RT00<\/td>\n<td>0000000010<\/td>\n<td>Passed<\/td>\n<\/tr>\n<tr>\n<td>RT03<\/td>\n<td>0000000013<\/td>\n<td>Passed<\/td>\n<\/tr>\n<tr>\n<td>GN01<\/td>\n<td>0000000001<\/td>\n<td>Passed<\/td>\n<\/tr>\n<tr>\n<td>GS02<\/td>\n<td>0000000005<\/td>\n<td>Failed<\/td>\n<\/tr>\n<tr>\n<td>RT01<\/td>\n<td>0000000011<\/td>\n<td>Failed<\/td>\n<\/tr>\n<tr>\n<td>RT02<\/td>\n<td>0000000012<\/td>\n<td>Failed<\/td>\n<\/tr>\n<tr>\n<td>RT04<\/td>\n<td>0000000014<\/td>\n<td>Failed<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/online-payments\/tokenization\"\n                        target=\"_self\"\n                        >\n                    Tokenization\n                <\/a><\/li><li><a href=\"\/development-resources\/webhooks\"\n                        target=\"_self\"\n                        >\n                    Webhooks\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\/verification-with-giact","articleFields":{"description":"Use giact gVERIFY for account validation of ACH Direct Debit payments.","parameters":{"payment_method":"ACH Direct Debit","country_code":"US","currency":"USD","payment_method_type":"ach","validation":"giact"}},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/payment-methods\/ach-direct-debit\/verification-with-giact","title":"Account validation with giact","content":"When accepting ACH Direct Debit payments, Nacha requires you to validate the bank account details for consumer accounts (SEC code WEB) on the shopper's first transaction. This validation is mandatory to reduce fraud and minimize payment failures. To help you meet this requirement, we partner with giact gVERIFY.\nUsing giact gVERIFY allows you to verify the validity and status of a shopper's bank account before initiating a transaction. This verification reduces the chance that payments are returned because of issues such as incorrect routing numbers or closed accounts. Giact checks account information against an extensive proprietary database and static rules, not through real-time access to the bank.\nRequirements\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nAn online-payments integration. \n\n\nLimitations\nFor cost reasons, we recommend using giact validation only on the shopper's initial transaction, and when the shopper changes their account.\n\n\nSetup steps\nBefore you begin: Get in touch with your Adyen contact and sign the contract addendum that specifies the terms and conditions for the use of account validation through giact. Ask our Support Team to enable giact verification for your Adyen account. For this, you need to select a validation option. Add ACH Direct Debit in your test Customer Area. In the Additional settings of your Standard webhook configuration, under Bank, select Include Bank Verification results.\n\n\n\nSelect a validation option\nAdyen offers three integration options to trigger the giact validation service, allowing you to comply with Nacha requirements and manage validation costs according to your business model. The configuration is managed on your Adyen account, and you can only select one option. Ask our Support Team to configure the option you need on your account.\nValidation options\n\n\n\nValidation option\nWhich payments trigger validation?\nUse case\n\n\n\n\nConsumer ecommerce payments\nACH Direct Debit payments with shopperInteraction ecommerce and SEC code WEB.\nValidate consumer accounts on their first payment, as per Nacha requirements.\n\n\nAll ecommerce payments\nAll ACH Direct Debit payments with shopperInteraction ecommerce (any SEC code).\nValidate both consumer and corporate accounts on their first payment.\n\n\nZero amount payments\nAll ACH Direct Debit payments with amount.value 0, regardless of shopperInteraction or SEC code.\nSpecify exactly when to trigger a call to giact. Only available for API-only integrations.\n\n\n\nIf you have a Components or Drop-in integration, we recommend the consumer ecommerce payments option because it covers Nacha requirements and is the easiest to use.\nIf you have an API-only integration, you can use any of the validation options.\nConsumer ecommerce payments validation\nFor Drop-in or Components integrations\n\nThe shopper selects ACH Direct Debit on the checkout page.\nThe Drop-in or the Component collects the required details (the bank account number, ACH routing number, and account owner's name) from the shopper. Keep the hasHolderName and holderNameRequired configuration parameters set to true. If you change these to false, you will have to collect the account owner's name manually.\nIf this is the shopper's first payment, the shopperInteraction is ecommerce, and the SEC code is WEB, we automatically send the account details to giact gVERIFY for validation. \nIf the account passes validation, we try to process the payment. If the account fails validation, we refuse the payment.\nIf the payment is refused, we show a refusal screen. The shopper can either use a different bank account for the ACH payment, or they can use a different payment method.\n\nFor API-only integrations\n\nThe shopper selects ACH Direct Debit on your payment form.\nYou collect the required details from the shopper as a part of your payment request. To do this, add the required parameters. You need to collect the following details:\n\nBank account number\nACH routing number\nAccount owner's name\n\nIf this is the shopper's first payment and the shopperInteraction is ecommerce, and the SEC code is WEB, we automatically send the account details to giact gVERIFY for validation.\nIf the account passes validation, we try to process the payment. If the account fails validation, we refuse the payment. \nIf the payment is refused, you get a refusal response from the API. The shopper can either use a different bank account for the ACH payment, or they can use a different payment method.\n\nAll ecommerce payments validation\nFor Drop-in or Components integrations\n\nThe shopper selects ACH Direct Debit on the checkout page.\nThe Drop-in or the Component collects the required details (the bank account number, ACH routing number, and account owner's name) from the shopper. Keep the hasHolderName and holderNameRequired configuration parameters set to true. If you set these to false, you will have to collect the account owner's name manually.\nIf this is the shopper's first payment and the shopperInteraction is ecommerce, we automatically send the account details to giact gVERIFY for validation.\nIf the account passes validation, we try to process the payment. If the account fails validation, we refuse the payment.\nIf the payment is refused, we display a refusal screen. The shopper can either use a different bank account for the ACH payment, or they can use a different payment method.\n\nFor API-only integrations\n\nThe shopper selects ACH Direct Debit on your payment form.\nYou collect the required details from the shopper as a part of your payment request. To do this, add the required parameters. You need to collect the following details: \n\nBank account number\nACH routing number\nAccount owner's name\n\nIf this is the shopper's first payment, the shopperInteraction is ecommerce, we automatically send the account details to giact gVERIFY for validation.\nIf the account passes validation, we try to process the payment. If the account fails validation, we refuse the payment.\nIf the payment is refused, you get a refusal response from the API. The shopper can either use a different bank account for the ACH payment, or they can use a different payment method.\n\nZero amount payments validation\n\nThe shopper selects ACH Direct Debit on your payment form. \nYou collect the required details from the shopper as a part of your payment request. To do this, add the required parameters. You need to collect the following details:\n\nBank account number\n\nACH routing number \n\nAlert your shoppers that some banks have different routing numbers for different transfers. Shoppers should not provide their wire transfer routing number.\n\nBank account type: checking or savings.\n\nThe account type is not verified by giact. But if you use the Advanced flow (the \/payments endpoint) you need to specify the account type when you make a payment request for the actual amount. This avoids unnecessary chargebacks due to account type mismatches.\n\nAccount owner's name\n\n\nYou send a [zero-value authorization] (#validate-using-zero-value-authorization) request with the details that the shopper provided. Include the storePaymentMethod and storePaymentMethodMode parameters so you can store the shopper's details as a token to use later when you make the payment request for the actual amount.\nWe send the details to giact gVERIFY and return the outcome in the zero-value authorization response and in the AUTHORISATION webhook.\nBased on the zero-value authorization response, you decide on your next step. You can either:\n\nMake a payment request for the actual amount. Specify the token (storedPaymentMethodId) that was generated when you made the zero-auth request.\nAsk the shopper to provide correct details or use a different payment method.\n\n\nValidate using zero-value authorization\nIf you selected the zero amount payments option, you need to make a zero-value authorization request. After you have gathered the shopper's account details, verify those details.\nSelect the tab for the endpoint you are using:\n\n\n    \n        \n        \n    \n\n\nValidation result values\nIn the authorization response, the additionalData.bankVerificationResultRaw parameter can include the following information.\n\n\n\nCode\nDescription\n\n\n\n\n1111\nAccount Verified - The checking account was found to be an open and valid account.\n\n\n2222\nAMEX Cheque - The checking account was found to be an open and valid American Express account.\n\n\n3333\nNon-Participant Provider - This account was reported with acceptable, positive data found in recent or current transactions.\n\n\n5555\nSavings Account Verified - The savings account was found to be an open and valid account.\n\n\n7777\nAccount Verified - The checking account was found to be open and have a positive history.\n\n\n8888\nSavings Account Verified - The savings account was found to be open and have a positive history.\n\n\n9999\nThis account was reported with acceptable, positive data found in recent transactions. Positive history exists for multiple transactions.\n\n\nGN01\nNegative information was found.\n\n\nGN05\nThe routing number supplied is reported as not assigned to a financial institution.\n\n\nGP01\nThe value for Details will vary depending on the Value for CheckReject reason in the Private Bad Checks List.\n\n\nGS01\nThe routing number supplied did not match the format of a valid routing number.\n\n\nGS02\nThe account number supplied did not match the format of a valid account number.\n\n\nGS03\nThe check number supplied did not match the format of a valid check number.\n\n\nGS04\nThe amount supplied did not match the format of a valid amount.\n\n\nND00\nNo positive or negative information has been reported on the account. This could be a small or regional bank that does not report.\n\n\nND01\nNo positive or negative information has been reported on the account. This routing number can only be valid for US Government financial institutions. Please verify this item with its issuing authority.\n\n\nRT00\nThe routing number appears to be accurate however no positive or negative information has been reported on the account. Please contact customer to ensure that the correct account information was entered.\n\n\nRT01\nThis account should be returned based on the risk factor being reported.\n\n\nRT02\nThis account should be returned based on the risk factor being reported.\n\n\nRT03\nCurrent negative data exists on this account. Accept transaction with risk. (Example: Checking or Savings account in NSF status, recent returns, or outstanding items)\n\n\nRT04\nThis is a Non Demand Deposit Account (post no debits), Credit Card Cheque, Line of Credit, Home Equity, or a Brokerage check.\n\n\nRT05\nCurrent negative data exists on this account. Accept transaction with risk. (Example: Checking or Savings account in NSF status, recent returns, or outstanding items)\n\n\n\nTest and go live\nTo test your giact account validation integration, you can use specific mock account numbers in our test environment. These details simulate various validation outcomes, allowing you to confirm that your integration correctly handles both successful and unsuccessful scenarios before going live. You can enter these test account numbers directly into the payment details fields when using a Drop-in or Components integration, or include them in the API request body.\nThe following table lists the specific test account numbers and the corresponding giact status codes they trigger. Use the routing number 122105278 across all test scenarios.\n\n\n\nCode\nBank Account Number\nBank Verification Result\n\n\n\n\n1111\n0000000016\nPassed\n\n\n3333\n0000000018\nPassed\n\n\n5555\n0000000019\nPassed\n\n\nND00\n0000000008\nPassed\n\n\nRT00\n0000000010\nPassed\n\n\nRT03\n0000000013\nPassed\n\n\nGN01\n0000000001\nPassed\n\n\nGS02\n0000000005\nFailed\n\n\nRT01\n0000000011\nFailed\n\n\nRT02\n0000000012\nFailed\n\n\nRT04\n0000000014\nFailed\n\n\n\nSee also\n\n\n                    Tokenization\n                \n                    Webhooks\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":"Account validation with giact"},"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\/verification-with-giact"},"levels":4,"category":"Payment method","category_color":"green","tags":["Account","validation","giact"]}}
