---
title: "Initiate account holder document upload"
method: POST
path: "/v1/account_holders/{account_holder_token}/documents"
tags: ["Account Holder"]
---

# Initiate account holder document upload

`POST /v1/account_holders/{account_holder_token}/documents`

Use this endpoint to identify which type of supported government-issued documentation you will upload for further verification.
It will return two URLs to upload your document images to - one for the front image and one for the back image.

This endpoint is only valid for evaluations in a `PENDING_DOCUMENT` state.

Supported file types include `jpg`, `png`, and `pdf`. Each file must be less than 15 MiB. Once both required uploads have been successfully completed, your document will be run through KYC verification.

If you have registered a webhook, you will receive evaluation updates for any document submission evaluations, as well as for any failed document uploads.

Two document submission attempts are permitted via this endpoint before a `REJECTED` status is returned and the account creation process is ended. Currently only one type of
account holder document is supported per KYC verification.

## Path parameters

- `account_holder_token` string, uuid, required

## Request body

- object
  - `document_type` 'EIN_LETTER' | 'TAX_RETURN' | 'OPERATING_AGREEMENT' | 'CERTIFICATE_OF_FORMATION' | 'DRIVERS_LICENSE' | 'PASSPORT' | 'PASSPORT_CARD' | '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', required — The type of document to upload
  - `entity_token` string, uuid, required — Globally unique identifier for the entity.

## Response `201`

OK

- Document — Describes the document and the required document image uploads required to re-run KYC
  - `token` string, uuid, required — Globally unique identifier for the document.
  - `account_holder_token` string, uuid, required — Globally unique identifier for the account holder.
  - `document_type` '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', required — Type of documentation to be submitted for verification of an account holder
  - `entity_token` string, uuid, required — Globally unique identifier for an entity.
  - `required_document_uploads` object[], required — Represents a single image of the document to upload.
    - `image_type` 'FRONT' | 'BACK', required — Type of image to upload.
    - `status` 'ACCEPTED' | 'REJECTED' | 'PENDING_UPLOAD' | 'UPLOADED' | 'PARTIAL_APPROVAL', required — Status of an account holder's document upload.
    - `status_reasons` DocumentUploadStatusReasons[], required — Reasons for document image upload status.
    - `upload_url` string, required — URL to upload document image to. Note that the upload URLs expire after 7 days. If an upload URL expires, you can refresh the URLs by retrieving the document upload from `GET /account_holders/{account_holder_token}/documents`.
    - `token` string, uuid, required — Globally unique identifier for the document upload.
    - `accepted_entity_status_reasons` string[], required — A list of status reasons associated with a KYB account holder that have been satisfied by the document upload
    - `rejected_entity_status_reasons` string[], required — A list of status reasons associated with a KYB account holder that have not been satisfied by the document upload
    - `created` string, date-time, required — When the document upload was created
    - `updated` string, date-time, required — When the document upload was last updated

## Other responses

- `400` — A parameter in the query given in the request does not match the valid queries for the endpoint.
- `401` — | | | |---|---| | 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 | Write access requires an Issuing API key. Reach out at [lithic.com/contact](https://lithic.com/contact) | | Insufficient privileges to create virtual cards. | Creating virtual cards requires an additional privilege | Reach out at [lithic.com/contact](https://lithic.com/contact) |
- `409` — The request could not be completed due to a conflict with the current state of the target resource.
- `429` — Client has exceeded the number of allowed requests in a given time period. | | | |---|---| | Rate limited, too many requests per second | User has exceeded their per second rate limit | | Rate limited, reached daily limit | User has exceeded their daily rate limit | | Rate limited, too many keys tried | One IP has queried too many different API keys |

---

[API](https://skmtc.net/lithic-com/apis/lithic-developer-api.md) · [All operations](https://skmtc.net/lithic-com/apis/lithic-developer-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lithic-com/lithic-developer-api/revisions/53ab5d4e2adb/schema)
