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.
Supported Chains
You can send funds on any of the following networks:
Tron (TRC20)
Binance Smart Chain (BEP20)
Ethereum (ERC20)
Polygon
Solana
TON (coming soon for send)
To view dynamically supported networks per stablecoin, use the
/wallets/stable-coins-networks endpoint.
Endpoint
POST /wallets/transfer This endpoint triggers an on-chain transfer from your wallet to an external address.
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
amount | integer | ✅ | Amount in cents (e.g., 100 = $1.00) |
address | string | ✅ | Recipient's on-chain wallet address |
chain | string | ✅ | Blockchain network (e.g., bsc, tron, ethereum, polygon) |
assetType | string | ✅ | Stablecoin type (USDT, USDC) |
reference | string | ✅ | A unique identifier for the transfer (UUID or custom string) |
customerEmail | string | ❌ | Optional email tied to the recipient (for your own tracking/analytics) |
description | string | ❌ | Optional transfer description |
Sample Request
Sample Response
Webhook Lifecycle
Once a transfer is created, Bitnob handles the on-chain broadcasting and confirmation tracking internally. Your app will receive:
transfer.initiated – immediately after the transfer is accepted
transfer.completed – 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.
Address Validation: Use the /wallets/stable-coins-networks endpoint to validate supported chains for the asset before sending.