Dubu Pay gives you two ways to move funds out of your merchant account. Withdrawals send USDT directly to an external blockchain wallet address. Offramps convert USDT to NGN and route the proceeds to a Nigerian bank account — either on-the-spot or on a recurring basis for a specific customer. For both, the operation originates from your merchant USDT balance.Documentation Index
Fetch the complete documentation index at: https://docs.dubupay.com/llms.txt
Use this file to discover all available pages before exploring further.
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
The USD-equivalent amount to withdraw, expressed as a decimal string (e.g.,
"100.00").The token to withdraw. Use
USDT.The blockchain network to send on. Supported values:
APTOS, BASE, CELO, ETHEREUM, POLYGON, SOLANA, TRON.The recipient wallet address on the specified chain.
Response
The created withdrawal.
Example
List withdrawals
GET https://api.dubupay.com/api/v1/payments/withdrawals
Returns a paginated list of withdrawals.
Query parameters
Page number (1-indexed).
Results per page. Up to 100.
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
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
Offramp type. One of
TEMPORARY or PERMANENT.The customer for this offramp. Provide either
customer_id or email (with optional name fields).The blockchain network the offramp listens on. One of
APTOS, BASE, CELO, ETHEREUM, POLYGON, SOLANA, TRON.The crypto asset to accept. One of
USDC or USDT.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
Filter by type:
TEMPORARY or PERMANENT.Filter by chain:
APTOS, BASE, CELO, ETHEREUM, POLYGON, SOLANA, or TRON.Filter by asset:
USDC or USDT.Filter by status:
ACTIVE, INACTIVE, or EXPIRED.Filter by settlement mode:
INTERNAL_BALANCE or NGN_PAYOUT.Page number (1-indexed).
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
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
Recipient type. One of
BANK_ACCOUNT, CRYPTO_ADDRESS, US_BANK_ACCOUNT, SWIFT_BANK_ACCOUNT.UUID of an existing customer to associate with this recipient. Required for
US_BANK_ACCOUNT and SWIFT_BANK_ACCOUNT types.Required when
type is BANK_ACCOUNT.Required when
type is CRYPTO_ADDRESS.