Initiate Crypto Payout
Send cryptocurrency from your wallet to an external blockchain address.
POST /v1/payouts/crypto
Headers
| Header | Required | Description |
|---|---|---|
X-Api-Key |
Yes | Your API key |
X-Idempotency-Key |
Yes | Unique key to prevent duplicate payouts |
Content-Type |
Yes | application/json |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
amount |
number | Yes | Amount to send. Must meet the per-currency minimum (see below). |
currency |
string | Yes | Cryptocurrency: BTC, USDT, or USDC |
protocol |
string | Yes | Blockchain protocol (see supported protocols) |
address |
string | Yes | Destination wallet address |
beneficiaryName |
string | No | Name of the beneficiary |
Minimum Amounts
| Currency | Minimum |
|---|---|
USDT |
12 |
USDC |
12 |
BTC |
0.00033 |
Requests below the minimum for the selected currency are rejected with 400 Bad Request and a message of the form Minimum payout amount for <CURRENCY> is <amount>.
Supported Protocols
| Protocol | Networks |
|---|---|
BTC |
Bitcoin |
ERC20 |
Ethereum |
TRC20 |
Tron |
BEP20 |
BNB Smart Chain |
POLYGON |
Polygon |
SOLANA |
Solana |
Example Request
curl -X POST "https://api.esca.finance/v1/payouts/crypto" \
-H "X-Api-Key: your_api_key_here" \
-H "X-Idempotency-Key: payout-550e8400-e29b-41d4-a716-446655440000" \
-H "Content-Type: application/json" \
-d '{
"amount": 100,
"currency": "USDT",
"protocol": "TRC20",
"address": "TXqH4w2ZQ2C3Y5t4dKxzfPzF8w2141vJgb",
"beneficiaryName": "John Doe"
}'
Example Response
{
"status": true,
"message": "Payout initiated successfully",
"data": {
"payoutId": "f7a8b9c0-d1e2-3456-abcd-ef7890123456",
"type": "crypto",
"currency": "USDT",
"amount": 100,
"fee": 0.25,
"status": "PROCESSING",
"protocol": "TRC20",
"address": "TXqH4w2ZQ2C3Y5t4dKxzfPzF8w2141vJgb",
"transactionHash": null
}
}
Address Validation
The API automatically validates the destination wallet address for the specified currency and protocol before initiating the payout. If the address is invalid, you will receive a 400 Bad Request:
{
"status": false,
"message": "Invalid wallet address for the specified currency and protocol."
}
Error Responses
| Status | Description |
|---|---|
| 400 | Invalid request or wallet address |
| 401 | Invalid or expired API key |
| 409 | Duplicate request (idempotency conflict) |
| 429 | Rate limit exceeded |
| 500 | Payout failed |