Skip to main content
GET
Get FX rates
Merchants selling across borders need a single reference rate to price in one currency and reconcile in another. This endpoint returns Yuno’s official daily FX rate, the same reference Yuno uses for its own reporting, expressed as units of the currency per 1 USD. Around 161 currencies are published per day. USD itself is published with a rate of 1.
Enabled per organizationThis API requires activation for your organization. Contact your Key Account Manager (KAM) to enable it.

What this is, and what it is not

This is a reference rate, published once per day for a closed day. Yuno does not commit to processing or settling at it.
  • It is read-only: no quoting, no locking, no conversion applied to a payment.
  • It is not a live or intra-day rate. A day’s value is final once the daily load closes.
  • To convert an actual transaction at checkout, use Conversion Rate instead. That is a different product: a provider quote for one transaction.

Choosing what you ask for

Every parameter is optional, and the shape of the answer follows what you send: end_date is the only parameter with a companion: it cannot be used without start_date. Everything else stands alone. Range limits: up to 31 days when currency is omitted, and up to 366 days when you ask for a single currency.

The latest available day

With no dates, you get the most recent published day rather than a date you have to compute. The current day is never served — its value is not final until the daily load closes — so the newest day you can receive is yesterday (UTC). If a daily load is delayed, this is also the safe way to ask: you receive the newest day that actually exists instead of an empty answer for a day that was never published.

Reading the response

Three rules hold for every response:
  1. Sorted by fx_date, then currency.
  2. One value per currency per day. When more than one source exists for a day, the tie-break happens inside Yuno and is not part of this contract.
  3. What does not exist is simply absent. A day or a currency with no published rate is not in rates, and a range with nothing published returns 200 with an empty array — not an error. Treat an empty rates as “nothing published for what you asked”, never as a failure.
Parse rate with a decimal type.Rates carry up to 15 decimal places. 3306.859716727782946 read as a double becomes 3306.859716727783, and the difference will show up in reconciliation. Use your language’s decimal or big-number type, not a float: BigDecimal in Java, decimal.Decimal in Python, shopspring/decimal in Go, a decimal library in JavaScript rather than JSON.parse alone.

Currency codes

Codes are mostly ISO 4217, but the published set also includes codes that are not fiat currencies, such as BTC, XAU (gold) and XAG (silver). A well-formed code that Yuno does not publish is not an error: it comes back as an empty rates array.

Caching

A published day never changes, so a response for a past day can be cached indefinitely. Asking without dates is the only request whose answer moves, once per day.

Errors

Errors return a code and a messages array. The message names the parameter at fault.

Headers

PUBLIC-API-KEY
string

Your public API key.

PRIVATE-SECRET-KEY
string

Your private secret key. Never expose it client-side.

Query Parameters

start_date
string<date>

First day of the range, inclusive, as YYYY-MM-DD. Omit it to get the latest available day.

Example:

"2026-09-28"

end_date
string<date>

Last day of the range, inclusive, as YYYY-MM-DD. Only valid together with start_date, defaults to it, and cannot be later than yesterday (UTC).

Example:

"2026-09-30"

currency
string

One 3-letter currency code. Omit it to get every currency published for those days.

Required string length: 3
Example:

"COP"

Response

OK — the rates published for the requested days.

base_currency
string

Always USD in this version. Explicit so the reading is unambiguous.

Example:

"USD"

rates
object[]