Create Payout
Initiate a payout to send fiat to a bank account or stablecoins to a wallet. All payouts must reference a valid quote.Endpoint
POST /v1/payouts
Request Headers
| Header | Required | Description |
|---|---|---|
X-API-Key | Yes | Your API key |
Content-Type | Yes | application/json |
Idempotency-Key | No | Unique identifier for idempotent retries |
Request
curl -X POST https://api.thiqwave.com/v1/payouts \
-H "X-API-Key: your_api_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: unique_request_id" \
-d '{
"quote_id": "quote_9876543210",
"destination_account": {
"account_holder": "John Doe",
"account_number": "0123456789",
"bank_code": "ABUAAE3D",
"country": "AE"
},
"reference": "payout_ref_001",
"metadata": {
"order_id": "order_456"
}
}'
const response = await fetch('https://api.thiqwave.com/v1/payouts', {
method: 'POST',
headers: {
'X-API-Key': 'your_api_key',
'Content-Type': 'application/json',
'Idempotency-Key': 'unique_request_id',
},
body: JSON.stringify({
quote_id: 'quote_9876543210',
destination_account: {
account_holder: 'John Doe',
account_number: '0123456789',
bank_code: 'ABUAAE3D',
country: 'AE',
},
reference: 'payout_ref_001',
metadata: {
order_id: 'order_456',
},
}),
});
const payout = await response.json();
console.log(payout);
import requests
response = requests.post(
'https://api.thiqwave.com/v1/payouts',
headers={
'X-API-Key': 'your_api_key',
'Idempotency-Key': 'unique_request_id',
},
json={
'quote_id': 'quote_9876543210',
'destination_account': {
'account_holder': 'John Doe',
'account_number': '0123456789',
'bank_code': 'ABUAAE3D',
'country': 'AE',
},
'reference': 'payout_ref_001',
'metadata': {
'order_id': 'order_456',
},
}
)
payout = response.json()
print(payout)
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
quote_id | string | Yes | Quote ID from a prior quote request. Locks in rates and fees. |
destination_account | object | Conditional | Bank account object for fiat payouts. Required if destination is fiat. Contains: account_holder, account_number, bank_code, country. |
destination_address | string | Conditional | Wallet address for stablecoin payouts. Required if destination is stablecoin. |
destination_network | string | Conditional | Blockchain network for stablecoin payouts. |
reference | string | No | Your internal reference for the payout. |
metadata | object | No | Key-value pairs for your reference. |
Response
{
"payout_id": "payout_1234567890",
"quote_id": "quote_9876543210",
"status": "pending",
"source_currency": "USDT",
"source_network": "ethereum",
"source_amount": "500.00",
"destination_currency": "AED",
"destination_account": {
"account_holder": "John Doe",
"account_number": "0123456789",
"bank_code": "ABUAAE3D",
"country": "AE"
},
"destination_amount": 52250,
"reference": "payout_ref_001",
"created_at": "2026-04-09T14:30:00Z",
"completed_at": null
}
Response Fields
| Field | Type | Description |
|---|---|---|
payout_id | string | Unique payout identifier. |
quote_id | string | Associated quote ID. |
status | string | Current status: pending, processing, completed, failed. |
source_currency | string | Source stablecoin or fiat currency. |
source_network | string | null | Source blockchain (if stablecoin). |
source_amount | string | integer | Amount in source currency. |
destination_currency | string | Destination currency. |
destination_account | object | null | Bank account details (if fiat destination). |
destination_address | string | null | Wallet address (if stablecoin destination). |
destination_amount | string | integer | Amount in destination currency. |
reference | string | Your reference for the payout. |
created_at | string | ISO 8601 timestamp of creation. |
completed_at | string | null | ISO 8601 timestamp of completion. |
Payout States
| Status | Description |
|---|---|
pending | Payout initiated and awaiting processing. |
processing | Funds are being transferred. |
completed | Funds delivered to recipient. |
failed | Payout failed. Check details for reason. |
Notes
- Ensure the quote is not expired before creating a payout.
- For fiat payouts, verify bank account details are correct to avoid failed transfers.
- Monitor payout status via the Get Payout endpoint or webhooks.