Crypto Withdrawal
The crypto withdrawal API debits BRL from your balance, converts it to USDT at the current quote and sends it to the wallet you choose. Live credentials only; sandbox gets HTTP 403.
Create a withdrawal
POST /crypto/withdraw
{
"token": "YOUR_TOKEN",
"secret": "YOUR_SECRET",
"chain": "polygon",
"address": "0x0000000000000000000000000000000000000001",
"amount": 50.00
}| Field | Required | Description |
|---|---|---|
chain | Yes | polygon, tron or solana. |
address | Yes | Destination wallet. Validated per network (table below). |
amount | Yes | BRL to debit. Minimum 10.00, or 30.00 on Solana. |
| Network | Address format |
|---|---|
| Polygon | 0x followed by 40 hex characters |
| Tron | T followed by 33 base58 characters |
| Solana | 32 to 44 base58 characters |
Double check the address. On chain transfers cannot be reversed.
Response (201)
{
"status": "ok",
"message": "Saque em crypto solicitado com sucesso",
"data": {
"order_id": 4821,
"chain": "polygon",
"amount_brl": "50.00",
"usdt_to_receive": "8.456789",
"usdt_gross": "8.500000",
"platform_fee_usdt": "0.043211",
"address": "0x0000000000000000000000000000000000000001",
"status": "processing",
"created_at": "2026-10-01T13:30:00+00:00",
"expires_at": "2026-10-01T14:00:00+00:00"
}
}order_idis an integer. Store it.- Amounts are decimal strings: BRL with 2 places, USDT with 6.
usdt_to_receiveis the amount after the platform fee. Network fees are paid by the platform.- The BRL amount is reserved from your balance as soon as the order is created.
Check a withdrawal
POST /crypto/withdraw/status
{
"token": "YOUR_TOKEN",
"secret": "YOUR_SECRET",
"order_id": "4821"
}Send order_id as a string. A JSON number fails validation with 422.
{
"status": "ok",
"data": {
"order_id": 4821,
"status": "completed",
"status_message": "Transação concluída",
"chain": "polygon",
"amount_brl": "50.00",
"usdt_to_receive": "8.456789",
"address": "0x0000000000000000000000000000000000000001",
"payout_tx_hash": "0x00000000000000000000000000000000000000000000000000000000000000aa",
"created_at": "2026-10-01T13:30:00+00:00",
"completed_at": "2026-10-01T13:41:00+00:00"
}
}data.status | Meaning |
|---|---|
processing | Order created, USDT being acquired. |
sending | USDT is being sent to the destination wallet. |
completed | Sent. payout_tx_hash holds the on chain hash. |
failed | Failed. The reserved BRL is returned. |
cancelled | Cancelled. The reserved BRL is returned. |
completed_at is the time of the last update to the order and is present for every status. Decide completion by data.status, not by completed_at.
There is no callback for crypto withdrawals. Poll this endpoint (every 30 to 60 seconds is enough). Typical completion time is 5 to 15 minutes, depending on the network.
Errors
| HTTP | Body | When |
|---|---|---|
| 400 | Endereço de carteira inválido para a rede selecionada | Address does not match the network. |
| 400 | O valor mínimo para saque na rede Solana é R$ 30,00 | Solana below 30.00. |
| 400 | Saldo insuficiente with available_balance and requested_amount | Balance below the amount. |
| 401 | Invalid credentials or blocked account. | |
| 403 | Sandbox credentials, or account limited to refunds. | |
| 404 | Ordem não encontrada | Status: order not found for your account. |
| 422 | Erro de validação with errors | Missing or invalid fields, unsupported chain, amount below 10.00. |
| 500 | Não foi possível obter cotação no momento | Quote unavailable. Retry later. |
There is no idempotency key. If the create request times out, check your balance before sending it again.
Updated about 2 hours ago
