# Account Holder Document Upload

## Parameters

### account_holder_token  
**Type:** uuid  
**Required:** Yes  
Globally unique identifier for the account holder.

### document_token  
**Type:** uuid  
**Required:** Yes  
Globally unique identifier for the document.

## Response

### 200 OK  
**Object:** Describes the document and the required document image uploads required to re-run KYC

#### Fields  
- **token**  
  - **Type:** uuid  
  - **Required:** Yes  
  Globally unique identifier for the document.
  
- **account_holder_token**  
  - **Type:** uuid  
  - **Required:** Yes  
  Globally unique identifier for the account holder.

- **document_type**  
  - **Type:** string  
  - **Enum:**  
    - `DRIVERS_LICENSE`  
    - `PASSPORT`  
    - `PASSPORT_CARD`  
    - `EIN_LETTER`  
    - `TAX_RETURN`  
    - `OPERATING_AGREEMENT`  
    - `CERTIFICATE_OF_FORMATION`  
    - `CERTIFICATE_OF_GOOD_STANDING`  
    - `ARTICLES_OF_INCORPORATION`  
    - `ARTICLES_OF_ORGANIZATION`  
    - `BYLAWS`  
    - `GOVERNMENT_BUSINESS_LICENSE`  
    - `PARTNERSHIP_AGREEMENT`  
    - `SS4_FORM`  
    - `BANK_STATEMENT`  
    - `UTILITY_BILL_STATEMENT`  
    - `SSN_CARD`  
    - `ITIN_LETTER`  
    - `FINCEN_BOI_REPORT`

- **entity_token**  
  - **Type:** uuid  
  - **Required:** Yes  
  Globally unique identifier for an entity.

- **required_document_uploads**  
  - **Type:** array of objects  
  - **Required:** Yes  
  Represents a single image of the document to upload.

#### required_document_uploads Object  
- **image_type**  
  - **Type:** string  
  - **Enum:**  
    - `FRONT`  
    - `BACK` 
  
- **status**  
  - **Type:** string  
  - **Enum:**  
    - `ACCEPTED`  
    - `REJECTED`  
    - `PENDING_UPLOAD`  
    - `UPLOADED`  
    - `PARTIAL_APPROVAL`

- **status_reasons**  
  - **Type:** array of objects  
  - **Required:** Yes  
  Reasons for document image upload status that is not ACCEPTED.

#### Status Reasons  
- `DOCUMENT_MISSING_REQUIRED_DATA`  
- `DOCUMENT_UPLOAD_TOO_BLURRY`  
- `FILE_SIZE_TOO_LARGE`  
- `INVALID_DOCUMENT_TYPE`  
- `INVALID_DOCUMENT_UPLOAD`  
- `INVALID_ENTITY`  
- `DOCUMENT_EXPIRED`  
- `DOCUMENT_ISSUED_GREATER_THAN_30_DAYS`  
- `DOCUMENT_TYPE_NOT_SUPPORTED`  
- `UNKNOWN_FAILURE_REASON`  
- `UNKNOWN_ERROR`

- **upload_url**  
  - **Type:** string  
  - **Required:** Yes  
  URL to upload document image to.

- **token**  
  - **Type:** uuid  
  - **Required:** Yes  
  Globally unique identifier for the document upload.

- **accepted_entity_status_reasons**  
  - **Type:** array of strings  
  - **Required:** Yes  
  A list of status reasons associated with a KYB account holder that have been satisfied by the document upload.

- **rejected_entity_status_reasons**  
  - **Type:** array of strings  
  - **Required:** Yes  
  A list of status reasons associated with a KYB account holder that have not been satisfied by the document upload.

- **created**  
  - **Type:** date-time  
  - **Required:** Yes  
  When the document upload was created.

- **updated**  
  - **Type:** date-time  
  - **Required:** Yes  
  When the document upload was last updated.

## Error Codes

### 400 Bad Request  
A parameter in the query given in the request does not match the valid queries for the endpoint.

### 401 Unauthorized  
| Error Type  | Description  |
| --- | --- |
| User has not been authenticated  | Invalid or missing API key  |
| API key is not active  | The API key used is no longer active  |
| Could not find API key  | The API key provided is not associated with any user  |
| Please provide API key in Authorization header  | The Authorization header is not in the request  |
| Please provide API key in the form Authorization: [api-key]  | The Authorization header is not formatted properly  |
| Insufficient privileges.  | Issuing API key required  |
| Insufficient privileges to create virtual cards.  | Creating virtual cards requires an additional privilege  |

### 404 Not Found  
The specified resource was not found.

### 429 Too Many Requests  
Client has exceeded the number of allowed requests in a given time period.

## Sample Request

```shell
curl --request GET \
  --url https://sandbox.lithic.com/v1/account_holders/account_holder_token/documents/document_token \
  --header 'accept: application/json'
```

## Sample Response

```json
{
  "token": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "account_holder_token": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "document_type": "DRIVERS_LICENSE",
  "entity_token": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "required_document_uploads": [
    {
      "image_type": "FRONT",
      "status": "ACCEPTED",
      "status_reasons": [
        "DOCUMENT_MISSING_REQUIRED_DATA"
      ],
      "upload_url": "string",
      "token": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "accepted_entity_status_reasons": [
        "string"
      ],
      "rejected_entity_status_reasons": [
        "string"
      ],
      "created": "2026-07-18T03:11:38.871Z",
      "updated": "2026-07-18T03:11:38.871Z"
    }
  ]
}
```
