Why this exists
Wallets with an existing ChangeNOW integration (Trust, Exodus, Coinomi and their forks) can switch to Privata by changing two values:Endpoints supported
| Method | Path |
|---|---|
| GET | /v2/exchange/currencies?active=true&flow=standard |
| GET | /v2/exchange/min-amount?fromCurrency=&toCurrency=&fromNetwork=&toNetwork= |
| GET | /v2/exchange/estimated-amount?fromCurrency=&toCurrency=&fromAmount= |
| POST | /v2/exchange (create order) |
| GET | /v2/exchange/by-id?id= |
Field mapping
We accept ChangeNOW’s camelCase wire format on this layer (not the native snake_case used in/partner/v1).
| ChangeNOW field | Our internal mapping |
|---|---|
fromCurrency / toCurrency | from / to |
fromNetwork / toNetwork | from_network / to_network |
fromAmount / toAmount | amount_from / amount_to_expected |
payinAddress | deposit_address |
payoutAddress | payout_address |
refundAddress | refund_address |
Status normalization
The legacy ChangeNOW statusfinished is automatically returned as
finished on this layer (not completed) to preserve drop-in compatibility.
Internally we always store completed. New integrations should use the native
/partner/v1 surface and follow our status enum.
What’s not on this layer
These features are exposed only via native/partner/v1:
refund_preference//refund-action- SSE
/order/{id}/stream - Ops events webhook
- Tier-aware error codes (
DUPLICATE_ACTIVE_ORDER,REFUND_WINDOW_EXPIRED, etc.)
Authentication header
We accept either header on/v2/exchange/*: