Upload customer documents
Changed onUploads 1-3 documents for a customer as multipart/form-data: company-level KYB documents for a company customer, or identity and supporting documents for an individual customer.
The metadata field is a JSON array. Each file in the files field must correspond to a metadata entry in the same order.
For an individual customer onboarded with the BVNK-Managed model, submit documents for identity verification. For each document:
- countryCode (the document's issuing country) is required. Requests without it are rejected with 400 (error code bvnk:onboarding-accounts:4022).
- For two-sided documents, such as ID_CARD, DRIVERS, RESIDENCE_PERMIT, upload each side separately. Set subType to FRONT_SIDE or BACK_SIDE as appropriate.
- Use SELFIE for a selfie, and UTILITY_BILL or BANK_STATEMENT for proof of address.
The requiredActions field specifies which documents are needed. For individual customers onboarded with the RELIANCE (Partner-managed) model, upload only the documents listed in requiredActions, such as during Enhanced Due Diligence.
For customers created through pre-customer agreements, upload documents only after the agreements are signed. Otherwise error code bvnk:onboarding-accounts:4023 is returned.
For company customers, use this endpoint to submit initial mandatory KYB files and any conditional or risk-triggered documents, such as Source of Wealth, AML policy, or regulatory licence. If a document is later rejected, re-upload the corrected file to replace the previous submission.
Best practice: upload documents one at a time and add a one-second delay between uploads to reduce rate-limit pressure.
Request
- Base URLhttps://api.sandbox.bvnk.com
- AuthHTTP bearer
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Path parameters
Customer id.
Request body multipart/form-data
Example request
{
"metadata": [
{
"type": "CERTIFICATE_OF_INCORPORATION",
"filename": "certificate.pdf",
"description": "Certificate of Incorporation",
"subType": "FRONT_SIDE",
"countryCode": "DE"
}
]
}Response
Documents accepted for processing
Changes
- breaking
removed the enum value
AML_POLICYof the request property// - breaking
removed the enum value
PROOF_OF_REGULATORY_LICENSEof the request property// - breaking
removed the enum value
SHAREHOLDER_OWNERSHIPof the request property// - info
api operation id
uploadCustomerCompanyDocumentsV2removed and replaced withuploadCustomerDocumentsV2 - info
added the new optional request property
// - info
added the new optional request property
// - info
added the new
BANK_STATEMENTenum value to the request property// - info
added the new
COMPANY_DOCenum value to the request property// - info
added the new
COMPANY_SOURCE_OF_WEALTHenum value to the request property// - info
added the new
DIRECTOR_ADDRESS_VERIFICATIONenum value to the request property// - info
added the new
OTHERenum value to the request property// - info
added the new
POWER_OF_ATTORNEYenum value to the request property// - info
added the new
PROOF_OF_FUNDS_SAVINGSenum value to the request property// - info
added the new
PROOF_OF_PROFESSIONAL_ACTIVITYenum value to the request property// - info
added the new
PROOF_OF_RESIDENTIAL_ADDRESSenum value to the request property// - info
added the new
TRANSPARENCY_REGISTRY_EXTRACTenum value to the request property// - info
added the new
UBO_ADDRESS_VERIFICATIONenum value to the request property// - info
added the new
UBO_SOURCE_OF_WEALTHenum value to the request property// - info
added the non-success response with the status
- breaking
- info
endpoint added
- info