Two-step upload, step one. Returns a file_id, a presigned url, and the headers required to PUT the file directly to S3. The URL is valid for 5 minutes and accepts a single PUT.
Step two: call POST /api/external/customer/{customer}/document with the same file_id to register the document.
Max file size 25 MB. Allowed types: application/pdf, image/jpeg, image/png. Files outside these limits are rejected at registration time.
The customer must be of type business. Individual customers do not use this endpoint — they use the legacy file flow (POST /api/external/file/get-presigned-url followed by POST /api/external/customer/{id}/files).
Required scope: customer:write.
Authorization
oauth2ClientCredentials customer:writeUse your OAuth client credentials to obtain a short-lived Bearer token from POST /oauth/token.
In: header
Scope: customer:write
Path Parameters
uuidResponse Body
application/json
curl --request POST \ --url 'https://example.com/api/external/customer/497f6eca-6276-4993-bfeb-53cbbbba6f08/document/presigned-url'{ "message": "Upload URL generated successfully", "data": { "file_id": "f6c04a3e-3cdb-4b07-87e5-7a7c0d8b1c10", "url": "https://s3.amazonaws.com/...?X-Amz-Signature=...", "headers": { "x-amz-acl": "private" } }}GETShow a customer KYB document
Retrieves a single KYB document by ID. The customer must be of type `business` and the document must belong to the supplied customer. Required scope: `customer:read`.
POSTRegister a KYB document
Use after PUTting a file to the presigned URL. The server verifies that the upload exists, checks size and MIME, and stores the document with status `PENDING`. Max file size 25 MB. Allowed MIME: `application/pdf`, `image/jpeg`, `image/png`. Files that fail these checks return 422. **Formation documents are required for verification.** When you call `POST /api/external/customer/{customer}/submit`, at least one document of a formation type must be present. Formation types are: `CERTIFICATE_OF_INCORPORATION`, `ARTICLES_OF_INCORPORATION`, `BENEFICIAL_OWNERSHIP_CERTIFICATE`, `INCORPORATION_DOCUMENTS`, `CAC_STATUS_REPORT`. Other types may be required by your compliance reviewer depending on the business profile. All uploaded documents must be **clear, legible, and authentic**. Blurry, cropped, obscured, or otherwise unclear images will be rejected. Fraudulent or falsified documents will not be tolerated — repeated attempts to submit false or invalid documents will result in the customer being **permanently blacklisted** from the platform. There are no exceptions or compromises. The customer must be of type `business`. Required scope: `customer:write`.