Skip to main content

Upload VA documents

POST
Authentication

Virtual Account APIs use the same access token as the rest of the platform. Obtain it from the Authentication API and send it on every VA call:

Authorization: Bearer <access_token>

Base URLs for each environment are listed under API environments.

note

What this does: Uploads a single document (one call per document) against a customer type document code from VA document requirements. Returns a docReferenceNumber that you then pass into the Create/Edit Customer payload to link the document to the registration.

warning

Upload constraints: Accepted file types are JPEG, PNG, and PDF. Maximum file size is 5120 KB. You cannot upload more than one file under the same docTypeCode for a given docReferenceNumber — re-uploading against a docTypeCode that's already been used will be rejected, not replaced.

Endpoint​

  • Content-Type — multipart/form-data

Request Parameters (Form Data)​

ParameterWhat It IsRequired?Notes
fileThe document binaryREQUIREDThe actual file — not base64.
walletOwnerCodeSend client / wallet owner codeREQUIREDe.g. 1000009093
docReferenceNumberYour unique reference for this documentREQUIREDe.g. CUSPMAGS1U — reuse the same value for every document belonging to one customer registration.
docTypeThe Service TypeREQUIREDe.g. VA
docTypeCodeWhich checklist document this isREQUIREDMust match a code from the VA document requirements document type list, e.g. RHD019.
createdByUser/agent code performing the uploadOPTIONALe.g. 1000009093
transIdInternal tracking idOPTIONALLeft blank in practice — system-generated, no need to send a value.

Sample Response​

{
"resultCode": "0",
"resultDescription": "Transaction successful",
"docUpload": {
"walletOwnerCode": "1000009093",
"docReferenceNumber": "CUSPMAGS1U", // echoed back — same value you sent; use this in Create/Edit Customer
"fileName": "image (2)_CUSPMAGS1U_20260630134656.png",
"docType": "VA",
"docTypeCode": "RHD019",
"docTypeName": "Certified ID copy (Government Issued ID cards)",
"status": "Active"
}
}

Missing-Document Error Messages — Individual​

CodeDocumentError Message
RHD019Certified ID copyPlease upload mandatory virtual account documents: Certified ID copy (Government Issued ID)
RHD020Proof of AddressPlease upload mandatory virtual account documents: Proof of Address (Utility Bill or Bank statement issued within 90 days)
RHD021Due Diligence Questionnaire — IndividualPlease upload mandatory virtual account documents: Due Diligence Questionnaire Individual

Missing-Document Error Messages — Business​

CodeDocumentError Message
RHD022Certificate of IncorporationPlease upload mandatory virtual account documents: Certificate of Incorporation
RHD026Directors/Shareholders/UBO Registry DocumentPlease upload mandatory virtual account documents: Company Registry document showing List of Directors, Shareholder(s), Ultimate Beneficial Owner(s)
RHD031Due Diligence Questionnaire — CorporatePlease upload mandatory virtual account documents: Due Diligence Questionnaire Corporate
RHD027ID copies of UBOs ≥10% sharesPlease upload mandatory virtual account documents: ID copies of UBOs who owns more than 10% of shares with direct and/or indirect ownership
RHD023Memorandum & Articles of AssociationPlease upload mandatory virtual account documents: Memorandum and Articles of Association
RHD029Proof of all Directors' IdentityPlease upload mandatory virtual account documents: Proof of all Directors' Identity (Government Issued ID cards)
RHD028Proof of Beneficial Owners' AddressPlease upload mandatory virtual account documents: Proof of Beneficial Owners' Address (Utility bill or bank statement issued within 90 days)
RHD025Proof of Trading AddressPlease upload mandatory virtual account documents: Proof of Trading Address (Utility bill or bank statement issued within 90 days)
RHD030Authorized Signatory List + ID copiesTBD — not present in the example messages; needs confirmation
info

ℹ If multiple documents are missing, they're combined into one messagecomma-separated: "Please upload mandatory virtual account documents: {doc 1}, {doc 2}, ..."

warning

docReferenceNumber is client-generated. You generate this value yourself and reuse the same one across every document belonging to a single customer registration — it's echoed back unchanged in the upload response. The Create/Edit Customer APIs only accept a single docReferenceNumber field, which links back to the full set of documents uploaded under that reference.