Why banks, Google, and FX APIs show different exchange rates
The rates can differ even when nobody is wrong. A reference rate, a card rate, and a dealer quote answer different questions.
A number shown by Google, a bank, and an FX API is often a different kind of rate at a different moment. Compare the source, timestamp, direction, spread, and any separate fee before treating two numbers as a disagreement.
Different numbers answer different questions
A search result usually answers: what is a recent market reference for this pair? A bank or card provider answers: what amount will we give or take if you make this transaction? An FX API can answer either question, depending on its source and product. Those are different jobs, so the numbers need not match.
The first distinction is between an indicative rate and an executable quote. An indicative rate describes the market for display, analysis, reporting, or conversion estimates. An executable quote is a specific counterparty's price for a transaction. It includes a bid/ask spread, often a minimum amount, and sometimes an expiry measured in seconds.
Where the difference comes from
The spread is the gap between a dealer's buy and sell prices. Some providers show it inside the exchange rate. Others show a market-looking rate and add a separate service fee. A lower-looking fee does not prove the conversion is cheaper until both parts are included.
Time and source matter as much as the number
Foreign exchange moves through the trading week. Two services can both publish a valid EUR/USD reference rate and still differ because one refreshed moments ago while another publishes a daily fix. The European Central Bank's reference rates are published once per business day; they are useful for a consistent daily reference, but they are not an intraday trading quote.
Pair direction is another easy source of apparent disagreement. USD/IDR and IDR/USD are reciprocals. If one provider rounds early and another shows more precision, converting one direction back into the other will not produce the same displayed value.
source, market_session, and data_updated_at so an application can show whether it is reading a live indicative rate or a daily reference rate.How to compare providers fairly
- Confirm that both prices use the same pair direction and the same amount.
- Check the timestamp and whether either rate is a daily reference rather than an intraday observation.
- Separate the quoted rate from any fixed or percentage fee.
- Use the final amount delivered for a payment comparison, not the headline rate alone.
- For data work, record the source and update time with every observation.
Choose the rate that matches the job
Use an indicative rate for a dashboard, accounting reference, historical analysis, price display, or a pre-payment estimate. Use a bank, broker, or payment processor quote when you need to settle a payment or execute a trade. Neither is a substitute for the other.
For an application that needs a current reference rate, start with the live EUR/USD page and preserve the source and market_session fields in your own interface. Indicative versus executable FX rates explains the boundary in more detail, and how to read source and session covers the metadata.