Quotes
A quote locks a corridor + FX rate + fee config for a short TTL. Request → Accept → use within the TTL.
Request a quote
POST /v1/transactions/quote · Auth: X-API-Key
QUOTE_ID=$(curl -s -X POST "$BASE_URL/v1/transactions/quote" \
-H "X-API-Key: $THIQWAVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"corridor_id": "AE-SG",
"source_asset": "AED",
"source_amount_minor": "150000",
"destination_asset": "SGD",
"destination_kind": "BANK",
"customer_id": "'"$CUSTOMER_ID"'"
}' | jq -r .id)
| Field | Required | Notes |
|---|---|---|
corridor_id | yes | e.g. AE-SG, max 64 |
source_asset | yes | asset code, max 16 |
source_amount_minor | yes | string of integer minor units ("150000" = AED 1,500.00) |
destination_asset | yes | asset code, max 16 |
destination_kind | yes | WALLET | BANK | STABLECOIN |
customer_id | no | sending customer UUID |
:::warning No decimal display fields
Quote amounts use integer minor-unit strings only (source_amount_minor). Never source_amount / amount decimals — those will return 400 VAL_0001.
:::
Accept the quote
curl -X POST "$BASE_URL/v1/transactions/quote/$QUOTE_ID/accept" \
-H "X-API-Key: $THIQWAVE_API_KEY" | jq .
CREATED → ACCEPTED. Idempotent at the business level — safe to retry. Errors: 400 QTE_0001 (expired), 409 QTE_0002 (already accepted).