Create a virtual account
Changed onRequests a virtual account for a participant. The account is created asynchronously: this endpoint returns 202 Accepted with status: PENDING and no bank_details, and the account becomes ACTIVE once the banking partner issues it. Poll GET /virtual_accounts/{id} for the transition. Idempotency is keyed solely on the required Idempotency-Key header, which also becomes the account id — replaying the same key returns 200 OK with the existing record, while a different key against the same participant creates a second, distinct account. An optional account_label routes every deposit into the account, and any auto-convert-and-withdraw payout, to that labeled account; it is set once at creation.
Request
- Base URLhttps://api.cert.zerohash.com
- URLhttps://api.cert.zerohash.com/virtual_accounts
- AuthAPI key in header X-SCX-API-KEY and API key in header X-SCX-PASSPHRASE
Headers
HMAC-SHA256 signature of the request, base64-encoded. See the Authentication guide for the exact signing formula.
Current Unix timestamp in seconds. Must be within 60 seconds of server time or the request is rejected.
A UUID v4 chosen by the caller. Becomes the virtual account id. Omitting it returns 400 MISSING_IDEMPOTENCY_KEY; a non-UUIDv4 value returns 400 INVALID_IDEMPOTENCY_KEY.
Request body
Example request
{
"participant_code": "PART01",
"settlement_policy": {
"type": "HOLD"
},
"provider_type": "CRB",
"virtual_account_name": "Acme Holdings Operating Account",
"account_label": "treasury"
}Response
The Idempotency-Key was already used; the existing record is returned unchanged.
Example response
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"participant_code": "PART01",
"platform_code": "PLAT01",
"provider_type": "CRB",
"status": "PENDING",
"currency": "USD",
"virtual_account_name": "Acme Holdings Operating Account",
"account_label": "treasury",
"bank_details": {
"bank_account_number": "0000000001",
"bank_routing_number": "123456789",
"provider_account_id": "0000000001",
"bank_name": "Cross River Bank"
},
"status_detail": {
"code": "VA_CREATION_FAILED",
"message": "zerohash was unable to open this virtual account. Contact zerohash support to request a new account.",
"at": "2026-07-21T09:05:00.000Z"
},
"settlement_policy": {
"type": "HOLD"
},
"created_at": "2026-07-20T14:22:00.000Z",
"updated_at": "2026-07-20T14:22:00.000Z"
}Changes
- info
endpoint added
- info