Virtual Accounts
Create Virtual Account

Create Virtual Account

Generate a virtual bank account number for a customer. Transfers into the account are credited to your BudPay wallet.

🇳🇬

Nigeria Only: This feature is only available to businesses in Nigeria.

Bank Codes: Call Fetch Bank List to get the bankCode values available to your integration.


Create Virtual Account

Endpoint: POST https://api.budpay.com/api/v2/collection/virtual-account

Parameters

This section details the header information required for creating a virtual account.

Field NameDescription
URLhttps://api.budpay.com/api/v2/collection/virtual-account
MethodPOST
AuthorizationBearer YOUR_SECRET_KEY (Replace with your actual BudPay secret key)
Content-Typeapplication/json
Request Parameters
ParameterTypeRequiredDescription
referenceStringYesYour unique reference for the virtual account
accountTypeStringYesreserved or checkout (see Account Types)
accountNameStringYesName to display on the virtual account
bankCodeStringYesCode of the partner bank, from Fetch Bank List
firstNameStringYesCustomer's first name
lastNameStringYesCustomer's last name
customerEmailStringYesCustomer's email address
amountNumberYesAmount the account should receive. Must be 0 for reserved accounts
expiryInMinutesIntegerYesMinutes until the account expires. Must be 0 for reserved accounts
Account Types
TypeUse CaseamountexpiryInMinutes
reservedPermanent account a customer can pay into repeatedlyMust be 0Must be 0
checkoutTemporary account for a single payment of a fixed amountGreater than 0Greater than 0

Sample Request

Endpoint: POST https://api.budpay.com/api/v2/collection/virtual-account

1curl -X POST 'https://api.budpay.com/api/v2/collection/virtual-account' \2  -H 'Content-Type: application/json' \3  -H 'Authorization: Bearer YOUR_SECRET_KEY' \4  -d '{5  "reference": "2026e3431VA0000001",6  "amount": 0,7  "accountType": "reserved",8  "accountName": "Test Customer Surname",9  "bankCode": "000027",10  "firstName": "Test Customer",11  "lastName": "Surname",12  "customerEmail": "a@b.com",13  "expiryInMinutes": 014}'
{  "status": true,  "message": "Virtual account generated",  "data": {    "accountNumber": "9888145123",    "accountName": "Test Customer Surname",    "bankCode": "000027",    "bankName": "Globus Bank",    "domain": "live",    "accountType": "reserved",    "accountStatus": "active",    "expiryInMinutes": 0,    "reference": "2026e3431VA0000001",    "createdAt": "2026-10-21T16:29:02.6555552Z"  }}

Response Fields
FieldDescription
accountNumberVirtual account number the customer pays into
accountNameName on the virtual account
bankCodeCode of the partner bank
bankNameName of the partner bank
domainEnvironment (test or live)
accountTypereserved or checkout
accountStatusAccount status (e.g. active)
expiryInMinutesMinutes until the account expires (0 for reserved accounts)
referenceThe reference you supplied
createdAtTime the account was created (UTC)