Virtual Accounts
Virtual accounts let you allocate bank-transfer receiving accounts for your customers through the Zentra BaaS layer.What They Do
A virtual account gives a customer a dedicated account number that maps back to your tenant. When inbound payments are processed, Zentra records the credit and your integration can react through downstream workflows and webhooks.Typical Use Cases
Customer Deposits
Let customers fund their balances through bank transfers.
Collections
Reconcile transfer-based collections against a dedicated account record.
Merchant Settlement Flows
Allocate receiving accounts per merchant, business, or counterparty.
Operational Routing
Route account creation through provider-aware internal policies instead of hard-coding a single bank.
How It Works
- Create Account: Call
POST /api/v1/virtual-accountswithcustomer_idandaccount_name. - Provider Selection: Zentra routes the request internally and allocates the account with the selected provider.
- Share Details: Present the returned
account_number,bank_name, andaccount_nameto your customer. - Track Inbound Value: Use
total_received_minorandtransaction_countfor reporting. - Manage Lifecycle: Retrieve, list, freeze, unfreeze, reserve-assign, or close through the internal service contract; the public BaaS surface currently exposes create, get, list, and close.
Input Model
The current BaaS create endpoint supports:- required:
customer_idaccount_name
- optional:
provideraccount_typemetadatabvncountrycurrencyrequest_idpreferred_bank
bank_code is not a create input on the BaaS endpoint. It is returned after provider allocation.
Account States
| Status | Meaning |
|---|---|
active | Account can receive payments |
frozen | Account is temporarily blocked |
closed | Account has been closed |
expired | Provider allocation has expired |
Available Operations
Create Account
Generate a new virtual account
Get Account
Retrieve account details
List Accounts
List all virtual accounts
Close Account
Close an account
Quick Example
Integration Notes
Provider Choice Is Internal
Provider Choice Is Internal
If you omit
provider, the gateway defaults it to auto and the internal routing layer chooses the provider.Bank Preference Is Only A Hint
Bank Preference Is Only A Hint
Use
preferred_bank only when your provider path supports it. The final bank_code and bank_name come from the provider response.Money Fields Use Minor Units
Money Fields Use Minor Units
total_received_minor is the running inbound amount. Do not expect decimal money fields in the API response.Metadata Round-Trips
Metadata Round-Trips
Structured metadata is preserved on create, get, list, and close responses.
Next Steps
Create Virtual Account
Learn how to create accounts
Webhooks
Handle account events
Customers
Manage customer records