BOB, QR payments) and client named accounts in currencies enabled by their endorsements. Every endpoint on this page requires a Bearer JWT.
Endpoints
clientId, subjectId, and id must be valid UUIDs. To create a client, use POST /v2/business-clients.
Partner account in Bolivia
201 response is a virtual account with owner.type: "business" and paymentMethods: ["qr"]:
409. Invalid input returns 400. Client accounts are created after endorsement approval, not through this POST.
List and retrieve accounts
With no filters, the list returns named client accounts only; it excludes the partner’s
BOB account. Use ?currency=BOB to retrieve that account. Combining currency=BOB with clientId returns an empty list because the BOB account belongs to the partner. The response is always shaped as { "virtualAccounts": [...] }.
GET /v2/virtual-accounts/{id} returns the same object, but only supports partner accounts. It returns 404 if the UUID does not identify an account of the authenticated partner. Use the list with clientId for client accounts.
Account fields
Within
coordinates, holder has name, type, and address. The optional bank object has name and address. Depending on the currency and rail, iban, accountNumber, swiftCode, taxId, and routingNumbers (ach, wire, rtp) may be present. Check status and the required fields before displaying payment instructions.
Named client accounts
- Create the client with
POST /v2/business-clients. You may choosesettlementNetwork(EthereumorPolygon) andsettlementAsset(USDCorUSDT); the defaults arePolygonandUSDC. - Complete onboarding and request endorsements for the currencies the client needs.
- Issue a link for each subject with pending requirements. Once the endorsements are approved, the named account is created automatically.
- Query
GET /v2/virtual-accounts?clientId={clientId}for payment instructions. In Sandbox, register a withdrawal address to test settlement.
Request and retrieve endorsements
EUR, USD, AED, AUD, and GBP. To narrow the request, send a nonempty array:
200 with requested endorsements and currencies that could not be enabled:
GET /v2/business-clients/{clientId}/endorsements returns an array of endorsements with the same structure as endorsements. Endorsement statuses are pending, dataRequired, inProgress, inReview, approved, and rejected; subject statuses are pending, inReview, approved, and rejected. requestedAt, resolvedAt, rejectionReason, name, and linkIssuedAt may be null. Each subjects[].pending contains fields and documents arrays.
Each item in failed has currencies and a reason: termsNotAccepted, verificationNotApproved, notAvailableForAccountType, alreadyRequested, or unavailable. Review the reason because that currency will not proceed automatically.
Issue a subject link
Use the subjectid returned by the endorsements endpoint:
404 if the client does not exist or does not belong to the partner; the link operation also returns 404 when the subject is missing.
Withdrawal address in Sandbox
0x followed by 40 hexadecimal characters). PUT replaces the active address and returns 200:
GET /v2/business-clients/{clientId}/withdrawal-address returns this object or null if there is no address yet. Both endpoints are available in Sandbox only. The returned network matches the network selected when creating the client. Check the address before registering it: format validation does not prove the client controls it.
Both routes return 404 if the client does not exist or does not belong to the partner.
Collection notifications
Collections recorded through virtual accounts may create a transaction withtransactionType: "deposit_virtual_account". Status changes are sent through the transaction webhook. In details, amount is a string and currency is the fiat currency. details.payer appears only when a payer detail is recorded; see Payer details.