quoteId withproductId and beneficiaryId; payment.transferType if the destination currency requires a rail (see GET .../quote/currencies/{productId}).expiresAt — submit the order before then, or request a fresh quote.quoteId on POST /api/v1/payments/order to settle at this price.| Field | Type | Description | Constraints |
|---|---|---|---|
productId | string (uuid) | The payout product being priced. Drives provider resolution (Products.Provider) and the corridor — the quote always comes from the provider that will execute the payout. | — |
beneficiaryId | string (uuid) | The beneficiary the payout is priced for. Named to match the /beneficiaries resource and the beneficiaryId route parameter; the legacy contract called this "payeeId". | — |
source | object | The debit side of a quote. | — |
source.amount | number (double) | Amount to convert, in the product's source currency. | min 1 |
destination | object | The credit side of a quote. | — |
destination.currency | string | ISO currency the beneficiary receives (e.g. "EUR", "BRL"). The legacy contract called this "fiatCurrency", which named an implementation detail rather than the party it describes — and reads wrongly for a crypto destination. | minLength 1 |
| Field | Type | Description | Constraints |
|---|---|---|---|
payment | object | How the payout is routed to the beneficiary. | — |
payment.type | string | Payment method for the payout leg. | nullable |
payment.transferType | string | Payout rail: ach / rtp / wire / swift. Required for USD and AED corridors and ignored for all others, which route by bank id instead. Call GET v1/quotes/currencies/{productId} — the transferTypeRequired flag on each currency says whether this must be supplied. | nullable |
| Field | Type | Nullable | Description |
|---|---|---|---|
data | object | No | An FX quote returned to the partner. |
data.quoteId | string | Yes | Pass this back as quoteId on POST /order to settle at this locked rate before it expires. |
data.sourceCurrency | string | Yes | The product's funding currency this quote was priced in. |
data.targetCurrency | string | Yes | Currency the beneficiary will be paid in — echoes destination.currency from the request. |
data.sourceAmount | number (double) | Yes | Amount that will be debited, in sourceCurrency. |
data.targetAmount | number (double) | Yes | Amount the beneficiary will receive, in targetCurrency, after fees. |
data.exchangeRate | number (double) | Yes | Locked exchange rate this quote guarantees until expiresAt. |
data.fee | number (double) | Yes | Fee for this transfer, in feeCurrency. |
data.feeCurrency | string | Yes | Currency the fee amount is denominated in. |
data.status | string | Yes | Quote status, e.g. active or expired. |
data.provider | string | Yes | The provider the quote was resolved to (e.g. "MESTA", "TAZAPAY") — from the product. |
data.transferType | string | Yes | Payout rail the quote was priced for, echoing payment.transferType from the request when supplied. |
data.expiresAt | string (date-time) | Yes | Last moment this quoteId can be used on POST /order. After this, request a new quote. |
requestId | string | Yes | — |
timestamp | string (date-time) | No | — |
curl --location '/api/v1/payments/quote?customerId=c1f4a9d2-6b3e-4a7c-9f1d-2e8b5c0a7d31' \
--header 'X-Idempotency-Key: 6f1a9c0e-2b7d-4c31-9f8a-1d5e7c3b0a42' \
--header 'X-API-Key: ak_live_8f3a9b2c7e1d4f6a9b0c2d5e8f1a3b6c' \
--header 'X-Signature: kZ3fQeT2m7xVvC9pR1sLdY8bN0hU4jK6oW5aE2gI7cQ=' \
--header 'X-Timestamp: 1758556800' \
--header 'X-Nonce: 3fa85f64-5717-4562-b3fc-2c963f66afa6' \
--header 'X-Body-Hash: 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' \
--header 'Content-Type: application/json-patch+json' \
--data '{
"productId": "b4d1e7f2-3a9c-4e6b-8d0a-1f7c2b9e4a63",
"beneficiaryId": "e9c2a7d4-5b8f-4c1e-9a3d-6f0b1c8e2d47",
"source": {
"amount": 5000
},
"destination": {
"currency": "EUR"
}
}'{
"data": {
"quoteId": "qte_9a3f7c1e5b8d4a2f6c0e3b9d1a7f5c8e",
"sourceCurrency": "USDT",
"targetCurrency": "EUR",
"sourceAmount": 5000,
"targetAmount": 4587.32,
"exchangeRate": 0.917464,
"fee": 12.5,
"feeCurrency": "USDT",
"status": "active",
"provider": "MESTA",
"transferType": null,
"expiresAt": "2026-09-22T14:15:00Z"
},
"requestId": "req_4f9a2c7e1b8d3f6a9c2e0b7d1f8a3c6e",
"timestamp": "2026-09-22T14:03:11Z"
}