Skip to main content
Dubu Pay gives you two ways to move money out: a withdrawal sends USDT directly to an on-chain wallet address, and an offramp converts USDT back to NGN and pays out to a Nigerian bank account. This guide covers both flows, including how to create recipients you can reuse across multiple transfers.

USDT withdrawals

A withdrawal moves USDT from your merchant balance to any external wallet address on a supported chain.

Initiate a withdrawal

Request fields:
Always pass X-Idempotency-Key with a unique value per withdrawal. If the request times out and you retry, the same key prevents a duplicate withdrawal from being created.
Response:

Check withdrawal status

Withdrawal statuses:

Offramps — convert USDT to NGN

An offramp converts USDT to NGN and pays out to a Nigerian bank account. You need to provide the recipient’s bank details either inline or via a pre-created recipient.

Initiate an offramp

Key request fields:
Fetch the current exchange rate before creating an offramp: GET /payments/rates. The rate_id from the response is time-limited, so use it promptly.
Response:
The deposit_address is the on-chain address where USDT should be sent to trigger the NGN payout.

Check offramp status

Offramp statuses: ACTIVE, INACTIVE, EXPIRED

List all offramps

You can filter by type, chain, asset, status, and settlement_mode.

Fetch the exchange rate

Before creating an offramp with NGN_PAYOUT, get the current rate and lock it:
Rate IDs expire. Use the rate_id in your offramp request within the validity window returned by the rates endpoint. Creating an offramp with an expired rate ID will fail.