Transfers
Transfers allow you to initiate fund movements from your wallet to external blockchain addresses. These endpoints enable secure, auditable on-chain transfers across multiple currencies and blockchain networks.
Key Features
Multi-chain support: Transfer across BSC, Ethereum, Polygon, Solana, Tron, and more.
Multi-currency: Send USDT, USDC, or BTC to any valid address.
Idempotent submissions: Use the reference field to prevent duplicate transfers.
Real-time tracking: Monitor transfer status via the Transactions API or webhooks.
Create Transfer
Use Case
Initiate a transfer of cryptocurrency from your wallet to an external blockchain address. The transfer is processed asynchronously — you'll receive a pending status immediately and can track completion via webhooks or the Transactions API.
Headers
Must be set to 'application/json'.
Your API client ID.
Unix timestamp in milliseconds.
A unique UUID for this request.
HMAC-SHA256 signature of the request (including body), Base64-encoded.
Transfer Request Payload Schema
The recipient's blockchain address where funds will be sent. Must be a valid address for the specified chain.
Amount of the asset to transfer, expressed in smallest units (e.g., 1 USDC = 1,000,000 units for 6 decimal places).
Asset being transferred. Supported values: 'USDC', 'USDT', 'BTC'.
Blockchain network where the transfer will occur. Supported values: 'ethereum', 'bsc', 'polygon', 'solana', 'tron', 'bitcoin'.
A unique external identifier for tracking and ensuring idempotent transaction submission. If a transfer with the same reference already exists, the API will return the existing transfer instead of creating a duplicate.
An optional note or memo describing the purpose of the transfer.
Always include a unique reference value. If a network issue causes you to retry a request, the reference ensures the transfer is only processed once.
Supported Chains by Currency
| Currency | Supported Chains |
|---|---|
| USDT | ethereum, bsc, polygon, tron, solana |
| USDC | ethereum, bsc, polygon, solana |
| BTC | bitcoin |
Transfer Response
Indicates whether the API request was processed successfully.
A human-readable message describing the result of the transfer operation.
A unique identifier generated to track and reference this blockchain transaction.
Shows the current state of the transaction in its lifecycle. Possible values: 'pending', 'completed', 'failed'.
The destination blockchain wallet address where the funds are being sent.
The numeric value of the cryptocurrency being transferred in the smallest unit.
The symbol of the digital asset being transferred (e.g., USDC, USDT, BTC).
Specifies the blockchain used to process the transaction (e.g., bsc, ethereum, solana).
Indicates whether the transaction is running on a live network ('mainnet') or a test environment ('testnet').
A custom reference value provided by the client to help with internal tracking and reconciliation.
The exact date and time when the transaction was created.
An optional note or memo describing the purpose of the transfer.
A unique identifier for this specific API request, useful for debugging and support.
The UTC timestamp when the response was generated.
Transfer Status Lifecycle
After initiating a transfer, it moves through the following statuses:
pending: Transfer has been created and is awaiting processing. The funds have been deducted from your available balance.
completed: Transfer has been confirmed on the blockchain. The transaction hash is available.
failed: Transfer could not be completed. Funds are returned to your available balance. Check the error details for the reason.
Subscribe to transfer.completed and transfer.failed webhook events to receive real-time notifications instead of polling. See the Webhooks documentation for setup instructions.
Error Responses
Common errors when creating transfers.
Invalid request body. Missing required fields, unsupported currency/chain combination, or invalid address format.
Invalid or missing authentication headers.
Your available balance is less than the transfer amount. Check your balance before retrying.
A transfer with the same reference already exists. The existing transfer is returned in the response.
The address is not valid for the specified chain, or the amount is below the minimum transfer threshold.
Rate limit exceeded. Wait and retry.