---
title: "Upload Owner Documents for an Existing Account"
method: POST
path: "/v1/accounts/{account_id}/documents/upload"
tags: ["Documents"]
---

# Upload Owner Documents for an Existing Account

`POST /v1/accounts/{account_id}/documents/upload`

Upload documents for the primary account owner of an account.

Documents are binary objects whose contents are encoded in base64. Each encoded content size is limited to 10MB if you use Alpaca for KYCaaS. If you perform your own KYC there are no document size limitations.

As a convenience, documents of type w8ben may be uploaded as a JSON object using the content_data request property. The Alpaca system will then generate a formatted W-8 BEN document for subsequent downloads.

Note that these owner documents are distinct from the account documents generated by Alpaca, such as tax statements and trade confirmations.

## Request body

- OwnerDocumentUploadRequest[]
  - `content` string, base64, required — The base64 string encoding of the document contents. This property is required unless content_data is provided.
  - `content_data` W8benDocument — Use this property (instead of the content property) to upload W-8 BEN data in JSON format.
    - `additional_conditions` string — Any additional conditions to specify
    - `country_citizen` string, required — The country that the applicant is a citizen of
    - `date` string, date, required — date signed
    - `date_of_birth` string, date, required — date of birth of applicant
    - `foreign_tax_id` string — Applicant's tax id in their home country
    - `ftin_not_required` boolean — Required if foreign_tax_id and tax_id_ssn are empty.
    - `full_name` string, required — Full name of applicant
    - `income_type` string — Income type of applicant
    - `ip_address` string, required — IP address of applicant when signed
    - `mailing_address_city_state` string — Mailing city/state of applicant
    - `mailing_address_country` string — Mailing country for applicant
    - `mailing_address_street` string — Mailing street address for applicant
    - `paragraph_number` string
    - `percent_rate_withholding` integer
    - `permanent_address_city_state` string, required — Permanent city/state of applicant
    - `permanent_address_country` string, required — Permanent country of residence of applicant
    - `permanent_address_street` string, required — Permanent street address of applicant
    - `reference_number` string
    - `residency` string — Country of residency of applicant
    - `revision` string, required — Revision of the W8BEN form
    - `signer_full_name` string, required — Full name of signing user
    - `tax_id_ssn` string — TaxID/SSN of applicant
    - `timestamp` string, time, required — Timestamp when form data was gathered
  - `document_sub_type` string — The specific type of document, e.g. passport. This is a free-form property.
  - `document_type` 'account_approval_letter' | 'address_verification' | 'cip_result' | 'company_formation' | 'date_of_birth_verification' | 'entity_operating_document' | 'entity_registration' | 'hio_declaration_form' | 'identity_verification' | 'limited_trading_authorization' | 'pep_declaration_form' | 'tax_id_verification' | 'w8ben' | 'w9', required — The type of the owner document
  - `mime_type` string — This field is required if content is specified. ENUM: application/pdf, image/png, or image/jpeg. If document_type is w8ben then application/json is also accepted

## Response `204`

Success (No Content)

## Other responses

- `400` — Bad Request. The body in the request is not valid.
- `404` — Not Found. No account was found for this account_id

---

[API](https://skmtc.net/alpacahq/apis/gift-city-extensions-api.md) · [All operations](https://skmtc.net/alpacahq/apis/gift-city-extensions-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/alpacahq/gift-city-extensions-api/revisions/62e3378bb273/schema)
