Create Virtual Account
Create a new virtual account with optional initial deposit
Create a new virtual account with optional initial deposit. This API is restricted to pre-approved businesses.
Endpoint: https://api.chapa.co/v1/virtual-account
Method: POST
Authorization: Pass your secret key as a bearer token in the request header to authorize this call.
Request Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
account_name | Yes | string | The name associated with the virtual account |
initial_deposit | No | number | Initial amount to deposit. Account created with zero balance if not provided |
account_alias | No | string | Custom alias for easy reference |
Example Request Body
{
"account_name": "Abebe Bikila",
"initial_deposit": 1000,
"account_alias": "JD_VA"
}cURL
PHP
Python
Successful Response
{
"status": "success",
"message": "Virtual Account Created Successfully",
"data": {
"account_name": "SEMER NUR",
"account_number": 100314252,
"account_alias": "4242424",
"balance": 20,
"status": "active",
"currency": "ETB",
"created_at": "2025-02-21T08:06:54.000000Z",
"updated_at": "2025-02-21T08:06:54.000000Z"
}
}Response Parameters
| Parameter | Type | Description |
|---|---|---|
status | string | Status of the request (success/error) |
message | string | Response message |
data.account_name | string | Name associated with the virtual account |
data.account_number | number | Unique identifier of the virtual account |
data.account_alias | string | Custom reference name for the account |
data.balance | number | Current balance in the account |
data.status | string | Current status of the account (active) |
data.currency | string | Currency of the account (ETB) |
data.created_at | string | Timestamp of account creation |
data.updated_at | string | Timestamp of the most recent update |
Failed Response
{
"status": "error",
"message": "Failed to create virtual account",
"errors": null
}If specifying an initial_deposit, your business balance must have sufficient funds to cover the amount.
Refer to our Error Codes page for all responses for this request.
Use Cases
- Customer Accounts: Create individual virtual accounts for customers
- Sub-accounts: Manage sub-accounts for different business units
- Escrow Services: Hold funds in separate virtual accounts
- Multi-party Payments: Facilitate payments between multiple parties
Next Steps
- Get Virtual Account - Retrieve virtual account details
- Error Codes - Handle errors gracefully