{"title":"Bank account verification with open banking","category":"default","creationDate":1776961628,"content":"<p>Adyen's verification through bank report service uses Adyen's open banking gateway to retrieve bank account verification reports from third-party banks.<\/p>\n<p>For example, you consider hiring an unregistered third-party individual on a contract-basis for services, such as food-delivery or as a courier. You want to make sure the person is who they say they are <em>before<\/em> you enter into an agreement with them for their services.<\/p>\n<p>You can verify them through Account Information Service Providers (AISPs) such as Plaid or Tink. The third-party individual can authorize their bank to share a bank account verification report with you, which provides bank account ownership verification and Know Your Customer (KYC) verification quickly and securely.<\/p>\n<h2>Requirements<\/h2>\n<p>Before you begin, take into account the following requirements and preparations.<\/p>\n<table>\n   <thead>\n      <tr>\n         <th>Requirement<\/th>\n         <th>Description<\/th>\n      <\/tr>\n   <\/thead>\n   <tbody>\n      <tr>\n         <td><strong>Integration type<\/strong><\/td>\n         <td>This feature is supported with an <a href=\"\/platforms\">Adyen for Platforms<\/a>, <a href=\"\/marketplaces\">Marketplaces<\/a>, or a <a href=\"\/point-of-sale\/classic-library-deprecation\">Classic integration<\/a>.<\/td>\n      <\/tr>\n      <tr>\n         <td><strong>API credentials<\/strong><\/td>\n         <td>You must have an <a href=\"\/development-resources\/api-credentials\/#generate-api-key\">API key<\/a> (recommended) or <a href=\"\/development-resources\/api-credentials\/#basic-authentication\">basic authentication username and password<\/a> to access this API. <br><br>Ensure that you have asked your Adyen contact to assign the following role to your API credential: <ul><li><strong>Role for OpenBanking account verification use case: EXTERNAL<\/strong><\/li><\/ul><\/td>\n      <\/tr>\n      <tr>\n         <td><strong>Setup steps<\/strong><\/td>\n         <td>\n            Before you begin, you have the option to customize the open banking widget. If you choose to, provide Adyen the necessary information to customize and display your company name and logo within the widget when the flow transitions to the Adyen's open banking gateway:\n            <table>\n               <tr>\n                  <th>Information<\/th>\n                  <th>Required?<\/th>\n                  <th>Shown to third-party individual<\/th>\n               <\/tr>\n               <tr>\n                  <td>Company name<\/td>\n                  <td>Yes<\/td>\n                  <td>No<\/td>\n               <\/tr>\n               <tr>\n                  <td>Logo<\/td>\n                  <td>No, but recommended<\/td>\n                  <td>Yes<\/td>\n               <\/tr>\n               <tr>\n                  <td>Application name<\/td>\n                  <td>Yes<\/td>\n                  <td>Yes<\/td>\n               <\/tr>\n               <tr>\n                  <td>Legal entity name<\/td>\n                  <td>Yes<\/td>\n                  <td>No<\/td>\n               <\/tr>\n               <tr>\n                  <td>Website<\/td>\n                  <td>Yes<\/td>\n                  <td>No<\/td>\n               <\/tr>\n               <tr>\n                  <td>Address<\/td>\n                  <td>Yes<\/td>\n                  <td>No<\/td>\n               <\/tr>\n            <\/table>\n         <\/td>\n      <\/tr>\n   <\/tbody>\n<\/table>\n<h2>How it works<\/h2>\n<p>When you want to verify a third-party individual's bank account ownership through a redirect, use the following flow.<\/p>\n<ol>\n<li>\n<p>Make a request to the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/routes<\/a> generation endpoint to get a list of available account verification routes. Each route represents a possible connection path between the third-party individual and their bank. When the third-party individual successfully connects through one of these routes, you will receive a report  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a>. Use the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a> to:<\/p>\n<ul>\n<li>Request a bank account verification report.<\/li>\n<li>Verify the third-party individual's identity using the information in the bank account verification report.<\/li>\n<\/ul>\n<p>The  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/routes<\/a> generation endpoint dynamically compiles and returns a list of the most suitable AISPs available for account verification. The list is based on the location of the bank where the third-party individual (the external account holder) is registered. Note, the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#request-redirectUrl\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">redirectUrl<\/a> you provide is used to receive the report  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a>, but it does not influence route selection.<\/p>\n<div class=\"notices green\">\n<p>A report  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a> is not guaranteed for every route. The third-party individual must successfully complete the bank connection flow for a  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a> to be generated.<\/p>\n<\/div>\n<\/li>\n<li>Redirect the third-party individual to the AISP's bank selection and authentication\/authorization flow. After the third-party individual completes the authentication flow and authorizes their bank to generate and share a report, the merchant receives a report  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a> (or error details). This report  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a> or error details will be provided in the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#request-redirectUrl\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">redirectUrl<\/a> the merchant specified in the routes generation request.<\/li>\n<li>Use the report  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a> to make a request to the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/reports\/{code}<\/a> endpoint. This request retrieves a bank account verification report containing information about the third-party individual and account number (ACH, BSB, EFT, IBAN) the third-party individual has agreed to share with the merchant.<\/li>\n<\/ol>\n<p><a rel=\"lightbox\" href=\"\/user\/pages\/reuse\/pfs-open-banking\/account-holder-report\/account-verification-sequence.svg\" src=\"\">\n  <img alt=\"Sequence diagram for account verification using Adyen's Open Banking auth flow\" src=\"\/user\/pages\/reuse\/pfs-open-banking\/account-holder-report\/account-verification-sequence.svg\" \/>\n<\/a><\/p>\n<h2>Generate a list of routes<\/h2>\n<p>To get a list of available account verification routes.<\/p>\n<ol>\n<li>\n<p>Make a POST  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/routes<\/a> request with the following parameters in the request body. The request header includes, your <code>ADYEN-API-KEY<\/code> and <code>application\/json<\/code> specifying the format of the request body:<\/p>\n<table>\n<thead>\n<tr>\n<th>Parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#request-country\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">country<\/a><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>The location where the third-party individual's bank account is registered. Adyen uses this information to determine the best provider for the given location, and to configure the open banking flow for that respective location.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#request-locale\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">locale<\/a><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>The language to configure for the verification flow user interface. This information is used to configure the open banking flow with the same language for a consistent user experience.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#request-state\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">state<\/a><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td>This is an optional value to identify the request in callback handling. You can generate this value on a per-session basis to protect the callback against Cross-Site Request Forgery (CSRF) attacks. This value  must be composed of characters that can be successfully URL-encoded. <br><div class=\"notices green\">Note, this value will be stored in external systems, so make sure that you avoid exposing any sensitive information in a plain-text format.<\/div><\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#request-redirectUrl\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">redirectUrl<\/a><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>The URL where Adyen should redirect the third-party individual when the open banking flow finishes. Adyen's open banking gateway returns a report  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a> as a parameter in the URL response. You can use this  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a> when making a request to the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/reports\/{code}<\/a> endpoint to get the bank account verification report for the third-party individual.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Request: Get a list of AISP routes'\" :id=\"'get-account-verification-routes'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/obgateway-test.adyen.com\\\/obgateway\\\/v1\\\/accountVerification\\\/routes \\\\\\n-H 'x-api-key: ADYEN-API-KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-X POST  \\\\\\n-d '{\\n\\&quot;country\\&quot;: \\&quot;NL\\&quot;,\\n\\&quot;locale\\&quot;: \\&quot;en-US\\&quot;,\\n\\&quot;state\\&quot;: \\&quot;123A-456B-789C-10D\\&quot;,\\n\\&quot;redirectUrl\\&quot;: \\&quot;https:\\\/\\\/merchanturl.example.org\\\/redirect\\\/url\\&quot;\\n}'&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>The response contains the details about the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#responses-200-routes-provider\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">provider<\/a> that the third-party individual will be redirected to during the flow, and the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#responses-200-routes-link\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">link<\/a> to begin the open banking flow.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#responses-200-routes-provider\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">provider<\/a><\/td>\n<td style=\"text-align: left;\">Metadata about the selected provider, including the name and company logo. You can use this information to inform the third-party individual about the provider they will be redirected to when they select the link.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#responses-200-routes-link\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">link<\/a><\/td>\n<td style=\"text-align: left;\">The redirection link. You can use this link to redirect the third-party individual to the open banking flow when it is selected.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Response: List of available routes sorted by priority.'\" :id=\"''\" :code-data='[{\"language\":\"bash\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"routes\\\": [\\n    {\\n      \\\"provider\\\": {\\n        \\\"name\\\": \\\"Tink\\\",\\n        \\\"logoURL\\\": \\\"https:\\\/\\\/obgateway.adyen.com\\\/obgateway\\\/static\\\/provider\\\/images\\\/tink-logo.svg\\\"\\n      },\\n      \\\"link\\\": \\\"https:\\\/\\\/obgateway.adyen.com\\\/obgateway\\\/provider\\\/outgoing\\\/tink\\\/redirect\\\/13ec4802-c987-4f8c-8909-9a75ff567256\\\"\\n    }\\n  ]\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ol>\n<h2>Redirect and handle the result<\/h2>\n<p>The Adyen open banking gateway handles the outgoing and incoming communications with the AISP. When the third-party individual opens the route link, the gateway redirects them to the external financial institution for account verification. After the verification flow at the external financial institution is complete, the gateway redirects the third-party individual from the financial institution back to the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#request-redirectUrl\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">redirectUrl<\/a> provided in the <a href=\"#generate-a-list-of-routes\">generate list of routes<\/a> step.<\/p>\n<p>For successful callbacks, the gateway adds a report  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a> to the query parameters. Use this  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a> to download a bank account verification report from the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/reports\/{code}<\/a> endpoint in the <a href=\"#view-the-bank-account-verification-report\">view the bank account verification report<\/a> step. In cases where there are errors, the third-party individual is redirected to the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#request-redirectUrl\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">redirectUrl<\/a> with the error information in the query parameters.<\/p>\n<ol>\n<li>\n<p>View the response of the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#request-redirectUrl\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">redirectUrl<\/a> and check if there was a successful redirection callback. A successful redirection callback may look like this:<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Successful redirection callback'\" :id=\"''\" :code-data='[{\"language\":\"bash\",\"tabTitle\":\"\",\"content\":\"https:\\\/\\\/merchanturl.example.org\\\/redirect\\\/url?code=e30248de-fc54-45e8-8e80-b3dcfe717e8c&amp;state=123A-456B-789C-10D&amp;type=success&amp;signature=eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6Im9iZ2F0ZXdheS5zaWduaW5nLjEifQ.eyJleHAiOjE3NTMyNjc0NzksInR5cGUiOiJzdWNjZXNzIiwic3RhdGUiOiJ1c2VySWQ6MTIzIiwidXJsIjoiaHR0cHM6Ly9kaXNwbGF5LXBhcmFtZXRlcnMuY29tIiwiY29kZSI6Ik9CQ080MkM4UTIyMzIyNzY1TVZHODZaQjdRNVA0RCJ9.p5CXtewNS43HazYmF4S6063bi4P__f8Noddbwfh3Ud5sNJktrSpV0ZramxUbNy6LjwakMF4gG6TMC0EmBtQGW9P7vQgThNRcAtvH-cynrCXE2hR3M7yuEwKwb3eg0ySM\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>The response contains the details about the <code>type<\/code> indicating <strong>success<\/strong> or <strong>error<\/strong>, the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#request-state\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">state<\/a> , a <code>signature<\/code>, and a  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a>. Use this  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a>to download a bank account verification report from the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/reports\/{code}<\/a> endpoint in the <a href=\"#view-the-bank-account-verification-report\">view the bank account verification report<\/a> step.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a><\/td>\n<td style=\"text-align: left;\">The report <code>code<\/code> that can be used to download the verification report in the gateway <code>\/reports\/{code}<\/code> endpoint.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#request-state\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">state<\/a><\/td>\n<td style=\"text-align: left;\">The state provided in the <a href=\"#generate-a-list-of-routes\">generate a list of routes<\/a> step.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>type<\/code><\/td>\n<td style=\"text-align: left;\">The event type, <strong>success<\/strong> in the case of a successful callback or <strong>error<\/strong>, if the callback fails.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>signature<\/code><\/td>\n<td style=\"text-align: left;\">A JSON Web Signature (JWS) that signs the contents of the redirect URL, ensuring the integrity and authenticity of the data.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>If you encounter a redirection error callback, it may look like this:<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Unsuccessful redirection callback'\" :id=\"''\" :code-data='[{\"language\":\"bash\",\"tabTitle\":\"\",\"content\":\"https:\\\/\\\/merchanturl.example.org\\\/redirect\\\/url?type=error&amp;error_code=USER_CANCELED&amp;error_message=The%20user%20canceled%20the%20authorization%20process&amp;state=123A-456B-789C-10D&amp;signature=eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6Im9iZ2F0ZXdheS5zaWduaW5nLjEifQ.eyJleHAiOjE3NTMyNjc0NzksInR5cGUiOiJzdWNjZXNzIiwic3RhdGUiOiJ1c2VySWQ6MTIzIiwidXJsIjoiaHR0cHM6Ly9kaXNwbGF5LXBhcmFtZXRlcnMuY29tIiwiY29kZSI6Ik9CQ080MkM4UTIyMzIyNzY1TVZHODZaQjdRNVA0RCJ9.p5CXtewNS43HazYmF4S6063bi4P__f8Noddbwfh3Ud5sNJktrSpV0ZramxUbNy6LjwakMF4gG6TMC0EmBtQGW9P7vQgThNRcAtvH-cynrCXE2hR3M7yuEwKwb3eg0ySM\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>The response contains the details about the <code>type<\/code> indicating <strong>success<\/strong> or <strong>error<\/strong>, the <code>error_code<\/code> and <code>error_message<\/code> associated with the failed redirection request callback,  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#request-state\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">state<\/a>, and a <code>signature<\/code>.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>error_code<\/code><\/td>\n<td style=\"text-align: left;\">The error code associated with the failed redirection request callback.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>error_message<\/code><\/td>\n<td style=\"text-align: left;\">The error message associated with the failed redirection request callback.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#request-state\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">state<\/a><\/td>\n<td style=\"text-align: left;\">The state provided in the <a href=\"#generate-a-list-of-routes\">generate a list of routes<\/a> step.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>type<\/code><\/td>\n<td style=\"text-align: left;\">The event type, <strong>success<\/strong> in the case of a successful callback or <strong>error<\/strong>, if the callback fails.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>signature<\/code><\/td>\n<td style=\"text-align: left;\">A JSON Web Signature (JWS) that signs the contents of the redirect URL, ensuring the integrity and authenticity of the data.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ol>\n<h3>Error codes and messages<\/h3>\n<p>Here's a list of error codes and corresponding error messages you can receive from Adyen's open banking gateway. Depending on the context of the error code and message, you choose how to handle the error and present options to your third-party individual.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\"><code>error_code<\/code><\/th>\n<th style=\"text-align: left;\"><code>error_message<\/code><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>USER_CANCELED<\/code><\/td>\n<td style=\"text-align: left;\">The third-party individual canceled the authorization process.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>CONNECTION_ERROR<\/code><\/td>\n<td style=\"text-align: left;\">An error occurred during the authentication process with the bank.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>PROVIDER_INTERNAL_ERROR<\/code><\/td>\n<td style=\"text-align: left;\">The provider has responded with an internal error.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>PROVIDER_UNKNOWN_ERROR<\/code><\/td>\n<td style=\"text-align: left;\">The provider has responded with an unknown error.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>View the bank account verification report<\/h2>\n<p>To download the bank account verification report for a third-party individual.<\/p>\n<ol>\n<li>\n<p>Make a GET  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/reports\/{code}<\/a> request, where  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a> is a unique identifier for a specific bank account verification report. This is the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a> you received as a result of a <a href=\"#redirect-and-handle-the-result\">successful callback<\/a> to the open banking flow:<\/p>\n<table>\n<thead>\n<tr>\n<th>Parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>The  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#path-code\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code<\/a> you receive after a successful open banking flow that is included as a query parameter in the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/post\/accountVerification\/routes#request-redirectUrl\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">redirectUrl<\/a> callback.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Request: Retrieve the bank account verification report for a third-party individual'\" :id=\"'get-account-verification-report'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/obgateway-test.adyen.com\\\/obgateway\\\/v1\\\/accountVerification\\\/reports\\\/e30248de-fc54-45e8-8e80-b3dcfe717e8c \\\\\\n-H 'x-api-key: ADYEN_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-X GET \\\\\\n-d ''&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>Confirm that the <code>x-state<\/code> header matches the state provided in the <a href=\"#generate-a-list-of-routes\">generate a list of routes<\/a> request.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Response header'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"\\\"x-state: 123A-456B-789C-10D\\\"\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>The response returns the report resource, identified by its unique  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#responses-200-id\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">id<\/a>. You also receive the <code>country<\/code> where the report was generated, and the <code>accounts<\/code> that were verified through the open banking authorization flow.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#responses-200-id\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">id<\/a><\/td>\n<td style=\"text-align: left;\">The unique identifier of the report.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#responses-200-country\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">country<\/a><\/td>\n<td style=\"text-align: left;\">The location where the report was generated.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/open-banking\/latest\/get\/accountVerification\/reports\/(code)#responses-200-accounts\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">accounts<\/a><\/td>\n<td style=\"text-align: left;\">The list of verified accounts for the third-party individual. The accounts array allows for use-cases where more than one account can be verified. When a single account selection is permitted, the list will return that account.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n<div id=\"tabCfbhe\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Response with IBAN account&quot;,&quot;content&quot;:&quot;\\n&lt;pre&gt;&lt;code class=\\&quot;language-json\\&quot;&gt;{\\n  \\&quot;id\\&quot;: \\&quot;69ee9452ef824fe092f1417f37535755\\&quot;,\\n  \\&quot;country\\&quot;: \\&quot;ES\\&quot;,\\n  \\&quot;accounts\\&quot;: [\\n      {\\n          \\&quot;accountId\\&quot;: \\&quot;ed5080e4f485430290475d246534c8fd\\&quot;,\\n          \\&quot;accountType\\&quot;: \\&quot;CURRENT\\&quot;,\\n          \\&quot;accountName\\&quot;: \\&quot;Checking Account 1\\&quot;,\\n          \\&quot;accountNumber\\&quot;: \\&quot;ES1376230223254275408743\\&quot;,\\n          \\&quot;currency\\&quot;: \\&quot;EUR\\&quot;,\\n          \\&quot;identifiers\\&quot;: {\\n              \\&quot;iban\\&quot;: {\\n                  \\&quot;iban\\&quot;: \\&quot;ES1376230223254275408743\\&quot;,\\n                  \\&quot;bban\\&quot;: \\&quot;76230223254275408743\\&quot;\\n              }\\n          },\\n          \\&quot;parties\\&quot;: [\\n              {\\n                  \\&quot;identity\\&quot;: {\\n                      \\&quot;fullLegalName\\&quot;: \\&quot;Alberta Bobbeth Charleson\\&quot;,\\n                      \\&quot;name\\&quot;: \\&quot;Alberta Bobbeth Charleson\\&quot;\\n                  },\\n                  \\&quot;role\\&quot;: \\&quot;HOLDER\\&quot;\\n              }\\n          ],\\n          \\&quot;bankName\\&quot;: \\&quot;Tink Demo Bank\\&quot;\\n      }\\n  ]\\n}&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&quot;,&quot;altTitle&quot;:&quot;iban-account-info&quot;,&quot;oldTabId&quot;:&quot;iban-account-info_1&quot;,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Response with ACH accounts&quot;,&quot;content&quot;:&quot;\\n&lt;pre&gt;&lt;code class=\\&quot;language-json\\&quot;&gt;{\\n  \\&quot;id\\&quot;: \\&quot;nJwJE68h6vlSEnk\\&quot;,\\n  \\&quot;country\\&quot;: \\&quot;US\\&quot;,\\n  \\&quot;accounts\\&quot;: [\\n      {\\n          \\&quot;accountId\\&quot;: \\&quot;XvNzLGMpl3fBevllWEwks3jvBvPy88sbkypkP\\&quot;,\\n          \\&quot;accountType\\&quot;: \\&quot;CURRENT\\&quot;,\\n          \\&quot;accountName\\&quot;: \\&quot;Plaid Gold Standard 0% Interest Checking\\&quot;,\\n          \\&quot;accountNumber\\&quot;: \\&quot;1111222233330000\\&quot;,\\n          \\&quot;currency\\&quot;: \\&quot;USD\\&quot;,\\n          \\&quot;identifiers\\&quot;: {\\n              \\&quot;ach\\&quot;: {\\n                  \\&quot;accountNumber\\&quot;: \\&quot;1111222233330000\\&quot;,\\n                  \\&quot;routingNumber\\&quot;: \\&quot;011401533\\&quot;\\n              }\\n          },\\n          \\&quot;parties\\&quot;: [\\n              {\\n                  \\&quot;identity\\&quot;: {\\n                      \\&quot;fullLegalName\\&quot;: \\&quot;Jane Doe\\&quot;,\\n                      \\&quot;name\\&quot;: \\&quot;Jane Doe\\&quot;\\n                  },\\n                  \\&quot;role\\&quot;: \\&quot;HOLDER\\&quot;\\n              }\\n          ],\\n          \\&quot;bankName\\&quot;: \\&quot;Wells Fargo\\&quot;\\n      },\\n      {\\n          \\&quot;accountId\\&quot;: \\&quot;XvNzLGMpl3fBevllWEwks3jvBvPy88sbkypkP\\&quot;,\\n          \\&quot;accountType\\&quot;: \\&quot;CURRENT\\&quot;,\\n          \\&quot;accountName\\&quot;: \\&quot;Plaid Gold Standard 0% Interest Checking\\&quot;,\\n          \\&quot;accountNumber\\&quot;: \\&quot;3333222211110000\\&quot;,\\n          \\&quot;currency\\&quot;: \\&quot;USD\\&quot;,\\n          \\&quot;identifiers\\&quot;: {\\n              \\&quot;ach\\&quot;: {\\n                  \\&quot;accountNumber\\&quot;: \\&quot;3333222211110000\\&quot;,\\n                  \\&quot;routingNumber\\&quot;: \\&quot;033587521\\&quot;\\n              }\\n          },\\n          \\&quot;parties\\&quot;: [\\n              {\\n                  \\&quot;identity\\&quot;: {\\n                      \\&quot;fullLegalName\\&quot;: \\&quot;Jane Doe\\&quot;,\\n                      \\&quot;name\\&quot;: \\&quot;Jane Doe\\&quot;\\n                  },\\n                  \\&quot;role\\&quot;: \\&quot;HOLDER\\&quot;\\n              }\\n          ],\\n          \\&quot;bankName\\&quot;: \\&quot;Bank of America\\&quot;\\n      }\\n  ]\\n}&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&quot;,&quot;altTitle&quot;:&quot;ach-account-info&quot;,&quot;oldTabId&quot;:&quot;ach-account-info_2&quot;,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Response with ETF account&quot;,&quot;content&quot;:&quot;\\n&lt;pre&gt;&lt;code class=\\&quot;language-json\\&quot;&gt;{\\n  \\&quot;id\\&quot;: \\&quot;69ee9452ef824fe092f1417f37535755\\&quot;,\\n  \\&quot;country\\&quot;: \\&quot;CA\\&quot;,\\n  \\&quot;accounts\\&quot;: [\\n      {\\n          \\&quot;accountId\\&quot;: \\&quot;th7681t6j876930300478t246534j8fi\\&quot;,\\n          \\&quot;accountType\\&quot;: \\&quot;CURRENT\\&quot;,\\n          \\&quot;accountName\\&quot;: \\&quot;Checking Account 1\\&quot;,\\n          \\&quot;accountNumber\\&quot;: \\&quot;111122220000\\&quot;,\\n          \\&quot;currency\\&quot;: \\&quot;CAD\\&quot;,\\n          \\&quot;identifiers\\&quot;: {\\n             \\&quot;eft\\&quot;: {\\n                  \\&quot;accountNumber\\&quot;: \\&quot;111122220000\\&quot;,\\n                  \\&quot;branch\\&quot;: \\&quot;01533\\&quot;,\\n                  \\&quot;institution\\&quot;: \\&quot;114\\&quot;\\n              }\\n          },\\n          \\&quot;parties\\&quot;: [\\n              {\\n                  \\&quot;identity\\&quot;: {\\n                      \\&quot;fullLegalName\\&quot;: \\&quot;Jessie Dean\\&quot;,\\n                      \\&quot;name\\&quot;: \\&quot;Jessie Dean\\&quot;\\n                  },\\n                  \\&quot;role\\&quot;: \\&quot;HOLDER\\&quot;\\n              }\\n          ],\\n          \\&quot;bankName\\&quot;: \\&quot;Plaid Demo Bank\\&quot;\\n      }\\n  ]\\n}&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&quot;,&quot;altTitle&quot;:&quot;etf-account-info&quot;,&quot;oldTabId&quot;:&quot;etf-account-info_3&quot;,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Response with BSB account&quot;,&quot;content&quot;:&quot;\\n&lt;pre&gt;&lt;code class=\\&quot;language-json\\&quot;&gt;{\\n    \\&quot;id\\&quot;: \\&quot;lkumovjdFQFy6JhbSaWTa8sCH79fzJJnFMKpkSST09ism2lCMlsnSEsrjx6XNr4u_kxhSg==\\&quot;,\\n    \\&quot;country\\&quot;: \\&quot;AU\\&quot;,\\n    \\&quot;accounts\\&quot;: [\\n        {\\n            \\&quot;accountId\\&quot;: \\&quot;lkumovjdFQFy6JhbSaWTa8sCH79fzJJnFMKpkSST09ism2lCMlsnSEsrjx6XNr4u_kxhSg==\\&quot;,\\n            \\&quot;accountType\\&quot;: \\&quot;UNKNOWN\\&quot;,\\n            \\&quot;accountName\\&quot;: \\&quot;Savings Account\\&quot;,\\n            \\&quot;accountNumber\\&quot;: \\&quot;37458052\\&quot;,\\n            \\&quot;currency\\&quot;: \\&quot;AUD\\&quot;,\\n            \\&quot;identifiers\\&quot;: {\\n                \\&quot;bsb\\&quot;: {\\n                    \\&quot;accountNumber\\&quot;: \\&quot;37458052\\&quot;,\\n                    \\&quot;bsbCode\\&quot;: \\&quot;413574\\&quot;\\n                }\\n            },\\n            \\&quot;parties\\&quot;: [\\n                {\\n                    \\&quot;identity\\&quot;: {\\n                        \\&quot;fullLegalName\\&quot;: \\&quot;Peter Sherman\\&quot;,\\n                        \\&quot;name\\&quot;: \\&quot;Peter\\&quot;\\n                    },\\n                    \\&quot;role\\&quot;: \\&quot;HOLDER\\&quot;\\n                }\\n            ],\\n            \\&quot;bankName\\&quot;: \\&quot;Banking Sandbox Data Holder\\&quot;\\n        }\\n    ]\\n}&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&quot;,&quot;altTitle&quot;:&quot;etf-account-info&quot;,&quot;oldTabId&quot;:&quot;etf-account-info_4&quot;,&quot;relation&quot;:&quot;&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<p><\/p>\n<\/li>\n<\/ol>\n<h2>See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/business-accounts\/\"\n                        target=\"_self\"\n                        >\n                    Open banking\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/pt\/business-accounts\/verify-account-holder","articleFields":{"description":"Quickly verify unregistered third-party individuals using the Adyen open banking gateway.","robots":"noindex,nofollow","feedback_component":true,"id":"31504141","type":"page","_expandable":{"operations":""},"status":"current","parameter":{"directoryPath":"\/business-accounts","model":"balance platform"}},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/business-accounts\/verify-account-holder","title":"Bank account verification with open banking","content":"Adyen's verification through bank report service uses Adyen's open banking gateway to retrieve bank account verification reports from third-party banks.\nFor example, you consider hiring an unregistered third-party individual on a contract-basis for services, such as food-delivery or as a courier. You want to make sure the person is who they say they are before you enter into an agreement with them for their services.\nYou can verify them through Account Information Service Providers (AISPs) such as Plaid or Tink. The third-party individual can authorize their bank to share a bank account verification report with you, which provides bank account ownership verification and Know Your Customer (KYC) verification quickly and securely.\nRequirements\nBefore you begin, take into account the following requirements and preparations.\n\n   \n      \n         Requirement\n         Description\n      \n   \n   \n      \n         Integration type\n         This feature is supported with an Adyen for Platforms, Marketplaces, or a Classic integration.\n      \n      \n         API credentials\n         You must have an API key (recommended) or basic authentication username and password to access this API. Ensure that you have asked your Adyen contact to assign the following role to your API credential: Role for OpenBanking account verification use case: EXTERNAL\n      \n      \n         Setup steps\n         \n            Before you begin, you have the option to customize the open banking widget. If you choose to, provide Adyen the necessary information to customize and display your company name and logo within the widget when the flow transitions to the Adyen's open banking gateway:\n            \n               \n                  Information\n                  Required?\n                  Shown to third-party individual\n               \n               \n                  Company name\n                  Yes\n                  No\n               \n               \n                  Logo\n                  No, but recommended\n                  Yes\n               \n               \n                  Application name\n                  Yes\n                  Yes\n               \n               \n                  Legal entity name\n                  Yes\n                  No\n               \n               \n                  Website\n                  Yes\n                  No\n               \n               \n                  Address\n                  Yes\n                  No\n               \n            \n         \n      \n   \n\nHow it works\nWhen you want to verify a third-party individual's bank account ownership through a redirect, use the following flow.\n\n\nMake a request to the  \/routes generation endpoint to get a list of available account verification routes. Each route represents a possible connection path between the third-party individual and their bank. When the third-party individual successfully connects through one of these routes, you will receive a report  code. Use the  code to:\n\nRequest a bank account verification report.\nVerify the third-party individual's identity using the information in the bank account verification report.\n\nThe  \/routes generation endpoint dynamically compiles and returns a list of the most suitable AISPs available for account verification. The list is based on the location of the bank where the third-party individual (the external account holder) is registered. Note, the  redirectUrl you provide is used to receive the report  code, but it does not influence route selection.\n\nA report  code is not guaranteed for every route. The third-party individual must successfully complete the bank connection flow for a  code to be generated.\n\n\nRedirect the third-party individual to the AISP's bank selection and authentication\/authorization flow. After the third-party individual completes the authentication flow and authorizes their bank to generate and share a report, the merchant receives a report  code (or error details). This report  code or error details will be provided in the  redirectUrl the merchant specified in the routes generation request.\nUse the report  code to make a request to the  \/reports\/{code} endpoint. This request retrieves a bank account verification report containing information about the third-party individual and account number (ACH, BSB, EFT, IBAN) the third-party individual has agreed to share with the merchant.\n\n\n  \n\nGenerate a list of routes\nTo get a list of available account verification routes.\n\n\nMake a POST  \/routes request with the following parameters in the request body. The request header includes, your ADYEN-API-KEY and application\/json specifying the format of the request body:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\n country\n\nThe location where the third-party individual's bank account is registered. Adyen uses this information to determine the best provider for the given location, and to configure the open banking flow for that respective location.\n\n\n locale\n\nThe language to configure for the verification flow user interface. This information is used to configure the open banking flow with the same language for a consistent user experience.\n\n\n state\n\nThis is an optional value to identify the request in callback handling. You can generate this value on a per-session basis to protect the callback against Cross-Site Request Forgery (CSRF) attacks. This value  must be composed of characters that can be successfully URL-encoded. Note, this value will be stored in external systems, so make sure that you avoid exposing any sensitive information in a plain-text format.\n\n\n redirectUrl\n\nThe URL where Adyen should redirect the third-party individual when the open banking flow finishes. Adyen's open banking gateway returns a report  code as a parameter in the URL response. You can use this  code when making a request to the  \/reports\/{code} endpoint to get the bank account verification report for the third-party individual.\n\n\n\n\n\n\n\n\nThe response contains the details about the  provider that the third-party individual will be redirected to during the flow, and the  link to begin the open banking flow.\n\n\n\nParameter\nDescription\n\n\n\n\n provider\nMetadata about the selected provider, including the name and company logo. You can use this information to inform the third-party individual about the provider they will be redirected to when they select the link.\n\n\n link\nThe redirection link. You can use this link to redirect the third-party individual to the open banking flow when it is selected.\n\n\n\n\n\n\n\n\nRedirect and handle the result\nThe Adyen open banking gateway handles the outgoing and incoming communications with the AISP. When the third-party individual opens the route link, the gateway redirects them to the external financial institution for account verification. After the verification flow at the external financial institution is complete, the gateway redirects the third-party individual from the financial institution back to the  redirectUrl provided in the generate list of routes step.\nFor successful callbacks, the gateway adds a report  code to the query parameters. Use this  code to download a bank account verification report from the  \/reports\/{code} endpoint in the view the bank account verification report step. In cases where there are errors, the third-party individual is redirected to the  redirectUrl with the error information in the query parameters.\n\n\nView the response of the  redirectUrl and check if there was a successful redirection callback. A successful redirection callback may look like this:\n\n\n\n\n\nThe response contains the details about the type indicating success or error, the  state , a signature, and a  code. Use this  codeto download a bank account verification report from the  \/reports\/{code} endpoint in the view the bank account verification report step.\n\n\n\nParameter\nDescription\n\n\n\n\n code\nThe report code that can be used to download the verification report in the gateway \/reports\/{code} endpoint.\n\n\n state\nThe state provided in the generate a list of routes step.\n\n\ntype\nThe event type, success in the case of a successful callback or error, if the callback fails.\n\n\nsignature\nA JSON Web Signature (JWS) that signs the contents of the redirect URL, ensuring the integrity and authenticity of the data.\n\n\n\nIf you encounter a redirection error callback, it may look like this:\n\n\n\nThe response contains the details about the type indicating success or error, the error_code and error_message associated with the failed redirection request callback,  state, and a signature.\n\n\n\nParameter\nDescription\n\n\n\n\nerror_code\nThe error code associated with the failed redirection request callback.\n\n\nerror_message\nThe error message associated with the failed redirection request callback.\n\n\n state\nThe state provided in the generate a list of routes step.\n\n\ntype\nThe event type, success in the case of a successful callback or error, if the callback fails.\n\n\nsignature\nA JSON Web Signature (JWS) that signs the contents of the redirect URL, ensuring the integrity and authenticity of the data.\n\n\n\n\n\nError codes and messages\nHere's a list of error codes and corresponding error messages you can receive from Adyen's open banking gateway. Depending on the context of the error code and message, you choose how to handle the error and present options to your third-party individual.\n\n\n\nerror_code\nerror_message\n\n\n\n\nUSER_CANCELED\nThe third-party individual canceled the authorization process.\n\n\nCONNECTION_ERROR\nAn error occurred during the authentication process with the bank.\n\n\nPROVIDER_INTERNAL_ERROR\nThe provider has responded with an internal error.\n\n\nPROVIDER_UNKNOWN_ERROR\nThe provider has responded with an unknown error.\n\n\n\nView the bank account verification report\nTo download the bank account verification report for a third-party individual.\n\n\nMake a GET  \/reports\/{code} request, where  code is a unique identifier for a specific bank account verification report. This is the  code you received as a result of a successful callback to the open banking flow:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\n code\n\nThe  code you receive after a successful open banking flow that is included as a query parameter in the  redirectUrl callback.\n\n\n\n\n\n\n\n\nConfirm that the x-state header matches the state provided in the generate a list of routes request.\n\n\n\n\n\nThe response returns the report resource, identified by its unique  id. You also receive the country where the report was generated, and the accounts that were verified through the open banking authorization flow.\n\n\n\nParameter\nDescription\n\n\n\n\n id\nThe unique identifier of the report.\n\n\n country\nThe location where the report was generated.\n\n\n accounts\nThe list of verified accounts for the third-party individual. The accounts array allows for use-cases where more than one account can be verified. When a single account selection is permitted, the list will return that account.\n\n\n\n\n\n    \n        \n        \n    \n\n\n\n\n\nSee also\n\n\n                    Open banking\n                \n","type":"page","locale":"pt","boost":18,"hierarchy":{"lvl0":"Home","lvl1":"Business accounts","lvl2":"Bank account verification with open banking"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/business-accounts","lvl2":"\/pt\/business-accounts\/verify-account-holder"},"levels":3,"category":"","category_color":"","tags":["account","verification","banking"]}}
