---
title: "Upload a document for an existing account holder."
method: POST
path: "/uploadDocument"
---

# Upload a document for an existing account holder.

`POST /uploadDocument`

This endpoint is used to upload a document for use in the KYC verification of an account holder.

For further information regarding KYC Verification, refer to [Verification checks](https://docs.adyen.com/platforms/verification-checks).

## Request body

- UploadDocumentRequest
  - `accountHolderCode` string — The code of the account holder, for which the document is submitted.
  - `bankAccountUUID` string — The unique ID of the bank account, for which the document is submitted. >Required if the document is being submitted in order to verify a bank account.
  - `documentContent` string, byte, required — The content of the document, in Base64-encoded string format. To learn about document requirements, refer to [Verification checks](https://docs.adyen.com/platforms/verification-checks).
  - `documentDetail` DocumentDetail, required
    - `accountHolderCode` string, required — The code of account holder, to which the document applies.
    - `bankAccountUUID` string — The unique ID of the Bank Account to which the document applies. >Required if the `documentType` is **BANK_STATEMENT**, where a document is being submitted in order to verify a bank account. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on when a document should be submitted in order to verify a bank account.
    - `description` string — Description of the document.
    - `documentType` 'BANK_STATEMENT' | 'BSN' | 'COMPANY_REGISTRATION_SCREENING' | 'CONSTITUTIONAL_DOCUMENT' | 'DRIVING_LICENCE' | 'DRIVING_LICENCE_BACK' | 'DRIVING_LICENCE_FRONT' | 'ID_CARD' | 'ID_CARD_BACK' | 'ID_CARD_FRONT' | 'PASSPORT' | 'SSN' | 'SUPPORTING_DOCUMENTS', required — The type of the document. Refer to [Verification checks](https://docs.adyen.com/platforms/verification-checks) for details on when each document type should be submitted and for the accepted file formats. Permitted values: * **BANK_STATEMENT**: A file containing a bank statement or other document proving ownership of a specific bank account. * **COMPANY_REGISTRATION_SCREENING** (Supported from v5 and later): A file containing a company registration document. * **PASSPORT**: A file containing the identity page(s) of a passport. * **ID_CARD_FRONT**: A file containing only the front of the ID card. In order for a document to be usable, both the **ID_CARD_FRONT** and **ID_CARD_BACK** must be submitted. * **ID_CARD_BACK**: A file containing only the back of the ID card. In order for a document to be usable, both the **ID_CARD_FRONT** and **ID_CARD_BACK** must be submitted. * **DRIVING_LICENCE_FRONT**: A file containing only the front of the driving licence. In order for a document to be usable, both the **DRIVING_LICENCE_FRONT** and **DRIVING_LICENCE_BACK** must be submitted. * **DRIVING_LICENCE_BACK**: A file containing only the back of the driving licence. In order for a document to be usable, both the **DRIVING_LICENCE_FRONT** and **DRIVING_LICENCE_FRONT** must be submitted.
    - `filename` string, required — Filename of the document.
    - `shareholderCode` string — The code of the shareholder, to which the document applies. Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) for details on when a document should be submitted in order to verify a shareholder.>Required if the account holder referred to by the `accountHolderCode` has a `legalEntity` of type **Business** and the `documentType` is either **PASSPORT**, **ID_CARD_FRONT**, **ID_CARD_BACK**, **DRIVING_LICENCE_FRONT**, or **DRIVING_LICENCE_BACK**. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on when a document should be submitted in order to verify a shareholder.
  - `shareholderCode` string — The code of the shareholder, for which the document is submitted. >Required if the document is being submitted in order to verify a shareholder.

## Response `200`

OK - the request has succeeded.

- UpdateAccountHolderResponse
  - `accountHolderCode` string — The code of the account holder.
  - `accountHolderDetails` AccountHolderDetails
    - `address` ViasAddress
      - `city` string — The name of the city. >Required if either `houseNumberOrName`, `street`, `postalCode`, or `stateOrProvince` are provided.
      - `country` string, required — The two-character country code of the address. The permitted country codes are defined in ISO-3166-1 alpha-2 (e.g. 'NL'). > If you don't know the country or are not collecting the country from the shopper, provide `country` as `ZZ`.
      - `houseNumberOrName` string — The number or name of the house.
      - `postalCode` string — The postal code. >A maximum of five (5) digits for an address in the USA, or a maximum of ten (10) characters for an address in all other countries. >Required if either `houseNumberOrName`, `street`, `city`, or `stateOrProvince` are provided.
      - `stateOrProvince` string — The abbreviation of the state or province. >Two (2) characters for an address in the USA or Canada, or a maximum of three (3) characters for an address in all other countries. >Required for an address in the USA or Canada if either `houseNumberOrName`, `street`, `city`, or `postalCode` are provided.
      - `street` string — The name of the street. >The house number should not be included in this field; it should be separately provided via `houseNumberOrName`. >Required if either `houseNumberOrName`, `city`, `postalCode`, or `stateOrProvince` are provided.
    - `bankAccountDetails` BankAccountDetail[] — Array of bank accounts associated with the account holder. For details about the required `BankAccountDetail` fields, refer to [Bank account check](https://docs.adyen.com/platforms/verification-checks/bank-account-check).
      - `accountNumber` string — The bank account number (without separators). >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `accountType` string — The type of bank account. Only applicable to bank accounts held in the USA. The permitted values are: `checking`, `savings`. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `bankAccountName` string — The name of the bank account.
      - `bankAccountUUID` string — The unique identifier (UUID) of the Bank Account. >If, during an account holder create or update request, this field is left blank (but other fields provided), a new Bank Account will be created with a procedurally-generated UUID. >If, during an account holder create request, a UUID is provided, the creation of the Bank Account will fail while the creation of the account holder will continue. >If, during an account holder update request, a UUID that is not correlated with an existing Bank Account is provided, the update of the account holder will fail. >If, during an account holder update request, a UUID that is correlated with an existing Bank Account is provided, the existing Bank Account will be updated.
      - `bankBicSwift` string — The bank identifier code. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `bankCity` string — The city in which the bank branch is located. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `bankCode` string — The bank code of the banking institution with which the bank account is registered. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `bankName` string — The name of the banking institution with which the bank account is held. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `branchCode` string — The branch code of the branch under which the bank account is registered. The value to be specified in this parameter depends on the country of the bank account: * United States - Routing number * United Kingdom - Sort code * Germany - Bankleitzahl >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `checkCode` string — The check code of the bank account. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `countryCode` string — The two-letter country code in which the bank account is registered. >The permitted country codes are defined in ISO-3166-1 alpha-2 (e.g. 'NL'). >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `currencyCode` string — The currency in which the bank account deals. >The permitted currency codes are defined in ISO-4217 (e.g. 'EUR'). >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `iban` string — The international bank account number. >The IBAN standard is defined in ISO-13616. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `ownerCity` string — The city of residence of the bank account owner. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `ownerCountryCode` string — The country code of the country of residence of the bank account owner. >The permitted country codes are defined in ISO-3166-1 alpha-2 (e.g. 'NL'). >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `ownerDateOfBirth` string — The date of birth of the bank account owner.
      - `ownerHouseNumberOrName` string — The house name or number of the residence of the bank account owner. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `ownerName` string — The name of the bank account owner. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `ownerNationality` string — The country code of the country of nationality of the bank account owner. >The permitted country codes are defined in ISO-3166-1 alpha-2 (e.g. 'NL'). >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `ownerPostalCode` string — The postal code of the residence of the bank account owner. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `ownerState` string — The state of residence of the bank account owner. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `ownerStreet` string — The street name of the residence of the bank account owner. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `primaryAccount` boolean — If set to true, the bank account is a primary account.
      - `taxId` string — The tax ID number. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
      - `urlForVerification` string — The URL to be used for bank account verification. This may be generated on bank account creation. >Refer to the [Onboarding and verification](https://docs.adyen.com/platforms/onboarding-and-verification) section for details on field requirements.
    - `businessDetails` BusinessDetails
      - `doingBusinessAs` string — The registered name of the company (if it differs from the legal name of the company).
      - `legalBusinessName` string — The legal name of the company.
      - `shareholders` ShareholderContact[] — Array containing information about individuals associated with the account holder either through ownership or control. For details about how you can identify them, refer to [Identity check](https://docs.adyen.com/platforms/verification-checks/identity-check).
        - `address` ViasAddress
          - `city` string — The name of the city. >Required if either `houseNumberOrName`, `street`, `postalCode`, or `stateOrProvince` are provided.
          - `country` string, required — The two-character country code of the address. The permitted country codes are defined in ISO-3166-1 alpha-2 (e.g. 'NL'). > If you don't know the country or are not collecting the country from the shopper, provide `country` as `ZZ`.
          - `houseNumberOrName` string — The number or name of the house.
          - `postalCode` string — The postal code. >A maximum of five (5) digits for an address in the USA, or a maximum of ten (10) characters for an address in all other countries. >Required if either `houseNumberOrName`, `street`, `city`, or `stateOrProvince` are provided.
          - `stateOrProvince` string — The abbreviation of the state or province. >Two (2) characters for an address in the USA or Canada, or a maximum of three (3) characters for an address in all other countries. >Required for an address in the USA or Canada if either `houseNumberOrName`, `street`, `city`, or `postalCode` are provided.
          - `street` string — The name of the street. >The house number should not be included in this field; it should be separately provided via `houseNumberOrName`. >Required if either `houseNumberOrName`, `city`, `postalCode`, or `stateOrProvince` are provided.
        - `email` string — The e-mail address of the person.
        - `fullPhoneNumber` string — The phone number of the person provided as a single string. It will be handled as a landline phone. Examples: "0031 6 11 22 33 44", "+316/1122-3344", "(0031) 611223344"
        - `jobTitle` string — Job title of the person. Required when the `shareholderType` is **Controller**. Example values: **Chief Executive Officer**, **Chief Financial Officer**, **Chief Operating Officer**, **President**, **Vice President**, **Executive President**, **Managing Member**, **Partner**, **Treasurer**, **Director**, or **Other**.
        - `name` ViasName
          - `firstName` string, required — The first name.
          - `gender` 'MALE' | 'FEMALE' | 'UNKNOWN' — The gender. >The following values are permitted: `MALE`, `FEMALE`, `UNKNOWN`.
          - `infix` string — The name's infix, if applicable. >A maximum length of twenty (20) characters is imposed.
          - `lastName` string, required — The last name.
        - `personalData` ViasPersonalData
          - `dateOfBirth` string — The person's date of birth, in ISO-8601 YYYY-MM-DD format. For example, **2000-01-31**.
          - `documentData` PersonalDocumentData[] — Array that contains information about the person's identification document. You can submit only one entry per document type.
            - `expirationDate` string — The expiry date of the document, in ISO-8601 YYYY-MM-DD format. For example, **2000-01-31**.
            - `issuerCountry` string — The country where the document was issued, in the two-character [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format. For example, **NL**.
            - `issuerState` string — The state where the document was issued (if applicable).
            - `number` string — The number in the document.
            - `type` 'DRIVINGLICENSE' | 'ID' | 'PASSPORT' | 'SOCIALSECURITY' | 'VISA', required — The type of the document. Possible values: **ID**, **DRIVINGLICENSE**, **PASSPORT**, **SOCIALSECURITY**, **VISA**. To delete an existing entry for a document `type`, send only the `type` field in your request.
          - `idNumber` string — An ID number of the person.
          - `nationality` string — The nationality of the person represented by a two-character country code, in [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format. For example, **NL**.
        - `phoneNumber` ViasPhoneNumber
          - `phoneCountryCode` string, required — The two-character country code of the phone number. >The permitted country codes are defined in ISO-3166-1 alpha-2 (e.g. 'NL').
          - `phoneNumber` string, required — The phone number. >The inclusion of the phone number country code is not necessary.
          - `phoneType` 'Fax' | 'Landline' | 'Mobile' | 'SIP' — The type of the phone number. >The following values are permitted: `Landline`, `Mobile`, `SIP`, `Fax`.
        - `shareholderCode` string — The unique identifier (UUID) of the shareholder entry. >**If, during an Account Holder create or update request, this field is left blank (but other fields provided), a new Shareholder will be created with a procedurally-generated UUID.** >**If, during an Account Holder create request, a UUID is provided, the creation of the Shareholder will fail while the creation of the Account Holder will continue.** >**If, during an Account Holder update request, a UUID that is not correlated with an existing Shareholder is provided, the update of the Shareholder will fail.** >**If, during an Account Holder update request, a UUID that is correlated with an existing Shareholder is provided, the existing Shareholder will be updated.**
        - `shareholderType` 'Controller' | 'Owner' — Specifies how the person is associated with the account holder. Possible values: * **Owner**: Individuals who directly or indirectly own 25% or more of a company. * **Controller**: Individuals who are members of senior management staff responsible for managing a company or organization.
        - `webAddress` string — The URL of the person's website.
      - `taxId` string — The tax ID of the company.
    - `email` string, required — The email address of the account holder.
    - `fullPhoneNumber` string, required — The phone number of the account holder provided as a single string. It will be handled as a landline phone. **Examples:** "0031 6 11 22 33 44", "+316/1122-3344", "(0031) 611223344"
    - `individualDetails` IndividualDetails
      - `name` ViasName
        - `firstName` string, required — The first name.
        - `gender` 'MALE' | 'FEMALE' | 'UNKNOWN' — The gender. >The following values are permitted: `MALE`, `FEMALE`, `UNKNOWN`.
        - `infix` string — The name's infix, if applicable. >A maximum length of twenty (20) characters is imposed.
        - `lastName` string, required — The last name.
      - `personalData` ViasPersonalData
        - `dateOfBirth` string — The person's date of birth, in ISO-8601 YYYY-MM-DD format. For example, **2000-01-31**.
        - `documentData` PersonalDocumentData[] — Array that contains information about the person's identification document. You can submit only one entry per document type.
          - `expirationDate` string — The expiry date of the document, in ISO-8601 YYYY-MM-DD format. For example, **2000-01-31**.
          - `issuerCountry` string — The country where the document was issued, in the two-character [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format. For example, **NL**.
          - `issuerState` string — The state where the document was issued (if applicable).
          - `number` string — The number in the document.
          - `type` 'DRIVINGLICENSE' | 'ID' | 'PASSPORT' | 'SOCIALSECURITY' | 'VISA', required — The type of the document. Possible values: **ID**, **DRIVINGLICENSE**, **PASSPORT**, **SOCIALSECURITY**, **VISA**. To delete an existing entry for a document `type`, send only the `type` field in your request.
        - `idNumber` string — An ID number of the person.
        - `nationality` string — The nationality of the person represented by a two-character country code, in [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format. For example, **NL**.
    - `merchantCategoryCode` string — The Merchant Category Code of the account holder. > If not specified in the request, this will be derived from the platform account (which is configured by Adyen).
    - `metadata` object — A set of key and value pairs for general use by the account holder or merchant. The keys do not have specific names and may be used for storing miscellaneous data as desired. > The values being stored have a maximum length of eighty (80) characters and will be truncated if necessary. > Note that during an update of metadata, the omission of existing key-value pairs will result in the deletion of those key-value pairs.
    - `webAddress` string, required — The URL of the website of the account holder.
  - `accountHolderStatus` AccountHolderStatus, required
    - `events` AccountEvent[] — A list of events scheduled for the account holder.
      - `event` 'InactivateAccount' | 'RefundNotPaidOutTransfers', required — The event. >Permitted values: `InactivateAccount`, `RefundNotPaidOutTransfers`. For more information, refer to [Verification checks](https://docs.adyen.com/platforms/verification-checks).
      - `executionDate` string, date-time, required — The date on which the event will take place.
      - `reason` string, required — The reason why this event has been created.
    - `payoutState` AccountPayoutState
      - `allowPayout` boolean — Indicates whether payouts are allowed. This field is the overarching payout status, and is the aggregate of multiple conditions (e.g., KYC status, disabled flag, etc). If this field is false, no payouts will be permitted for any of the account holder's accounts. If this field is true, payouts will be permitted for any of the account holder's accounts.
      - `disableReason` string — The reason why payouts (to all of the account holder's accounts) have been disabled (by the platform). If the `disabled` field is true, this field can be used to explain why.
      - `disabled` boolean — Indicates whether payouts have been disabled (by the platform) for all of the account holder's accounts. A platform may enable and disable this field at their discretion. If this field is true, `allowPayout` will be false and no payouts will be permitted for any of the account holder's accounts. If this field is false, `allowPayout` may or may not be enabled, depending on other factors.
      - `payoutLimit` Amount
        - `currency` string, required — The three-character [ISO currency code](https://docs.adyen.com/development-resources/currency-codes).
        - `value` integer, required — The amount of the transaction, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
      - `tierNumber` integer — The payout tier that the account holder occupies.
    - `processingState` AccountProcessingState
      - `disableReason` string — The reason why processing has been disabled.
      - `disabled` boolean — Indicates whether the processing of payments is allowed.
      - `processedFrom` Amount
        - `currency` string, required — The three-character [ISO currency code](https://docs.adyen.com/development-resources/currency-codes).
        - `value` integer, required — The amount of the transaction, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
      - `processedTo` Amount
        - `currency` string, required — The three-character [ISO currency code](https://docs.adyen.com/development-resources/currency-codes).
        - `value` integer, required — The amount of the transaction, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
      - `tierNumber` integer — The processing tier that the account holder occupies.
    - `status` 'Active' | 'Closed' | 'Inactive' | 'Suspended', required — The status of the account holder. >Permitted values: `Active`, `Inactive`, `Suspended`, `Closed`.
    - `statusReason` string — The reason why the status was assigned to the account holder.
  - `invalidFields` ErrorFieldType[] — in case the account holder has not been updated, contains account holder fields, that did not pass the validation.
    - `errorCode` integer — The validation error code.
    - `errorDescription` string — A description of the validation error.
    - `fieldType` FieldType
      - `field` string — The full name of the property.
      - `fieldName` 'accountCode' | 'accountHolderCode' | 'accountHolderDetails' | 'accountNumber' | 'accountStateType' | 'accountStatus' | 'accountType' | 'address' | 'bankAccount' | 'bankAccountCode' | 'bankAccountName' | 'bankAccountUUID' | 'bankBicSwift' | 'bankCity' | 'bankCode' | 'bankName' | 'bankStatement' | 'branchCode' | 'businessContact' | 'cardToken' | 'checkCode' | 'city' | 'companyRegistration' | 'constitutionalDocument' | 'country' | 'countryCode' | 'currency' | 'currencyCode' | 'dateOfBirth' | 'description' | 'destinationAccountCode' | 'document' | 'documentExpirationDate' | 'documentIssuerCountry' | 'documentIssuerState' | 'documentName' | 'documentNumber' | 'documentType' | 'doingBusinessAs' | 'drivingLicence' | 'drivingLicenceBack' | 'drivingLicense' | 'email' | 'firstName' | 'formType' | 'fullPhoneNumber' | 'gender' | 'hopWebserviceUser' | 'houseNumberOrName' | 'iban' | 'idCard' | 'idCardBack' | 'idCardFront' | 'idNumber' | 'identityDocument' | 'individualDetails' | 'jobTitle' | 'lastName' | 'legalArrangement' | 'legalArrangementCode' | 'legalArrangementEntity' | 'legalArrangementEntityCode' | 'legalArrangementLegalForm' | 'legalArrangementMember' | 'legalArrangementName' | 'legalArrangementReference' | 'legalArrangementRegistrationNumber' | 'legalArrangementTaxNumber' | 'legalArrangementType' | 'legalBusinessName' | 'legalEntity' | 'legalEntityType' | 'merchantAccount' | 'merchantCategoryCode' | 'merchantReference' | 'microDeposit' | 'name' | 'nationality' | 'originalReference' | 'ownerCity' | 'ownerCountryCode' | 'ownerHouseNumberOrName' | 'ownerName' | 'ownerPostalCode' | 'ownerState' | 'ownerStreet' | 'passport' | 'passportNumber' | 'payoutMethodCode' | 'personalData' | 'phoneCountryCode' | 'phoneNumber' | 'postalCode' | 'primaryCurrency' | 'reason' | 'registrationNumber' | 'returnUrl' | 'schedule' | 'shareholder' | 'shareholderCode' | 'shareholderType' | 'socialSecurityNumber' | 'sourceAccountCode' | 'splitAccount' | 'splitCurrency' | 'splitValue' | 'splits' | 'stateOrProvince' | 'status' | 'stockExchange' | 'stockNumber' | 'stockTicker' | 'store' | 'storeDetail' | 'storeName' | 'storeReference' | 'street' | 'taxId' | 'tier' | 'tierNumber' | 'transferCode' | 'unknown' | 'value' | 'virtualAccount' | 'visaNumber' | 'webAddress' | 'year' — The type of the field.
      - `shareholderCode` string — The code of the shareholder that the field belongs to. If empty, the field belongs to an account holder.
  - `pspReference` string — The reference of a request. Can be used to uniquely identify the request.
  - `resultCode` string — The result code.
  - `submittedAsync` boolean — Indicates whether the request is processed asynchronously. Depending on the request's platform settings, the following scenarios may be applied: * **true**: The request is queued and will be executed when the providing service is available in the order in which the requests are received. * **false**: The processing of the request is immediately attempted; it may result in an error if the providing service is unavailable.
  - `updatedFields` FieldType[] — A list of the fields updated through the request.
    - `field` string — The full name of the property.
    - `fieldName` 'accountCode' | 'accountHolderCode' | 'accountHolderDetails' | 'accountNumber' | 'accountStateType' | 'accountStatus' | 'accountType' | 'address' | 'bankAccount' | 'bankAccountCode' | 'bankAccountName' | 'bankAccountUUID' | 'bankBicSwift' | 'bankCity' | 'bankCode' | 'bankName' | 'bankStatement' | 'branchCode' | 'businessContact' | 'cardToken' | 'checkCode' | 'city' | 'companyRegistration' | 'constitutionalDocument' | 'country' | 'countryCode' | 'currency' | 'currencyCode' | 'dateOfBirth' | 'description' | 'destinationAccountCode' | 'document' | 'documentExpirationDate' | 'documentIssuerCountry' | 'documentIssuerState' | 'documentName' | 'documentNumber' | 'documentType' | 'doingBusinessAs' | 'drivingLicence' | 'drivingLicenceBack' | 'drivingLicense' | 'email' | 'firstName' | 'formType' | 'fullPhoneNumber' | 'gender' | 'hopWebserviceUser' | 'houseNumberOrName' | 'iban' | 'idCard' | 'idCardBack' | 'idCardFront' | 'idNumber' | 'identityDocument' | 'individualDetails' | 'jobTitle' | 'lastName' | 'legalArrangement' | 'legalArrangementCode' | 'legalArrangementEntity' | 'legalArrangementEntityCode' | 'legalArrangementLegalForm' | 'legalArrangementMember' | 'legalArrangementName' | 'legalArrangementReference' | 'legalArrangementRegistrationNumber' | 'legalArrangementTaxNumber' | 'legalArrangementType' | 'legalBusinessName' | 'legalEntity' | 'legalEntityType' | 'merchantAccount' | 'merchantCategoryCode' | 'merchantReference' | 'microDeposit' | 'name' | 'nationality' | 'originalReference' | 'ownerCity' | 'ownerCountryCode' | 'ownerHouseNumberOrName' | 'ownerName' | 'ownerPostalCode' | 'ownerState' | 'ownerStreet' | 'passport' | 'passportNumber' | 'payoutMethodCode' | 'personalData' | 'phoneCountryCode' | 'phoneNumber' | 'postalCode' | 'primaryCurrency' | 'reason' | 'registrationNumber' | 'returnUrl' | 'schedule' | 'shareholder' | 'shareholderCode' | 'shareholderType' | 'socialSecurityNumber' | 'sourceAccountCode' | 'splitAccount' | 'splitCurrency' | 'splitValue' | 'splits' | 'stateOrProvince' | 'status' | 'stockExchange' | 'stockNumber' | 'stockTicker' | 'store' | 'storeDetail' | 'storeName' | 'storeReference' | 'street' | 'taxId' | 'tier' | 'tierNumber' | 'transferCode' | 'unknown' | 'value' | 'virtualAccount' | 'visaNumber' | 'webAddress' | 'year' — The type of the field.
    - `shareholderCode` string — The code of the shareholder that the field belongs to. If empty, the field belongs to an account holder.
  - `verification` KYCVerificationResult2, required
    - `accountHolder` KYCCheckResult2
      - `checks` KYCCheckStatusData[] — A list of the checks and their statuses.
        - `requiredFields` string[] — A list of the fields required for execution of the check.
        - `status` 'AWAITING_DATA' | 'DATA_PROVIDED' | 'FAILED' | 'INVALID_DATA' | 'PASSED' | 'PENDING' | 'PENDING_REVIEW' | 'RETRY_LIMIT_REACHED' | 'UNCHECKED', required — The status of the check. >Permitted Values: `DATA_PROVIDED`, `PASSED`, `PENDING`, `AWAITING_DATA`, `RETRY_LIMIT_REACHED`, `INVALID_DATA`, `FAILED`.
        - `summary` KYCCheckSummary
          - `code` integer, required — The code of the check.
          - `description` string — A description of the check.
        - `type` 'BANK_ACCOUNT_VERIFICATION' | 'CARD_VERIFICATION' | 'COMPANY_VERIFICATION' | 'CRIMINAL_BACKGROUND_EXTENSIVE_VERIFICATION' | 'CRIMINAL_BACKGROUND_MEDIUM_VERIFICATION' | 'IDENTITY_VERIFICATION' | 'LEGAL_ARRANGEMENT_VERIFICATION' | 'NONPROFIT_VERIFICATION' | 'PASSPORT_VERIFICATION' | 'PAYOUT_METHOD_VERIFICATION' | 'PCI_SELF_ASSESSMENT_PRESENCE_VERIFICATION' | 'PCI_VERIFICATION' | 'POLITICALLY_EXPOSED_IDENTIFICATION_VERIFICATION' | 'POLITICALLY_EXPOSED_VERIFICATION', required — The type of check. >Permitted Values: `COMPANY_VERIFICATION`, `IDENTITY_VERIFICATION`, `PASSPORT_VERIFICATION`, `BANK_ACCOUNT_VERIFICATION`, `NONPROFIT_VERIFICATION`, `CARD_VERIFICATION`.
    - `bankAccounts` KYCBankAccountCheckResult[] — The result(s) of the checks on the bank account(s).
      - `bankAccountUUID` string — The unique ID of the bank account to which the check applies.
      - `checks` KYCCheckStatusData[] — A list of the checks and their statuses.
        - `requiredFields` string[] — A list of the fields required for execution of the check.
        - `status` 'AWAITING_DATA' | 'DATA_PROVIDED' | 'FAILED' | 'INVALID_DATA' | 'PASSED' | 'PENDING' | 'PENDING_REVIEW' | 'RETRY_LIMIT_REACHED' | 'UNCHECKED', required — The status of the check. >Permitted Values: `DATA_PROVIDED`, `PASSED`, `PENDING`, `AWAITING_DATA`, `RETRY_LIMIT_REACHED`, `INVALID_DATA`, `FAILED`.
        - `summary` KYCCheckSummary
          - `code` integer, required — The code of the check.
          - `description` string — A description of the check.
        - `type` 'BANK_ACCOUNT_VERIFICATION' | 'CARD_VERIFICATION' | 'COMPANY_VERIFICATION' | 'CRIMINAL_BACKGROUND_EXTENSIVE_VERIFICATION' | 'CRIMINAL_BACKGROUND_MEDIUM_VERIFICATION' | 'IDENTITY_VERIFICATION' | 'LEGAL_ARRANGEMENT_VERIFICATION' | 'NONPROFIT_VERIFICATION' | 'PASSPORT_VERIFICATION' | 'PAYOUT_METHOD_VERIFICATION' | 'PCI_SELF_ASSESSMENT_PRESENCE_VERIFICATION' | 'PCI_VERIFICATION' | 'POLITICALLY_EXPOSED_IDENTIFICATION_VERIFICATION' | 'POLITICALLY_EXPOSED_VERIFICATION', required — The type of check. >Permitted Values: `COMPANY_VERIFICATION`, `IDENTITY_VERIFICATION`, `PASSPORT_VERIFICATION`, `BANK_ACCOUNT_VERIFICATION`, `NONPROFIT_VERIFICATION`, `CARD_VERIFICATION`.
    - `shareholders` KYCShareholderCheckResult[] — The result(s) of the checks on the shareholder(s).
      - `checks` KYCCheckStatusData[] — A list of the checks and their statuses.
        - `requiredFields` string[] — A list of the fields required for execution of the check.
        - `status` 'AWAITING_DATA' | 'DATA_PROVIDED' | 'FAILED' | 'INVALID_DATA' | 'PASSED' | 'PENDING' | 'PENDING_REVIEW' | 'RETRY_LIMIT_REACHED' | 'UNCHECKED', required — The status of the check. >Permitted Values: `DATA_PROVIDED`, `PASSED`, `PENDING`, `AWAITING_DATA`, `RETRY_LIMIT_REACHED`, `INVALID_DATA`, `FAILED`.
        - `summary` KYCCheckSummary
          - `code` integer, required — The code of the check.
          - `description` string — A description of the check.
        - `type` 'BANK_ACCOUNT_VERIFICATION' | 'CARD_VERIFICATION' | 'COMPANY_VERIFICATION' | 'CRIMINAL_BACKGROUND_EXTENSIVE_VERIFICATION' | 'CRIMINAL_BACKGROUND_MEDIUM_VERIFICATION' | 'IDENTITY_VERIFICATION' | 'LEGAL_ARRANGEMENT_VERIFICATION' | 'NONPROFIT_VERIFICATION' | 'PASSPORT_VERIFICATION' | 'PAYOUT_METHOD_VERIFICATION' | 'PCI_SELF_ASSESSMENT_PRESENCE_VERIFICATION' | 'PCI_VERIFICATION' | 'POLITICALLY_EXPOSED_IDENTIFICATION_VERIFICATION' | 'POLITICALLY_EXPOSED_VERIFICATION', required — The type of check. >Permitted Values: `COMPANY_VERIFICATION`, `IDENTITY_VERIFICATION`, `PASSPORT_VERIFICATION`, `BANK_ACCOUNT_VERIFICATION`, `NONPROFIT_VERIFICATION`, `CARD_VERIFICATION`.
      - `shareholderCode` string — The code of the shareholder to which the check applies.

## Other responses

- `400` — Bad Request - a problem reading or understanding the request.
- `401` — Unauthorized - authentication required.
- `403` — Forbidden - insufficient permissions to process the request.
- `422` — Unprocessable Entity - a request validation error.
- `500` — Internal Server Error - the server could not process the request.

## Changes

- **2021-03-22** (v3) `91d2ebf6edf1` — 2 warning, 2 info
  - added the new `Controller` enum value to the `accountHolderDetails/businessDetails/shareholders/items/shareholderType` response property for the response status `200`
  - added the new `Owner` enum value to the `accountHolderDetails/businessDetails/shareholders/items/shareholderType` response property for the response status `200`
  - removed the `Control` enum value from the `accountHolderDetails/businessDetails/shareholders/items/shareholderType` response property for the response status `200`
  - removed the `Ownership` enum value from the `accountHolderDetails/businessDetails/shareholders/items/shareholderType` response property for the response status `200`
- **2021-03-05** (v3) `b04b573249e2` — 4 breaking, 61 warning, 9 info
  - the response property `accountHolderDetails/businessDetails/shareholders/items/name/gender` became optional for the status `200`
  - the response property `accountHolderDetails/individualDetails/name/gender` became optional for the status `200`
  - the `accountHolderDetails/businessDetails/shareholders/items/name/gender` response property's minLength was decreased from `1` to `0` for the response status `200`
  - the `accountHolderDetails/individualDetails/name/gender` response property's minLength was decreased from `1` to `0` for the response status `200`
  - …70 more
- …earlier changes not shown

[Full history](https://skmtc.dev/adyen/apis/accountservice/changes/uploadDocument/post.md)

---

[API](https://skmtc.dev/adyen/apis/accountservice.md) · [All operations](https://skmtc.dev/adyen/apis/accountservice/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/adyen/accountservice/revisions/91d2ebf6edf1/schema)
