Sending Stablecoins
Bitnob allows you to programmatically send USDT or USDC to any on-chain address across supported blockchain networks. This is a key capability for use cases like payouts, merchant disbursements, and remittances.
You cannot send less than $1. Transfers below this minimum will not be processed.
Supported Chains
You can send funds on any of the following networks:
Tron (TRC20)
Binance Smart Chain (BEP20)
Ethereum (ERC20)
Polygon
Solana
Base
Stellar
Arbitrum (ARB)
Avalanche (AVAX)
Optimism (OP)
Polygon (POL)
TON (coming soon for send)
Plasma (coming soon for send)
To view dynamically supported networks per stablecoin, use the /stablecoins/supported-chains endpoint — see Stablecoins Supported Chains in the API reference.
Sending on Stellar has one extra requirement: any memo the destination gives you must be forwarded exactly as provided. See Stellar Withdrawal Notes.
Endpoint
POST /api/withdrawals This endpoint triggers an on-chain withdrawal from your wallet to an external address. Full parameter and response documentation lives in the Create Withdrawal API reference.
Request Parameters
These map one-to-one to the withdrawal request fields in the API reference.
parameter | type | required | description |
|---|---|---|---|
to_address | string | Yes | Recipient's on-chain wallet address |
amount | string | Yes | Amount in the smallest unit of the currency (e.g., '2000000' for 2 USDT) |
currency | string | Yes | Stablecoin type (USDT, USDC) |
chain | string | Yes | Blockchain network (e.g., tron, ethereum, bsc, polygon, solana) |
reference | string | Yes | A unique identifier for the transfer |
description | string | No | Optional transfer description for your records |
Sample Request
Sample Response
A pending status here is expected — see Create Withdrawal for the full response shape and Error Responses for the failure codes.
Webhook Lifecycle
Once a transfer is created, Bitnob handles the on-chain broadcasting and confirmation tracking internally, moving it through the withdrawal status lifecycle. Your app will receive the following webhook events:
transfer.success – after enough confirmations (based on chain)
transfer.failed – if the transfer is rejected, reverted, or times out on-chain
Best Practices
Idempotency: Always generate a unique reference per transfer to prevent double sending.
Fee Handling: Bitnob calculates and deducts gas/network fees from your balance. These are visible in the centFees field of the response.
Status Checking: Avoid polling — listen to transfer events via webhooks instead. If you do need to look one up, use Get Transaction By ID Or Reference.
Address Validation: Use the addresses/validate endpoint — see Validate Address — to confirm the address is well-formed and supported on the chain before sending.