Deposit to Virtual Account
Add funds to an existing virtual account
Add funds to an existing virtual account. This operation requires sufficient funds in your business balance account.
Endpoint: https://api.chapa.co/v1/virtual-account/credit
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_number | Yes | string | The unique identifier of the virtual account to be credited |
amount | Yes | number | Amount to be deposited into the virtual account |
tx_ref | No | string | Your reference for this credit transaction (optional) |
note | No | string | Reference or description for the deposit transaction |
Example Request Body
{
"account_number": "1234567890",
"amount": 1000,
"tx_ref": "REF_1234",
"note": "Deposit for February 2025"
}cURL
PHP
Python
Successful Response
{
"status": "success",
"message": "Amount Deposited Successfully",
"data": {
"account": {
"account_name": "ZAK KAR",
"account_number": 100314252,
"account_alias": "1234542",
"balance": 40,
"status": "active",
"currency": "ETB",
"created_at": "2025-02-21T08:06:54.000000Z",
"updated_at": "2025-02-21T08:09:54.000000Z"
},
"deposit": {
"tx_ref": "VTkVnh5ScB",
"note": "Connecting Ethiopia to the Global Market",
"amount": 20,
"currency": "ETB",
"created_at": "2025-02-21T08:09:54.000000Z"
}
}
}Response Parameters
| Parameter | Type | Description |
|---|---|---|
status | string | Status of the request (success/error) |
message | string | Description of the operation result |
data.account.account_name | string | Name associated with the virtual account |
data.account.account_number | number | Unique identifier of the virtual account |
data.account.account_alias | string | Custom reference name for the account |
data.account.balance | number | Current balance after credit |
data.account.status | string | Current status of the account |
data.account.currency | string | Currency of the account |
data.account.created_at | string | Timestamp of account creation |
data.account.updated_at | string | Timestamp of last account update |
data.deposit.tx_ref | string | Your reference for this credit transaction |
data.deposit.note | string | Description provided for the credit |
data.deposit.amount | number | Amount credited in this transaction |
data.deposit.currency | string | Currency of the credit |
data.deposit.created_at | string | Timestamp of the credit transaction |
Failed Response
{
"status": "error",
"message": "Virtual Account Not Found"
}Your business balance must have sufficient funds to process the deposit successfully.
Refer to our Error Codes page for all responses for this request.
Use Cases
- Top-up Accounts: Add funds to customer virtual accounts
- Refunds: Credit refunds to virtual accounts
- Rewards: Deposit rewards or bonuses to accounts
- Balance Management: Transfer funds between business and virtual accounts
Next Steps
- Create Virtual Account - Create a new virtual account
- Get Virtual Account - Retrieve virtual account details
- Error Codes - Handle errors gracefully