1. virtualaccount.creation.completed
Sent when a static virtual account has been successfully provisioned after an initial PROCESSING state. This applies to all currencies (NGN, MWK, USD).
Payload Example
Response Breakdown
| Field | Type | Description |
|---|---|---|
event | string | The name of the event (virtualaccount.creation.completed). |
data.id | string | Unique identifier for the virtual account. |
data.reference | string | The unique reference supplied during account creation. |
data.account.bankName | string | The name of the issuing bank. |
data.account.number | string | The virtual account number. |
data.status | string | The current status of the account (ACTIVE). |
2. virtualaccount.completed (Funding)
Sent when a virtual account (NGN, MWK, or USD) has been successfully credited with funds.
Payload Example
Response Breakdown (Funding)
| Field | Type | Description |
|---|---|---|
event | string | The name of the event (virtualaccount.completed). |
data.id | string | Unique identifier for the transaction. |
data.referenceNumber | string | Unique reference number assigned to the transaction. |
data.amount | number | The total gross amount of the transaction. |
data.state | string | The final state of the transaction (COMPLETED). |
data.customer.reference | string | The unique reference for the customer’s virtual account. |
data.customer.account.number | string | The virtual account number that was funded. |
Handling These Webhooks
When you receive these webhooks, you should:- Verify the signature – Ensure the webhook is authentic.
- Check the state/status – Confirm it is
ACTIVEorCOMPLETED. - Match the reference – Use the
referenceorcustomer.referencefield. - Respond with 200 OK – Acknowledge receipt.

