exchangerate.dev publishes indicative rates: mid-market reference prices sourced from the ECB and live market data. They are suitable for reporting, dashboards, invoicing, analytics, and currency display. They are not executable quotes and every response from the API says so explicitly in the notice field.
- An indicative rate is a reference or mid-market price published for analytics, display, and accounting. It carries no commitment to trade.
- An executable rate is a dealer quote with a bid/ask spread. You can act on it to buy or sell currency.
- exchangerate.dev publishes indicative rates. Every response includes a
noticefield that states this. sourceislive,ecb_daily, ormarket_daily(stored daily market-feed close for currencies without an ECB fix).- Use indicative rates for reporting, charts, invoice conversion, and monitoring. Use a bank or PSP when you need to settle a payment or execute a trade.
Two kinds of rate
FX rates serve two distinct purposes. A reference rate is a published mid-market price. Central banks, statistical agencies, and data providers publish them so developers, accountants, and analysts have a consistent number to work with. An executable rate is a price a dealer or payment processor is prepared to honour for a specific transaction. It comes with a bid and an ask, and the spread between them is how the dealer earns their margin.
Reference rates and executable rates will rarely match exactly, and they are not meant to. The reference rate reflects where the market is, in aggregate, at a point in time. The executable rate reflects what a specific counterparty will accept right now, for a specific amount, in a specific direction.
What indicative means
Indicative is the technical term for a rate published without a commitment to trade. The provider is saying: this is what the market looks like. They are not saying: we will let you buy at this price.
exchangerate.dev publishes indicative rates. The source field in every response identifies which class of indicative data you are reading. ecb_daily is the European Central Bank's published reference fix, released once per business day around 16:00 CET. live is an indicative spot rate that updates approximately every 60 seconds through the trading week. Both are indicative.
Every response from the API carries a notice field. For live data it reads: "Indicative rates, not for settlement." For reference sources it reads: "Indicative rates, not for settlement. Source: incl. ECB statistics." This is not boilerplate; it is the accurate description of what the data is.
Reading the notice field in a response
Call /v1/latest/USD and you will see the notice alongside the rate data:
$ curl -s https://api.exchangerate.dev/v1/latest/USD \ -H "Authorization: Bearer exr_live_..."{ "result": "success", "base": "USD", "source": "ecb_daily", "market_session": "open", "timestamp": "2026-06-19T14:03:00Z", "data_updated_at": "2026-06-19T14:00:00Z", "rates": { "EUR": 0.87531, "GBP": 0.75945, "JPY": 161.412 }, "notice": "Indicative rates, not for settlement. Source: incl. ECB statistics."}The notice field is machine-readable. If you are displaying rates to end users, passing it through to your UI is good practice. It accurately frames what they are seeing.
Indicative vs executable: a direct comparison
| Dimension | Indicative (this API) | Executable (dealer / PSP) |
|---|---|---|
| What it is | Reference mid-market price | Bid/ask quote you can transact on |
| Published by | ECB, live market data | Bank, broker, payment processor |
| Spread | None; mid-market only | Bid/ask spread reflects the dealer's cost |
| Updated | ECB: once per business day; live: ~60s on trading days | Continuous, varies by provider |
| Between fixes | Live source updates intraday through the trading week; ECB frozen until next business-day fix | Continuous, varies by provider |
| Suitable for | Reporting, display, analytics, accounting | Settling payments, hedging, trading |
| Notice field | "Indicative rates, not for settlement." | Binding quote with expiry |
Public source values
The API has three source values; market_daily is for date history and daily time series. They are all indicative, but they have different update rhythms and authorities behind them.
live: indicative spot rate, updated approximately every 60 seconds through the trading week. Good for dashboards that need to reflect current market conditions rather than a prior-day fix.ecb_daily: the European Central Bank's official reference rate, published once per business day around 16:00 CET. Carries institutional authority and is the standard for many EU accounting and legal contexts.market_daily: stored daily market-feed close for currencies without an ECB fix.
The source depends on the route, currency pair, and available observations. Check source before deciding how to present a rate. data_updated_at tells you when the observation was written; timestamp tells you when the response was built.
Where indicative rates belong
Indicative rates are well-suited for a wide range of applications:
- Converting prices in an e-commerce product catalogue for display purposes
- Showing users the approximate value of a transaction before they confirm it with a payment processor
- Generating financial reports and dashboards that track currency exposure over time
- Accounting entries where the rate is recorded for bookkeeping at the time of a transaction
- Monitoring alerts that trigger when a rate crosses a threshold
- Analytics and charts built over historical rate series back to 1999
Indicative rates answer the question "what is the rate?" Executable rates answer the question "what will you give me right now if I transact?"
When you need a dealer or PSP instead
Some use cases require an executable rate. If you are building a feature where money actually changes hands, the rate used to calculate the amount must come from the party executing the transaction. Using an indicative rate in these contexts would misrepresent the actual cost to the user.
Specifically: when a payment processor or bank converts currency on a customer's behalf, the rate they apply is their own executable quote, not the mid-market reference. When a business hedges FX exposure through a forward contract, the rate agreed is an executable rate with a counterparty. When a trader executes a spot transaction, the dealing price is the rate, not any external reference.
In these cases you may still use indicative rates alongside the executable rate, for example to show users the mid-market context or to record a benchmark rate for reporting. The boundary is whether the indicative rate is being used to calculate an amount that a real party will receive or pay.
Many applications use both: indicative rates (from this API) for display and analytics, and their payment processor's rate for the actual transaction. The two numbers will differ; that gap is normal and expected.