Static Virtual Account
Use these endpoints to create and list static virtual bank accounts for your customers. Each static virtual account is a dedicated NGN bank account number that your customer can fund by direct bank transfer — deposits are automatically reconciled against your wallet.
Base path: /v1/virtual-accounts
Authentication: Secret key (Authorization: sk_...)
Endpoints
POST
/v1/virtual-accounts/static
API Key
Generate a static virtual account for a customer
GET
/v1/virtual-accounts/static
API Key
List all virtual accounts for your business
POST /v1/virtual-accounts/static
Creates a permanent (static) virtual bank account linked to a specific customer. If the customer does not exist yet (looked up by email), one is created automatically.
The account number returned is unique to the customer and can be used indefinitely — any transfer to it is automatically credited to the matched business wallet.
Request Body
email
string
Yes
Customer's email address. Used to resolve or create the customer record.
accountName
string
Yes
Name to assign to the virtual account.
type
string
Yes
Account type. business or individual.
identityType
string
Yes
Identity verification type. cac for business; bvn or nin for individual.
identityNumber
string
Yes
The actual identity number. For business accounts (cac), must begin with RC or BN (e.g. RC1234567). For individual accounts, provide the BVN or NIN digits.
reference
string (UUID)
Yes
A unique UUID you generate to identify this account request.
currency
string
Yes
Currency for the account. Currently only NGN is supported.
Identity type rules
type
Valid identityType values
identityNumber format
business
cac
Must start with RC or BN (e.g. RC1234567)
individual
bvn, nin
Numeric digits only
Request
Success Response — 200 OK
Response Fields
accountName
string
Name on the virtual account.
accountNumber
string
The virtual bank account number.
bank
string
Bank name where the account is held.
currency
string
Account currency (NGN).
reference
string
The reference you supplied in the request.
Error Responses
400
Validation failure (missing field, invalid enum, non-UUID reference).
400
The downstream payment provider rejected the identity verification.
401
Missing or invalid API key.
GET /v1/virtual-accounts/static
Returns a paginated list of all static virtual accounts created by the authenticated business in the current environment (TEST or LIVE).
Query Parameters
page
number
No
Page number. Defaults to 1.
limit
number
No
Results per page. Defaults to 10.
Request
Success Response — 200 OK
Error Responses
401
Missing or invalid API key.
Code Examples
Node.js
cURL
Python
How deposits are processed
You generate a virtual account and share
accountNumber+bankwith your customer.The customer sends a bank transfer to that account number.
The bank notifies Ivorypay via webhook.
Ivorypay matches the
accountNumberto the customer's business, converts the NGN amount to USDT at the live rate, and credits the business wallet.Your webhook endpoint receives a
TRANSACTION_UPDATEDevent with the settled amount.
The deposit reconciliation happens asynchronously — your webhook (configured in the dashboard) will be notified when the credit lands.
Last updated