Use this file to discover all available pages before exploring further.
The Dubu Pay payments system covers every step of moving money: receiving NGN from customers via virtual bank accounts, tracking each incoming deposit through its settlement lifecycle, withdrawing USDT to external wallets, converting USDT back to NGN via offramps, and moving funds between accounts with transfers. All payments functionality lives under the /payments path of the API.
An onramp is the API term for a virtual bank account used to receive NGN. When a customer pays into an onramp, Dubu Pay automatically converts the NGN to USDT and records the result as a deposit. See NGN virtual bank accounts for the full breakdown of temporary vs permanent accounts.
A deposit is created automatically when a customer pays into a virtual account. You do not create deposits directly — you retrieve and monitor them. Each deposit has a type of either NGN_DEPOSIT or CRYPTO_DEPOSIT, and moves through a status lifecycle until it either settles or fails.Deposit status lifecycle:
Status
Description
PENDING
Deposit received and queued for processing.
COMPLETED
Deposit has settled successfully. USDT has been credited.
FAILED
Processing failed. No funds were moved.
FLAGGED
Flagged for compliance review. Settlement is paused.
REVERSED
A completed deposit has been reversed. Credited USDT has been debited back.
Virtual account deposits expose fine-grained processing states (PENDING_FX, PENDING_WITHDRAWAL, SETTLED) on the deposit record itself. The GET /payments/deposits list endpoint uses the higher-level status values shown above. Use webhooks to receive real-time status transitions.
Withdrawals are irreversible once submitted. Verify the destination address and chain before calling this endpoint. Dubu Pay cannot recover funds sent to the wrong address.
An offramp accepts USDT and converts it back to NGN, either crediting your internal balance or sending the NGN directly to a Nigerian bank account. You choose the settlement mode when creating the offramp.
Settlement mode
Description
INTERNAL_BALANCE
Converted NGN is held in your Dubu Pay account.
NGN_PAYOUT
Converted NGN is sent to a specified Nigerian bank account. Requires a rate_id and destination_bank.
Offramp type is either TEMPORARY (expires) or PERMANENT (no expiry). You can filter listed offramps by type, chain, asset, status, and settlement_mode.
A transfer moves funds to a bank account. Dubu Pay supports three destination types depending on the currency and recipient:
Type
Currency
Description
BANK_ACCOUNT
NGN
Nigerian domestic bank transfer. Provide account_number and bank_code.
US_BANK_ACCOUNT
USD
US ACH or wire transfer. Provide routing number, account number, and payout_scheme.
SWIFT_BANK_ACCOUNT
USD
International SWIFT/IBAN transfer. Provide IBAN, BIC, account owner details, and purpose_of_funds.
Each transfer requires a unique reference string you provide for idempotency. You can optionally associate a transfer with a customer using on_behalf_of.customer_id.
Transfer statuses are PROCESSING, SETTLED, and FAILED.
Always store your reference in your own database before calling POST /transfers. If the network request times out, you can use the reference to check whether the transfer was created rather than accidentally duplicating it.
Your merchant balance is the aggregated USDT held across all settled deposits, minus withdrawals and transfers. You can retrieve it at any time, transfer a portion of it to the trading engine, or list all past balance transfers.
# Get current balancecurl https://api.dubupay.com/api/v1/payments/merchant/balance \ -H "X-Api-Key: dubu_sk_live_..."# Transfer balance to tradingcurl -X POST https://api.dubupay.com/api/v1/payments/merchant/balance/transfer \ -H "X-Api-Key: dubu_sk_live_..." \ -H "Content-Type: application/json" \ -d '{"amount_usd": "500.00"}'
The response includes both the rate and a rate_id you pass when creating a temporary onramp or NGN_PAYOUT offramp. Rates are time-limited — fetch a fresh rate close to the moment you create the account.
For temporary onramps, the rate is locked at creation time. For permanent onramps, the live rate at the moment of each deposit is used. Always fetch the latest rate immediately before creating a temporary account to give your customer the most accurate amount.
Payouts are the outbound counterpart to deposits — they represent USDT or NGN being paid out as a result of a withdrawal or transfer. Payouts are read-only; you list them to track settlement status.
Status
Description
PROCESSING
Payout is in progress.
SETTLED
Payout has completed and funds have reached the destination.