---
title: "Upload company documents"
method: POST
path: "/onboarding/v1/applications/{onboardingId}/documents"
tags: ["Onboarding"]
---

# Upload company documents

`POST /onboarding/v1/applications/{onboardingId}/documents`

## Request

- Base URL: `https://api.sandbox.bvnk.com`
- URL: `https://api.sandbox.bvnk.com/onboarding/v1/applications/{onboardingId}/documents`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/bvnk/apis/bvnk-api-endpoints/docs/onboarding/v1/applications/:onboardingId/documents/post.ts> (a function with typed inputs; its response is checked against the schema)

Uploads company-level KYB documents for an onboarding application as `multipart/form-data`.

The `metadata` field is a JSON array and `files` contains one file per metadata entry in matching order.

Use this endpoint for initial mandatory KYB files and for conditional/risk-triggered requests (for example Source of Wealth, AML policy, or regulatory licence). If a document is rejected later, re-upload the corrected file to this endpoint to replace the rejected submission.

Best practice: upload documents sequentially and add a 1-second delay to reduce rate-limit pressure.

## Path parameters

- `onboardingId` string, uuid, required

## Request body `multipart/form-data`

- OnboardingCompanyDocumentsUploadRequest
  - `metadata` string, required: JSON array (string) of company document metadata entries with `type`, `filename`, and optional `description`. Supported company document types: | Type | Description | When required | | --- | --- | --- | | `CERTIFICATE_OF_INCORPORATION` | Certificate of incorporation or business formation document. | Mandatory (US + EU BVNK-Managed, US Partner-managed) | | `MEMORANDUM` | Memorandum of Association. | Mandatory (BVNK-Managed) | | `ARTICLE_OF_ASSOCIATION` | Articles of Association. | Mandatory (BVNK-Managed) | | `PROOF_OF_DIRECTORSHIP` | Registry extract or certified register of directors. | Mandatory (BVNK-Managed) | | `CORPORATE_STRUCTURE` | Ownership chart showing all shareholders through to UBOs. | Mandatory (BVNK-Managed) | | `PROOF_OF_OPERATIONAL_ADDRESS` | Utility bill, lease, or official correspondence. Dated within 3 months. | Required if operational address differs from registered | | `SOURCE_OF_FUNDS` | Bank statements (3 months activity) or equivalent. | May be requested during compliance review (RFI) | | `SOURCE_OF_WEALTH` | Audited accounts, financial statements, loan agreements. | Conditional: triggered by high-risk rating or EDD | | `PROOF_OF_REGULATORY_LICENSE` | Current regulatory licence for the declared jurisdiction. | Conditional: required for regulated entities | | `AML_POLICY` | AML policy signed by Director/MLRO. | Conditional: required for regulated entities | | `SHAREHOLDER_OWNERSHIP` | Ownership documentation for complex structures. | Conditional: trusts, nominees, >3 layers, offshore |
  - `files` string[], required: One file per metadata entry, in matching order.

## Response `200`

Documents accepted for processing

- OnboardingCompanyDocumentsUploadResponse
  - `onboardingApplicationId` string, uuid, required
  - `documentCount` integer, required
  - `message` string, required

## Other responses

- `400`: Bad Request
- `401`: Unauthorized

## Changes

- **2026-06-16** `97d6c0d2fe2e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/bvnk/apis/bvnk-api-endpoints/changes/onboarding/v1/applications/:onboardingId/documents/post.md)

---

[API](https://skmtc.dev/bvnk/apis/bvnk-api-endpoints.md) - [All operations](https://skmtc.dev/bvnk/apis/bvnk-api-endpoints/llms.txt) - [OpenAPI document](https://skmtc.dev/bvnk/apis/bvnk-api-endpoints/revisions/c386d436bf2c?raw)
