What are Virtual Bank Accounts?
Virtual Bank Accounts are dedicated bank account numbers that allow your business and your customers to receive money. When someone sends funds to a Virtual Bank Account, the money is automatically credited to the associated wallet, and you are notified via a webhook. They are available in NGN, GBP, EUR, and USD.How to create a Virtual Bank Account
- Endpoint:
/virtual-bank-account - Method:
POST - Purpose: Generate a new Virtual Bank Account linked to a wallet.
SUCCESSFUL status along with the account details.
For GBP, EUR, and USD, the account is created asynchronously. The response will return with a PENDING status. Once the account is fully activated, you will receive a virtual_account.ready webhook with the account details (account number, bank name, etc.). If the account creation fails or is rejected, you will receive a virtual_account.failed or virtual_account.rejected webhook instead.
For GBP, EUR, and USD, Virtual Bank Account creation requires a verified customer of type
individual. Business-type customers are not supported for these currencies.In the development environment, only NGN Virtual Bank Accounts settle.
Understanding identification types (TIN)
When creating a Virtual Bank Account (particularly for USD), your customer needs atin (Tax Identification Number) value on their profile. However, “TIN” is a generic term — what it actually represents depends on the customer’s country and whether they are an individual or a business.
For example:
| Country | Customer type | What to collect | Example label |
|---|---|---|---|
| US | Individual | Social Security Number | SSN |
| US | Business | Employer Identification Number | EIN |
| NG | Individual | Bank Verification Number | BVN |
| GB | Individual | National Insurance Number | NINO |
| CA | Individual | Social Insurance Number | SIN |
- Call Get identification type with the customer’s
countryandtype(or theircustomer_idif you already have one). - Use the returned
labelto display the correct field name in your UI (e.g. “Enter your Social Security Number” instead of “Enter your TIN”). - Save the value your customer provides as the
tinfield when creating or updating the customer. - Proceed to create the Virtual Bank Account.
Individual and business customers in the same country often require different identification types. Always pass the correct
type parameter when looking up the identification type.Quick answers
- Which Virtual Bank Accounts settle in development? Only NGN Virtual Bank Accounts settle in the development environment.
- Should the customer’s country match the identity document? Yes. The customer’s
countrymust match the identity document submitted for KYC. - How do I know the correct
tinlabel or field? See Understanding identification types above, or call the Get identification type endpoint.
- All Currencies
- NGN
- GBP
- EUR
- USD
Wallet must existYou must have a wallet in the currency you want to create a Virtual Bank Account for. Pass a valid
wallet_id in your request.No duplicate accountsYou cannot create a second Virtual Bank Account for the same customer and wallet combination. If one already exists, the request will be rejected.Customer country and identity document must matchFor any customer-backed Virtual Bank Account, the customer’s country must match the country on the identity document submitted for KYC.Managing Virtual Bank Accounts
Once created, you can manage your Virtual Bank Accounts using the following endpoints:- List Virtual Bank Accounts — retrieve all Virtual Bank Accounts for your business.
- Get Virtual Bank Account — retrieve details of a specific Virtual Bank Account by ID.
- Close Virtual Bank Account — close a Virtual Bank Account that is no longer needed.

