Skip to main content
Yativo has two rate endpoints: POST /exchange-rate is the single source for pricing any transaction on Yativo. It returns a quote_id valid for 5 minutes — use this ID in the execution step to guarantee the rate and fee shown to your customer. There are two modes:

Generate a Quote

string
required
Source currency (ISO 4217), e.g. "USD", "EUR".
string
required
Target currency (ISO 4217), e.g. "USD", "CLP", "BRL", "MXN".
number
required
Amount in the source currency.
integer
Payment method ID from GET /payment-methods/payout or GET /payment-methods/payin. Scopes the quote to the exact fees for that rail — required for checkout flows where you will execute at the quoted price.
string
"payout" for sends/withdrawals or "payin" for deposits. Required when method_id is provided.
string
default:"send"
Payout quotes only. Set to "receive" to make amount the amount the customer receives, in to_currency. See Pay out by receive amount.
Quotes expire after 5 minutes. Execute the transaction within this window — after expiry the quote_id is rejected and a new quote is required.

Execute the Quote

Use the quote_id in the appropriate execution endpoint:

For payouts

For deposits (payin)


Pay out by receive amount

By default, a payout’s amount is what you send from your wallet, and the customer receives that amount converted into the payout currency. To fix what the customer receives instead, for example exactly 5,000 MXN, set amount_type to receive. Yativo works out the send amount and fees, then debits your wallet for both. The customer always gets the full requested amount. amount_type works on POST /exchange-rate (payout quotes) and POST /wallet/payout. A quote fixes the rate and fees for 5 minutes, so you can show the exact debit before you commit.
1

Get a receive-mode quote

amount is the send amount in from_currency, receive_amount is what the customer gets, and payout_data.customer_total_amount_due is the total your wallet is debited.
2

Create the payout with the quote

The quote supplies the amount, so don’t send amount or amount_type. Any amount_type you send with a quote_id is ignored. The quote’s method_id must be the payout method behind payment_method_id.

Option B: pay out directly

The send amount is calculated at the current rate when the request is processed. Use Option A if you need to know the debit in advance.

Payout response

Every POST /wallet/payout response includes these fields, in either mode: When the debit wallet and payout currency are the same (for example USD to USD), the send amount equals the receive amount. Fees are still added on top.

Limits and errors

  • The payout method’s minimum and maximum are checked against the calculated send amount, so a receive amount can be rejected for being above or below a limit. The error shows the limit in your wallet currency.
  • If your wallet can’t cover the send amount plus fees, the request fails with Insufficient wallet balance and nothing is debited.
  • An amount_type other than send or receive returns 422.
  • amount_type: "receive" on a payin quote returns 422.

Live market rates

To show live rates to your customers, without fees or a quote, use:
string
default:"USD"
The currency rates are quoted against. Must be a supported wallet currency.
Each rate means 1 base = rate units of that currency. To convert from the base currency, multiply by the rate. To convert back, divide. A rate of null means no rate is available for that currency right now.
  • Rates are indicative market rates. They refresh about once a minute and don’t include fees.
  • You can call this endpoint once per minute per account. Further calls in the same minute get 429 with a Retry-After header. To show several bases, make one request and divide: the rate from A to B is rates[B] / rates[A].
  • Team members need the Currency Exchange → view permission.
  • An unsupported base returns 422 with the allowed values. 503 means rates are temporarily unavailable.
See Get Market Rates for the full reference.

Get a Locked Quote for Send Money

For sending money specifically (rather than wallet payouts), use the dedicated send money quote endpoint which also returns a quote_id:

Complete Quote Workflow


Fee Breakdown

The calculator.fee_breakdown object contains two fee components: Always display payout_data.customer_total_amount_due to the customer — this is the exact amount that will be debited from their wallet.

Rate Limits

POST /exchange-rate is limited to 30 requests per minute per API key. Cache quotes client-side for display rather than calling on every user keystroke. GET /exchange-rates is limited to 1 request per minute per account. Its rates only refresh once a minute.