1.
POST /v1/files/upload-url describing the file you are about to upload. You get back a fileId and a one-shot uploadUrl.
2.
Send the raw file body to the returned uploadUrl with HTTP PUT. The signature is already in the query string — do not send your Open API credentials or any Authorization header. 3.
Finish the PUT before expiresAt (10 minutes from issue). An expired URL cannot be renewed — request a new one and use the new fileId.
4.
Pass fileId to the business API that consumes the file. Example scenario: a VND virtual account onboarding document is uploaded with documentType=VA_ONBOARDING and currency=VND, then referenced in Create Virtual Account (see Guides / Virtual Account / VND Virtual Account Onboarding — Integration Guide).
Request one URL per file. uploadUrl and fileId are one-to-one.
A 200 here only means the URL was issued. The file does not exist until your PUT returns 200; a fileId whose object was never uploaded is rejected by the consuming business API, not by this endpoint.
Accepted file types are pdf, jpg, jpeg, png, heic; a single file must be 10 KB – 10 MB. The consuming business API may apply further limits of its own.
fileType and fileSize are declared values. The real type and size are read from the stored object when the file is consumed, and a mismatch is rejected there.
Each fileId is bound to the merchant account that requested it and cannot be referenced by another merchant.