Create (or return) my standing virtual account
Issues one durable collection account for the requested currency, owned by your master account — or by the sub-account named in Zuba-Account-Id, whose deposits then settle into that sub-account’s balance. Idempotent per owner and currency: if a live account already exists it is returned with 201 → 200. Some accounts are issued asynchronously and return status: pending; subscribe to the virtual_account.active / virtual_account.failed webhook events for the outcome. On virtual_account.active, fetch the issued details with GET /v1/virtual-accounts (polling that endpoint works too, but the webhook is the intended completion signal); a refused account is absent from that list. pending is a normal state, not an error: activation is validated out of band, can take far longer than a request cycle, and no account number exists until it completes. Requires the owner’s application to be approved.
Authorizations
Enter Auth0 JWT token
Headers
Optional. Names an owned sub-account (UUID) to act on. Omit to act at the master (tenant) level. Naming an account this key does not own returns 403 not_account_owner.
Body
ISO-4217 currency of the standing account. One live account per owner and currency; repeating a request returns the existing account.
"EUR"
ISO 3166-1 alpha-2 country the money is collected in. Required for currencies collected in more than one country (e.g. XOF); ignored otherwise.
"SN"
Response
A live account already existed for this owner + currency
Account name (format: "Zuba {Merchant Name}")
"Zuba John Doe"
Virtual account number. For a GBP SCAN account this is the UK domestic (Faster Payments) account number that pairs with sortCode, not the default identifier; for EUR it is the IBAN.
"8012345678"
Account type
"fixed_va"
Bank name where the virtual account is held
"Wema Bank"
Client ID this virtual account belongs to
"456e7890-e89b-12d3-a456-426614174000"
Creation timestamp
"2024-01-15T10:30:00.000Z"
Currency of the virtual account
"NGN"
Routing eligibility. False for failed or incomplete provider workflows.
Unique identifier for the virtual account
"123e4567-e89b-12d3-a456-426614174000"
Current status of the virtual account
pending, active, inactive "active"
Last update timestamp
Owning sub-account; null for the client master account.
Institution or branch address supplied by the provider.
ISO 3166-1 alpha-2 country of the receiving account.
The name submitted to the provider as the account holder when the account was opened. On accounts opened in the owner's own name this is the owner's KYB-approved legal name; on accounts opened before that was enforced it may be an internal label or the client id, and is not a verified legal name. Null on rails that submit no holder name, where accountName is the only name reported.
IBAN for the account — the GB IBAN for a GBP SCAN account (whose accountNumber is the SCAN number), or the primary IBAN for EUR. Null when the account exposes no IBAN.
"GB50IKMA24711059277481"
Raw provider account status when supplied.
Asynchronous provisioning workflow status when supplied.
Routing number for USD wire accounts (US ABA). Null for accounts without one (e.g. EUR/GBP).
"138344690"
Sort code for GBP SCAN accounts (UK Faster Payments). Null for accounts without one (e.g. EUR/IBAN accounts).
"247110"
Per-account treasury-sweep override (admin view only). true/false override the client policy default; null inherits it. Null for merchant callers.