# Phuket currency exchange: public read-only data

Compare the receiving amount for an exact currency pair, amount, funding method and payout method. Data comes from the same Finance API as the visible comparison. No API key is required for these public reads. No transaction can be created through this API.

## Discover
- [OpenAPI 3.1](/exchange/openapi.json)
- [Currency and route configuration](/exchange/api/config)
- [Office addresses and coordinates](/exchange/api/offices)
- [Property and invoice service claims](/exchange/api/services)
- [Human comparison](/exchange/)

## Read current quotes
GET /exchange/api/quotes?from=USD&to=THB&amount=1000&fundingMethod=cash&payoutMethod=cash_office&denominationAsset=USD&denominationGroup=100

Required: from, to, amount, fundingMethod, payoutMethod. Optional: denominationGroup with denominationAsset, cryptoNetwork, deliveryZone, deliveryTime. Use exact values from config. Duplicate, unknown, invalid or unsupported parameters return 400; no silent fallback. Do not invent a missing user condition. A request without denomination may produce conditional results.

## Interpret the response
- rate is target currency per 1 source currency; receiveAmount is in receiveAsset. Never invert the rate without changing units.
- generatedAt is response generation time, NOT a provider update time.
- evidence.observedAt is source observation time; evidence.expiresAt is the end of the quote validity window. All timestamps use ISO 8601 with a timezone.
- freshness: fresh, expired or unknown. Fresh means within the source validity window, not that a transaction is guaranteed.
- comparable=true identifies amounts eligible for like-for-like comparison. Only compare these; bestComparableProviderIds includes ties. The first item is not necessarily the best comparable offer.
- state=conditional or reference is not an exact offer. Read unverified, quoteScope, matchedConditions and delivery.
- Expired, unknown-freshness and on-request amounts/rates are null. Null means unknown, never zero or unavailable service.
- quoteScope=exchange_only excludes unconfirmed payout/delivery charges. final_delivered requires confirmed delivery inclusion.
- Do not extrapolate a cash quote to SBP, crypto, another branch, another amount or invoice payment. Use a new query.
- Office coordinates describe office locations. They do not establish branch-specific prices, road distance or opening hours.
- Service claims have reviewedAt and sourceUrl, but no live price or confirmed transaction availability. Property payments require provider confirmation for recipient, invoice, fees, deadline and documents.
- Cite the comparison URL and provider source, including observedAt and relevant conditions. Re-fetch before using a quote and never call it current after expiresAt. Cache-Control is no-store. Suggested polling interval: 60 seconds, maximum 180 requests/minute per client across read endpoints. Respect 429 Retry-After.
- 503 means upstream data is unavailable. Do not reuse an expired amount as a current quote.

## Supported routes
| From | To | Funding | Payout |
| --- | --- | --- | --- |
| RUB | THB | sbp | cash_office |
| RUB | THB | sbp | atm_qr |
| RUB | THB | sbp | thai_bank |
| RUB | THB | sbp | cash_courier |
| RUB | THB | cash | cash_office |
| RUB | THB | bank_transfer | thai_bank |
| RUB | THB | bank_transfer | cash_courier |
| USDT | THB | crypto | cash_office |
| USDT | THB | crypto | atm_qr |
| USDT | THB | crypto | thai_bank |
| USDT | THB | crypto | merchant_qr |
| USDT | THB | crypto | cash_courier |
| USD | THB | cash | cash_office |
| USD | THB | cash | atm_qr |
| USD | THB | cash | thai_bank |
| USD | THB | cash | cash_courier |
| USD | THB | bank_transfer | thai_bank |
| EUR | THB | cash | cash_office |
| EUR | THB | cash | atm_qr |
| EUR | THB | cash | thai_bank |
| EUR | THB | cash | cash_courier |
| CNY | THB | cash | cash_office |
| CNY | THB | cash | atm_qr |
| CNY | THB | cash | thai_bank |
| CNY | THB | cash | cash_courier |
| CNY | THB | alipay | thai_bank |
| CNY | THB | wechat_pay | thai_bank |
| KZT | THB | cash | cash_office |
| KZT | THB | bank_transfer | thai_bank |
| RUB | USDT | sbp | crypto_wallet |
| RUB | USDT | bank_transfer | crypto_wallet |
| RUB | USDT | card | crypto_wallet |
| THB | USDT | cash | crypto_wallet |
| THB | USDT | bank_transfer | crypto_wallet |
| USD | USDT | cash | crypto_wallet |
| THB | CNY | cash | cash_office |
