Overview
USD accounts run on EU Rails (Fiat Republic) alongside EUR and GBP. To meet US banking requirements, an individual end user who needs to send or receive USD must complete an extra identity check: you supply a few additional profile fields and upload a government-issued ID, which the banking partner reviews. Once approved, the end user can hold USD fiat accounts and virtual accounts, and you can make USD payments on their behalf.This applies to individual (KYC) end users only. Business (KYB) end users
are verified through their standard onboarding — see
End Users.
How USD verification works
Create the end user with the USD fields
On the individual create request, include the USD-required fields below
(
phone, nationality, identificationDocument). See
End Users → Individual create.Upload an identity document
Upload a clear scan or photo of the end user’s government-issued ID via the
documents endpoint. See Uploading the document.
Wait for the banking partner's review
The partner reviews the document — typically 1–2 business days. Subscribe
to Webhooks for the status change rather than polling.
Required end-user fields for USD
These fields are optional for EUR/GBP but required when the end user needs USD services:Max 20 characters.
2-letter ISO code, or an array of codes.
{ type, number }. See the accepted type values below.Already created the end user without these? Add them later with the
update endpoint before
uploading the document.
Accepted identity documents
| Document | identificationDocument.type | Notes |
|---|---|---|
| Passport (recommended) | PASSPORT | Clear photo page, not expired. |
| Driver’s licence | DRIVERS_LICENCE | Must show full name and date of birth. |
| National ID card | NATIONAL_ID | Photo and personal details. |
| Work permit | WORK_PERMIT | Where applicable. |
Uploading the document
Upload the ID against the end user as base64-encoded file data.The Balansas end user
id (UUID) — the same id returned when you created
the end user.One of
IDENTITY_VERIFICATION, identity, proof_of_address, other. Use
IDENTITY_VERIFICATION for the USD identity check.1–255 characters.
Base64-encoded file contents.
One of
application/pdf, image/jpeg, image/png.Base64 inflates a file by roughly a third — keep the original file small
(around 10 MB or less) so the request stays within limits.
Upload a verification document
Full request and response in the API Reference.
Document quality (what the reviewer checks)
The banking partner reviews the uploaded image. To get approved on the first try:Do
- High resolution, all text readable
- Full document visible — all four corners
- Valid, non-expired document
- Colour image preferred
- Name matches the end user’s profile
Avoid
- Blurry or out-of-focus images
- Cropped or partial documents
- Glare or reflections hiding details
- Edited or digitally altered images
- Screenshots or photos of a screen
Document review outcomes
The banking partner reviews the uploaded document and reaches one of the outcomes below. These describe the document’s review state — they are not API status values. The end user’s own lifecycle is reported byend_user.status
(pending_verification → active); subscribe to
Webhooks for that transition rather than polling.
| Outcome | Meaning | Action |
|---|---|---|
| Pending | Document uploaded, awaiting the partner’s review (typically 1–2 business days). | Wait for the webhook. |
| Approved | Verified — USD services are enabled; the end user moves toward active. | Start using USD. |
| Rejected | Document not accepted. | Re-upload a corrected document. |
Errors
A bad upload fails fast with a400 (invalid base64, unsupported mimeType, or
a validation error on the fields above); an unknown or unowned endUserId
returns 404. See Errors for the envelope and the
Documents API reference
for the full list.
