--- title: "Verification results" description: "Keep track of the results of the verification and know when to retry." url: "https://docs.adyen.com/classic-platforms/verification-process/check-verification-results" source_url: "https://docs.adyen.com/classic-platforms/verification-process/check-verification-results.md" canonical: "https://docs.adyen.com/classic-platforms/verification-process/check-verification-results" last_modified: "2021-11-29T09:16:00+01:00" language: "en" --- # Verification results Keep track of the results of the verification and know when to retry. [View source](/classic-platforms/verification-process/check-verification-results.md) This page is for classic Adyen for Platforms integrations. If you are just starting your implementation, refer to our [new integration guide](/adyen-for-platforms-model) instead. You can find out about the verification results by: * Listening to the [ACCOUNT\_HOLDER\_VERIFICATION](https://docs.adyen.com/api-explorer/#/NotificationService/latest/ACCOUNT_HOLDER_VERIFICATION) notification webhook. * Making a [/getAccountHolder](https://docs.adyen.com/api-explorer/Account/latest/post/getAccountHolder) request. * Checking in your Customer Area. ### Tab: Notification Adyen sends an [ACCOUNT\_HOLDER\_VERIFICATION](https://docs.adyen.com/api-explorer/Notification/latest/post/ACCOUNT_HOLDER_VERIFICATION) notification webhook to inform your server of the results of the check. This notification contains: * [content.kycCheckStatusData.type](https://docs.adyen.com/api-explorer/Notification/latest/post/ACCOUNT_HOLDER_VERIFICATION#request-content-kycCheckStatusData-type): The [type of verification](#verification-types). * [content.kycCheckStatusData.status](https://docs.adyen.com/api-explorer/Notification/latest/post/ACCOUNT_HOLDER_VERIFICATION#request-content-kycCheckStatusData-status): The [status](#verification-statuses) of the check. The status determines if you have further actions to take. * [summary](https://docs.adyen.com/api-explorer/Notification/latest/post/ACCOUNT_HOLDER_VERIFICATION#request-content-kycCheckStatusData-summary): Contains a [verification code](/classic-platforms/verification-process/verification-codes) and a description that provides more information about the results. * [requiredFields](https://docs.adyen.com/api-explorer/Notification/latest/post/ACCOUNT_HOLDER_VERIFICATION#request-content-kycCheckStatusData-requiredFields): An array of fields that are required for the checks. Here is an example notification when the data that the account holder has provided is invalid. **Webhook for check with INVALID\_DATA** ```json { "error": { "errorCode": "1104", "message": "test error message" }, "eventDate": "1970-01-01T01:00:00+01:00", "eventType": "ACCOUNT_HOLDER_VERIFICATION", "executingUserKey": "executing-user-key", "live": true, "pspReference": "TSTPSPR0001", "content": { "accountHolderCode": "AH0000001", "kycCheckStatusData": { "type": "PASSPORT_VERIFICATION", "status": "INVALID_DATA", "summary": { "kycCheckCode": 1104, "kycCheckDescription": "Document has expired" }, "requiredFields": [ "field.missing" ] }, "shareholderCode": "SH00000001" } } ``` ### Tab: Customer Area You can view verification statuses in your [Customer Area](https://ca-test.adyen.com/). Your Customer Area user must have the **Merchant MarketPlace role** user role. 1. Log in to your [Customer Area](https://ca-test.adyen.com/). 2. Go to **Platform** > **Sub-merchants**. 3. Find the account holder and select the **KYC** tab. Here you can find more information about the verification process, such status of the checks and the tiers for your platform. ### Tab: API You can also make a POST [/getAccountHolder](https://docs.adyen.com/api-explorer/Account/latest/post/getAccountHolder) request to get updates about the verification. Specify the `accountHolderCode` in your request. **/getAccountHolder request** ```bash curl https://cal-test.adyen.com/cal/services/Account/v6/getAccountHolder \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'content-type: application/json' \ -d '{ "accountHolderCode": "YOUR_ACCOUNT_HOLDER_CODE" }' ``` The response returns a [verification](https://docs.adyen.com/api-explorer/Account/6/post/getAccountHolder#responses-200-verification) object. In this object you'll find the resource being verified, along with the following: * [type](https://docs.adyen.com/api-explorer/Account/6/post/getAccountHolder#responses-200-verification-accountHolder-checks-type): The [type of verification](#verification-types). * [status](https://docs.adyen.com/api-explorer/Account/6/post/getAccountHolder#responses-200-verification-accountHolder-checks-status): The [status](#verification-statuses) of the check. The status determines if you have further actions to take. * [summary](https://docs.adyen.com/api-explorer/Account/latest/post/getAccountHolder#responses-200-verification-accountHolder-checks-summary): Contains a [verification code](/classic-platforms/verification-process/verification-codes) and a description that provides more information about the results. * [requiredFields](https://docs.adyen.com/api-explorer/Account/latest/post/getAccountHolder#responses-200-verification-accountHolder-checks-requiredFields): An array of fields that are required for the checks. **/getAccountHolder response** ```json { "pspReference" : "8836183819713023", "accountHolderCode" : "YOUR_ACCOUNT_HOLDER_CODE", ... "verification" : { "accountHolder" : { "checks" : [ { "type" : "IDENTITY_VERIFICATION", "status" : "DATA_PROVIDED" }, { "type" : "PASSPORT_VERIFICATION", "status" : "INVALID_DATA", "summary": { "kycCheckCode": 1104, "kycCheckDescription": "Document has expired" }, "requiredFields": [ "field.missing" ] } ] } } } ``` ## Verification types The verification is categorized into the following checks. | Type | Description | | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **COMPANY\_VERIFICATION** | Checks for a business legal entity. | | **IDENTITY\_VERIFICATION** | Checks for an individual account holder. | | **LEGAL\_ARRANGEMENT\_VERIFICATION** | Checks for an account holder with a legal arrangement. | | **NONPROFIT\_VERIFICATION** | Checks for a nonprofit organization. | | **PASSPORT\_VERIFICATION** | Checks for an identification documents such as a passport or driver's license. | | **PAYOUT\_METHOD\_VERIFICATION** | Checks for the payout methods that an account holder adds. This type is sent starting from notification webhook version 6. This replaces **BANK\_ACCOUNT\_VERIFICATION** and **CARD\_VERIFICATION** from earlier versions. | | **PCI\_VERIFICATION** | Checks for PCI SAQ A questionnaire. | ## Verification statuses Below are the different check statuses and the action that you can take. | Verification status | Description | Action to take | | ------------------------- | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | | **AWAITING\_DATA** | There is still missing data required for the verification to start. | Get the required information from the account holder. | | **DATA\_PROVIDED** | All the required data has been provided. | None. | | **PENDING** | Verification is in progress. | None. The status will change once the validation is completed. | | **INVALID\_DATA** | There are errors in the data provided. | [Retry the verification](#retry-verification). | | **RETRY\_LIMIT\_REACHED** | The data has been updated too many times. | For some of the checks, you may [retry the verification](#retry-verification). | | **PASSED** | The verification has been completed and the data has passed the checks | None. The account holder can continue processing payments and payouts are enabled. | | **FAILED** | Adyen has verified the information, but has found reasons to refuse working with this entity. | None. This is a final state. When a check fails, the account holder status is set to suspended. | ## Retrying the verification Adyen uses the data from the account holder to automatically run the verification. However, in some cases, automatic verification might fail. This could be due to incorrect data or the data cannot be verified. In general, the following statuses mean that you can retry the verification. * **INVALID\_DATA**: You should ask the account holder to review their data and update when needed. * **RETRY\_LIMIT\_REACHED**: This means that Adyen has tried to verify the account holder more than three times. After the third attempt, Adyen may require additional documents. The following sections are specific for the [verification type](#verification-types). ### For individuals When the **IDENTITY\_VERIFICATION** type has the following statuses, you can ask the account holder to retry. | Status | Action to take | | ------------------------- | --------------------------------------------------------------------------------------------------- | | **INVALID\_DATA** | Ask the account holder to review and update their information. | | **RETRY\_LIMIT\_REACHED** | Upload a [photo ID](/classic-platforms/verification-process/document-requirements#for-individuals). | ### For bank accounts When the **PAYOUT\_METHOD\_VERIFICATION** type has the following statuses, you can ask the account holder to retry. | Status | Action to take | | ------------------------- | --------------------------------------------------------------------------------------------------------- | | **INVALID\_DATA** | Ask the account holder to review and update their information. | | **RETRY\_LIMIT\_REACHED** | Upload a [bank statement](/classic-platforms/verification-process/document-requirements#bank-statements). | ### For organizations When the **COMPANY\_VERIFICATION** or **NONPROFIT\_VERIFICATION** types has an **INVALID\_DATA** status, check the `kycCheckCode` to know if you can retry the verification by uploading documents. * For **API version 5 and later**, refer to [Company check verification codes](/classic-platforms/verification-process/verification-codes#company-verification) for a full list of codes. * For **API version 4 and earlier**, check if the `kycCheckCode` is "**1604: The submitted Taxpayer Identification Number and legal business name do not match. Correct any errors.**" If you receive any of the codes described above, you should: 1. Ask the account holder to review if their company name and business registration number are correct, and update if needed. 2. In case the account holder is certain that their company name and business registration number are correct, give them the *option* to upload a company registration document. 3. If after three attempts you still receive any of `kycCheckCode` described above, *require* the account holder to [upload a company registration document](/classic-platforms/verification-process/document-requirements#organization-documents) in addition to reviewing and updating their company name and registration number. Adyen will use the company registration document to manually verify the company. ## See also * [Onboard and verify users](/classic-platforms/onboard-users) * [Verification requirements](/classic-platforms/verification-process/required-information)