Two types of virtual account
Dubu Pay offers two types of NGN virtual account, each suited to different use cases.Temporary accounts
A temporary account is valid for exactly 25 minutes. You specify the exact NGN amount the customer should send, and the exchange rate is locked in at the moment you create the account. If the customer sends a different amount or pays after expiry, the account will not accept the payment. Use temporary accounts for:- Checkout pages where the customer pays a fixed invoice amount
- Time-limited payment links
- Any flow where you want certainty about the rate and amount
Permanent accounts
A permanent account has no expiry and accepts any NGN amount. The exchange rate is applied at the time each deposit clears, not at account creation. Permanent accounts require the associated customer to have completed Tier 2 KYC, including BVN verification. Use permanent accounts for:- Customers who top up a wallet balance repeatedly over time
- Subscription-style payment acceptance
- Any integration where you want to give a customer a stable, reusable bank account number
Virtual account fields
A virtual account object returned by the API includes:How deposits flow
When a customer sends money to a virtual account, the deposit progresses through several internal states before it appears as settled funds.You should listen for webhook events to track deposit status changes in real time rather than polling the deposits endpoint. Dubu Pay emits an event for each status transition.
Creating virtual accounts
You can create virtual accounts in two ways:- Via the customers endpoint
- Via the payments/onramps endpoint
Issue a permanent NGN virtual account directly against a customer record. The customer must have completed Tier 2 KYC.Retrieve the existing account for a customer: