Authentication
All endpoints require either a Bearer token or an API key.Withdrawals
Create a withdrawal
POST https://api.dubupay.com/api/v1/payments/withdrawals
Initiates a USDT withdrawal from your merchant balance to an external wallet address on the specified blockchain network.
This endpoint supports idempotency. Pass an
X-Idempotency-Key header to safely retry without creating duplicate withdrawals.Request body
string
required
The USD-equivalent amount to withdraw, expressed as a decimal string (e.g.,
"100.00").string
required
The token to withdraw. Use
USDT.string
required
The blockchain network to send on. Supported values:
APTOS, BASE, CELO, ETHEREUM, POLYGON, SOLANA, TRON.string
required
The recipient wallet address on the specified chain.
Response
object
The created withdrawal.
Example
List withdrawals
GET https://api.dubupay.com/api/v1/payments/withdrawals
Returns a paginated list of withdrawals.
Query parameters
number
Page number (1-indexed).
number
Results per page. Up to 100.
string
Filter by status. One of
PROCESSING, SETTLED, FAILED.Example
Get a withdrawal
GET https://api.dubupay.com/api/v1/payments/withdrawals/:id
Retrieves a single withdrawal by ID.
Path parameters
string
required
The withdrawal ID.
Example
Offramps
Offramps convert USDT (or USDC) received from a blockchain address into NGN and pay it out to a bank account. You can create offramps as TEMPORARY (one-time, for a specific conversion) or PERMANENT (reusable for a customer’s ongoing payouts). For NGN bank payouts, you must supply arate_id (lock a rate from the Rates endpoint) and destination bank details.
Create an offramp
POST https://api.dubupay.com/api/v1/payments/offramps
Creates a new offramp. The body shape varies depending on whether you settle to your internal balance or to an NGN bank account.
This endpoint supports idempotency via the
X-Idempotency-Key header.Request body
string
required
Offramp type. One of
TEMPORARY or PERMANENT.object
required
The customer for this offramp. Provide either
customer_id or email (with optional name fields).string
required
The blockchain network the offramp listens on. One of
APTOS, BASE, CELO, ETHEREUM, POLYGON, SOLANA, TRON.string
required
The crypto asset to accept. One of
USDC or USDT.object
required
How proceeds are settled after conversion.
Example — settle to internal balance
Example — NGN payout to bank account
List offramps
GET https://api.dubupay.com/api/v1/payments/offramps
Returns a paginated list of offramps with optional filters.
Query parameters
string
Filter by type:
TEMPORARY or PERMANENT.string
Filter by chain:
APTOS, BASE, CELO, ETHEREUM, POLYGON, SOLANA, or TRON.string
Filter by asset:
USDC or USDT.string
Filter by status:
ACTIVE, INACTIVE, or EXPIRED.string
Filter by settlement mode:
INTERNAL_BALANCE or NGN_PAYOUT.number
Page number (1-indexed).
number
Results per page. Up to 200.
Example
Get an offramp
GET https://api.dubupay.com/api/v1/payments/offramps/:id
Retrieves a single offramp by ID.
Path parameters
string
required
The offramp ID.
Example
Recipients
A recipient is a saved payment destination — a bank account, crypto address, or wire details — that you can reference by ID when creating transfers or offramps. Managing recipients separately lets you avoid re-entering bank details on every payout.Create a recipient
POST https://api.dubupay.com/api/v1/recipients
Request body
string
required
Recipient type. One of
BANK_ACCOUNT, CRYPTO_ADDRESS, US_BANK_ACCOUNT, SWIFT_BANK_ACCOUNT.string
UUID of an existing customer to associate with this recipient. Required for
US_BANK_ACCOUNT and SWIFT_BANK_ACCOUNT types.object
Required when
type is BANK_ACCOUNT.object
Required when
type is CRYPTO_ADDRESS.