Authentication
All endpoints require either a Bearer token or an API key.TEMPORARY vs PERMANENT accounts
Use TEMPORARY accounts for single-use checkout flows where you want to guarantee a fixed exchange rate for a short window. Use PERMANENT accounts for customers who deposit repeatedly over time.
Issue an NGN virtual account to a customer
POST https://api.dubupay.com/api/v1/customers/:id/ngn-virtual-account
Creates a permanent NGN virtual bank account and links it to the specified customer. The customer must have completed at least Tier 1 KYC (BVN verification) before you can issue a permanent account.
Path parameters
The customer’s UUID.
Response
The issued virtual account details.
Example
Get a customer’s NGN virtual account
GET https://api.dubupay.com/api/v1/customers/:id/ngn-virtual-account
Retrieves the NGN virtual account currently assigned to a customer.
Path parameters
The customer’s UUID.
Example
Create an onramp
POST https://api.dubupay.com/api/v1/payments/onramps
Creates an NGN virtual bank account (onramp) with configurable type, settlement mode, and target asset. This is the most flexible way to accept NGN deposits.
This endpoint supports idempotency. Pass an
X-Idempotency-Key header to safely retry requests without creating duplicate onramps.Request body
The onramp type. One of
TEMPORARY or PERMANENT. TEMPORARY accounts expire after 25 minutes with the rate locked at creation. PERMANENT accounts have no expiry and use the floating market rate at the time of deposit.UUID of the customer to associate with this onramp. Required for PERMANENT onramps.
ID of a previously fetched rate to lock in for this onramp. See Exchange Rates.
The NGN amount to lock for this virtual account. Required for TEMPORARY onramps.
How and where proceeds are settled after a deposit converts.
Response
The created onramp.
Example — TEMPORARY onramp
Example — PERMANENT onramp with internal balance
List onramps
GET https://api.dubupay.com/api/v1/payments/onramps
Returns a paginated list of onramps created under your merchant account.
Query parameters
Page number (1-indexed).
Results per page. Up to 100.
Filter by status:
ACTIVE, EXPIRED, or INACTIVE.Example
Get an onramp
GET https://api.dubupay.com/api/v1/payments/onramps/:id
Retrieves a single onramp by ID, including its current status and account details.
Path parameters
The onramp ID.