Skip to content

Withdrawals

Withdraw funds from a merchant's balance to an on-chain address.

Authorization is by API key — no email verification code is required:

  • Merchant (self) — use your own API key and pass your own {mid}.
  • Reseller — use your reseller API key and pass the managed merchant's {mid}. The reseller must have an active connection with withdraw access granted.

If the merchant has configured a default approval process that applies to the amount, the withdrawal is held for approval instead of executing immediately. With no approval process, it executes right away.

Flow

  1. Call GET /v1/merchant/{mid}/withdraw to get the merchant's current balances and available chains, tokens, and network fee for each.
  2. Call POST /v1/merchant/{mid}/withdraw with the chain, token, amount, and destination.

The merchant's balance is debited by amount + fee. No commission is charged — only the fixed network fee.


GET /v1/merchant/{mid}/withdraw

Returns the merchant's current balances and all chains/tokens available for withdrawal with fee info.

http
GET /v1/merchant/{mid}/withdraw
Authorization: Bearer dptb_your_key

Response

json
{
  "balances": [
    { "currency": "USDC", "amount": 150000000, "available": 150000000 },
    { "currency": "USDT", "amount": 50000000,  "available": 50000000  }
  ],
  "chains": [
    {
      "chain": "tron",
      "tokens": [
        { "name": "USDC", "fee": 1000000, "min": 10000000, "max": 0 },
        { "name": "USDT", "fee": 1000000, "min": 10000000, "max": 0 }
      ]
    },
    {
      "chain": "ethereum",
      "tokens": [
        { "name": "USDC", "fee": 5000000, "min": 10000000, "max": 0 }
      ]
    }
  ]
}

balances[] — one entry per currency with a non-zero balance:

FieldDescription
currencyToken symbol (e.g. USDC, USDT)
amountTotal balance in 6dp micro-units
availableAmount currently withdrawable in 6dp

chains[] — one entry per supported withdrawal chain:

FieldDescription
chainChain identifier (e.g. tron, ethereum, polygon, bsc)
tokens[].nameToken symbol (e.g. USDC, USDT)
tokens[].feeFixed network fee in 6dp micro-units deducted from the merchant's balance
tokens[].minMinimum withdrawal amount in 6dp. 0 = no minimum
tokens[].maxMaximum withdrawal amount in 6dp. 0 = no maximum

All amounts are in 6dp micro-units (1 USDC = 1,000,000). Divide by 1,000,000 for display.


POST /v1/merchant/{mid}/withdraw

Execute the withdrawal.

http
POST /v1/merchant/{mid}/withdraw
Authorization: Bearer dptb_your_key
Content-Type: application/json

Request Body

json
{
  "chain": "tron",
  "currency": "USDC",
  "receiver": "TXyZ...abc",
  "amount": 100000000
}
FieldTypeRequiredDescription
chainstringChain to withdraw on (from GET /v1/withdraw/chains)
currencystringToken to withdraw (e.g. USDC, USDT)
receiverstringDestination on-chain address
amountintegerAmount to send in 6dp micro-units (excluding fee)

The merchant's balance is debited amount + fee. Use GET /v1/withdraw/chains to look up the fee before submitting.

Response

json
{
  "id": "a1b2c3d4-...",
  "merchant_id": "...",
  "type": "crypto",
  "currency": "USDC",
  "amount": 100000000,
  "fee": 1000000,
  "chain": "tron",
  "receiver": "TXyZ...abc",
  "status": "pending",
  "created_at": "2026-05-21T10:00:00Z"
}

Errors

StatusMessageCause
400Insufficient USDC balanceMerchant balance < amount + fee
400This withdrawal amount requires an approval process. Please select one.A default approval process applies at this amount
403Caller is not the merchant and has no active reseller connection with withdraw access

DPT Merchant API