Virtual Account Creation
Summary
Create Virtual Accounts on demands, receive funds from customers via Virtual Account Number and get notification on Virtual Accounts usage.
Dedicated Virtual Accounts (DVAs) is a service that lets you create Nigerian virtual accounts for your customers. These accounts allow your customers to receive payment from their customers.
When you create a Dedicated Virtual Account (DVA) for a customer, all bank transfers to that account will automatically be recorded as transactions from that customer.
Coverage
NGN
Integration steps
You can generate a VA and start receiving money in 3 easy steps:
Prepare payload (payload includes: first name, last name, BVN, and email)
Initiate VA creation (encrypting payload)
Get instant response
Before you begin!
Initiate VA creation
create a virtual account
POST
{{env_url}}/wallet/virtual/v3/business/create/account
Encrypt the plain request body using the encryption algorithm specified above. Set the encrypted data to the message as shown below. You are required to set the x-auth-token and Authorization in the headers.
Headers
x-auth-token
Your merchant public key
Authorization
Bearer <token here>
Request Body (encrypted)
{
"message": "encrypted-message"
}
The result of the encryption of the payload that we specified has to be used with the Create virtual account endpoint as shown below:
Request Body (plain)
(Individual)
{
"firstName": "John",
"lastName": "Doe",
"bvn": "22222222222",
"email": "[email protected]"
}
(Business)
{
"bvn": "22222222222",
"email": "[email protected]"
}
When a VA creation is initiated, processing could take a few seconds. These are sample responses you will get below:
{
"id": 218,
"walletId": null,
"accountNumber": "8574578073",
"bankName": "WEMA BANK",
"orderRef": "fOeatZO40PEJzeiPvq8q",
"txRef": "klasha-virtual-account-banktransfer-Steph and sons-133",
"flwRef": "URF_G6Ie8ZP9GZ5hAZk8z6fZ",
"userId": null,
"businessId": 133,
"bankCode": null,
"enabled": true,
"accountName": "Stephen Ojerinde",
"email": "[email protected]",
"profileHash": "hwKpOI9+kZR/fFy7hLOpcQ==",
"createdAt": "2023-07-07 00:42:45",
"updatedAt": "2023-07-07 00:42:45"
}
Requery
GET
{{env_url}}
/wallet/virtual/v2/account/
{{email}}
In case of network downtime or failures during VA creation, the virtual account can be re-queried with the user’s email. This can be fetched using the Requery with email API on the Postman collection.
Headers
Authorization
Bearer <token here>
[
{
"accountNumber": "8573777620",
"bankName": "WEMA BANK",
"orderRef": "HsKRPDlemp7XBKvgO1HE",
"txRef": "klasha-fund-wallet-banktransfer-steph-AJDcN6app",
"flwRef": "URF_1Qw8TF2ZN1KkIdsqyHYI",
"businessId": 5,
"enabled": true,
"accountName": "Forrest Green",
"email": "[email protected]",
"createdAt": "2023-07-04 17:02:59",
"updatedAt": "2023-07-04 17:02:59"
}
]
Polling transaction status
POST
{{env_url}}/nucleus/tnx/collection/status
To know the status of a transaction, you can fetch the transaction using the Transaction Status API on the Postman collection. Make use of the session id received from the bank. See an example below:
Request Body
gateRef*
String
10043599483902847574821
{
"destinationCurrency": "NGN",
"sourceAmount": 2500.000000,
"sourceCurrency": "NGN",
"status": "successful",
"destinationAmount": 2500.000000,
"customer": {
"id": 53603,
"name": "Last Name",
"email": "[email protected]",
"phone": null,
"createdAt": "2023-07-04 20:11:05",
"updatedAt": "2023-07-04 20:11:05"
}
}
Last updated