What the mid-market rate is — and why nobody gives it to you
The mid-market rate is the midpoint between the prices at which banks buy and sell a currency. It is the fairest single number for comparing currencies, and it is what this converter shows, but it is not a rate anyone trades at as a customer. The institutions that publish reference rates say so plainly. The European Central Bank publishes its rates “for information purposes only” and says “using the rates for transaction purposes is strongly discouraged”; the Bank of Canada says its rates “do not necessarily reflect the rates at which actual market transactions have been or could be conducted”; and the Bank of England calls its own figures “not official rates”. Even XE, whose converter shows the mid-market rate, tells visitors “You won’t receive this rate when sending money”.
So the converted amount tells you what money is worth, not what a bank, card or transfer service will hand you. The difference between the two is the price of the exchange.
Why your bank, card or transfer app gives a different rate
| Where the rate comes from | How it is set | What it costs |
|---|---|---|
| Mid-market / reference rate | Published by central banks once a day; this converter blends them | Nothing — but you can’t trade at it |
| Bank transfer | The bank’s own rate | A margin in the rate, often a fee too; banks are the costliest channel for sending money abroad |
| Card payment abroad | The card network converts at its daily rate (Visa: “from the range of rates available … in wholesale currency markets”) | Your bank may add a foreign transaction fee, usually a percentage |
| “Pay in your home currency?” at a till or ATM | The shop’s or ATM operator’s rate (dynamic currency conversion) | A markup chosen by the merchant’s provider; the card network’s rate no longer applies |
| Money-transfer app | Its own rate, sometimes a promotional rate for a first transfer | A margin, a fee or both; a promotional rate may cover only the first transfer (Remitly’s covered the first $1,500) |
| Cash at an airport or bureau | The bureau’s buying and selling rates | The gap between them — measure it with “Was your rate fair?” |
Sending money home shows the scale. The World Bank tracks the cost of sending $200 abroad: in the third quarter of 2025 it averaged 6.36%, according to the UN’s progress report on the Sustainable Development Goals. By channel, at the end of 2024 banks averaged 13.4%, post offices 6.9%, money transfer operators 5% and mobile operators 1.2%. The UN target is under 3% by 2030, with no route above 5%. Since 1 January 2026 the US also charges a 1% tax on certain remittance transfers (IRS Notice 2025-55).
People sending money home measure the gap themselves. On r/nri one user compared Google’s 90.40 rupees per dollar with a bank’s 92.06 TT selling rate, a 1.8% difference; on r/pakistan another found Payoneer paying 270 rupees per dollar when the market rate was about 280, 3.6% less. Some apps also add a margin at weekends: Revolut, for example, charges 1% on its Standard plan between 17:00 ET on Friday and 18:00 ET on Sunday. A provider that advertises “no fee” can still charge in the rate — compare the amount that arrives, not the fee.
Was your rate fair? Work out the markup
Take what you handed over and what arrived, and compare it with the reference rate for the same day: markup = (reference amount − amount received) ÷ reference amount. If $1,000 should have been €892.26 at the 16 October 2026 reference rate and €870 arrived, the exchange cost €22.26, or 2.5%. The “Was your rate fair?” box in the converter does this for you, in either direction, and in “On a date” mode it uses that day’s rate.
Two cautions. The reference rate is fixed once a day while the market moves: when we checked at 10:14 UTC on 16 October 2026, the latest daily USD to EUR reference rate was 0.49% away from the live market, so a gap of a fraction of a percent can be timing alone. And the law already makes some providers do this sum for you. In the EU, card payments and withdrawals in another currency must show the conversion charge “as a percentage mark-up over the latest available euro foreign exchange reference rates issued by the European Central Bank” (Regulation (EU) 2021/1230, Article 4). In the US, remittance providers must disclose the exchange rate, fees and the amount the recipient will get before you pay, and you can cancel within 30 minutes for a full refund if the money hasn’t been picked up or deposited (Regulation E, §1005.31 and §1005.34).
“Pay in your currency or the local one?” Dynamic currency conversion
When a card terminal or cash machine abroad offers to charge you in your own currency, the shop’s or ATM operator’s provider does the conversion at a rate it chooses. Mastercard’s own converter warns: “If your transaction is converted by the merchant or ATM operator, Mastercard currency conversion rates will not apply. This will usually occur when you select to pay in your card’s currency.” Visa’s rules require the merchant to tell you the option is optional, not to pre-select it, and to print any “commission, fees, markup, or margin” on the receipt. Choosing the local currency lets your card network convert instead — then compare the result here.
The screens are where people get caught. A traveller in Madeira pressed “Accept Conversion” thinking it meant “are you sure?”; travellers in Mexico and Italy report cashiers choosing dollars for them. One Lisbon receipt posted on r/travel showed a €33.98 bill charged as $39.50 — an implied 1.1624 dollars per euro, 5.0% above that day’s reference rate of 1.1067. At a cash machine, declining the machine’s conversion normally lets the withdrawal go ahead in the local currency.
Cash, airports and buy and sell rates
A bureau quotes two prices — what it pays for a currency and what it charges for it — and they are not each other’s reverse: the gap between them is its margin, and you pay it twice if you change money there and back. Travellers’ own figures show how wide it can be. One handed over €155 at an airport booth in October 2023 and received $136; at that day’s reference rate of 1.0565 the euros were worth $163.76, so the booth kept 16.6%. Another bought dollars from Travelex at one pound per dollar and was offered about half that to sell them back eight days later. Exchange offices may also pay less for small or old notes. Enter what you handed over and what you received in “Was your rate fair?” to put a number on any quote.
Converting on a past date — and which rate to use for taxes
Switch to “On a date” and the tool becomes a currency converter by date, at the rate of any day from 4 January 1999: an invoice date, a purchase, a payslip. The result also shows what the same amount is worth today. On 17 October 2016 one US dollar bought 66.80 Indian rupees; on 16 October 2026 it bought 94.99.
Historical rates differ by source and time of day. For 15 March 2024, USD to EUR was 0.91728 in this converter’s blend, 0.91811 from the European Central Bank, 0.918454 at XE (which fixes its historical tables at 16:00 UTC) and 0.918863 at x-rates. None of them is wrong; they were taken at different moments by different methods. That is why tax authorities care more about consistency than about one official figure:
- The IRS says: “In general, use the exchange rate prevailing (i.e., the spot rate) when you receive, pay or accrue the item” — and “The Internal Revenue Service has no official exchange rate. Generally, it accepts any posted exchange rate that is used consistently.” It also publishes yearly average rates.
- HMRC tells taxpayers to convert foreign income “using the exchange rate at the time the income arose”, and publishes monthly rates for customs and VAT.
- Frankfurter, the rate service behind this converter, advises checking blended figures against the publishing bank’s own rate for tax, accounting or legal work. The “Where this rate comes from” panel lists each bank’s figure for the date.
For expense claims, answers on Personal Finance & Money Stack Exchange point out that a card payment’s cost is the amount on your statement, whatever the reference rate said — attach the statement. And for invoices in a foreign currency, agree up front whose rate and which date apply.
Where these rates come from
Rates come from Frankfurter, an open-source service that collects the reference rates of about a hundred central banks and official bodies — including the ECB, the Bank of Canada, the Federal Reserve (via its H.10 release), Mexico’s Banxico and Colombia’s Banco de la República — plus the IMF and the BIS. It turns them into one rate per pair: it rebases every source to a common currency, drops sources that disagree sharply with the rest, and takes an average that gives full weight to figures up to three days old and less to older ones. Sources that publish only weekly or monthly are left out.
Each bank fixes its rate in its own way. The ECB publishes at around 16:00 CET after a 14:10 CET concertation between central banks; the Bank of Canada averages quotes taken every minute from 8:00 to 16:00 Eastern time and publishes by 16:30; the Federal Reserve’s H.10 rates are noon buying rates in New York, released weekly; the Bank of England observes London rates around 4pm. Because the blend uses what each bank has published, there is a figure for every calendar day, including weekends, built from the latest available rates.
One exception: for the Hong Kong dollar this converter uses the ECB’s rate alone. On 16 October 2026 the blend gave 7.854 HKD per US dollar — outside Hong Kong’s official band — because one off-market quote slipped through; the ECB gave 7.8473.
Pegged, fixed and multiple-rate currencies
| Currency | Arrangement | Source |
|---|---|---|
| Hong Kong dollar (HKD) | Linked to the US dollar since 1983, within HK$7.75–7.85 | Hong Kong Monetary Authority |
| UAE dirham (AED) | Pegged at 3.6725 per US dollar | Central Bank of the UAE |
| Saudi riyal (SAR) | Pegged at 3.75 per US dollar | Saudi Central Bank |
| CFA francs (XOF, XAF) | Fixed at 655.957 per euro | Banque de France, BCEAO |
| CFP franc (XPF) | 1,000 francs = €8.38 (about 119.33 per euro) | IEOM |
| Convertible mark (BAM) | Fixed at 1.95583 per euro | Central Bank of Bosnia and Herzegovina |
| Danish krone (DKK) | Within ±2.25% of 7.46038 per euro (ERM II) | Danmarks Nationalbank |
| Bulgarian lev (BGN) | Replaced by the euro on 1 January 2026, at 1.95583 per euro | European Central Bank |
| Cuban peso (CUP) | Several official rates: 24, 120 and 716 per US dollar on 16 October 2026 | Banco Central de Cuba |
| Argentine peso (ARS) | A band regime since 11 April 2025, with personal currency controls lifted | Banco Central de la República Argentina |
For a pegged currency the converted figure barely moves; for currencies with more than one official rate, check which one applies to you. The converter shows a note whenever you pick one of these.
How this converter compares with XE, Google, OANDA and bank converters
- XE shows a mid-market rate updated during the day, with a timestamp, and says you won’t receive it when sending money.
- Google gets its currency prices from Morningstar and says it “cannot guarantee the accuracy of the exchange rates displayed”.
- OANDA says its converter uses a daily average of the bid and ask rates it receives from many sources.
- The Bank of Canada converts to and from Canadian dollars only, at its daily average rate published by 16:30 ET.
- Visa and Mastercard calculators show their card networks’ rates for a transaction date — the rate your card payment is likely to use, before any bank fee.
- Money-transfer apps show the rate they will give you, which includes their margin.
This converter is a daily reference, not a live feed: use it to know what an amount is worth, to convert at a past date, and to check what a quote really costs. If you need a live price for trading, use a trading platform.
Currency codes and decimals
Every currency has a three-letter ISO 4217 code, maintained by the Swiss exchange operator SIX. The code also fixes how many decimals the currency uses: most use two, but the Japanese yen, South Korean won and Vietnamese dong use none, and the Kuwaiti dinar and Bahraini dinar use three — which is why ¥15,814 has no cents here. Codes change: the Croatian kuna (HRK) went in 2023 and the Bulgarian lev (BGN) in 2026, both replaced by the euro, while the Zimbabwe Gold (ZWG) and the Caribbean guilder (XCG) are new.
Adding a currency converter to a website or app
Developers on r/webdev and Stack Overflow keep running into the same problems: a free rate API that disappears, a quota that works in testing and fails in production, a free plan locked to US-dollar rates, and rounding that turns 0.000080 into 0.0001 for a small-unit currency such as the Indonesian rupiah. Frankfurter, which this page uses, needs no key and says it has “no quotas or monthly caps”; its blended rates are its own calculation, and it suggests querying a single provider for official reference rates. Daily rates change once a day, so cache them, round with the currency’s ISO 4217 decimals, and store the rate and its date with each transaction so a refund can use the same figure.
The currency market in numbers
Currency trading averaged $9.6 trillion a day in April 2025, up 28% in three years, according to the Bank for International Settlements’ Triennial Survey (a later BIS review put it at $9.5 trillion). The US dollar was on one side of 89.2% of all trades, the euro 28.9%, the yen 16.8%, sterling 10.2%, the renminbi 8.5% and the Swiss franc 6.4% — shares add up to 200% because every trade has two currencies. The UK, US, Singapore and Hong Kong handled 75% of it. Migrants sent home $703.6 billion to low- and middle-income countries in 2025, World Bank data show; India received $150.7 billion, Mexico $65.1 billion, the Philippines $41.6 billion, Egypt $41.5 billion and Pakistan $40.5 billion.
What is sent, and what is not
Unlike most tools on this site, this one needs data from outside: your browser asks api.frankfurter.dev for rates, sending only currency codes and, for a past date or a chart, the dates. Like any web request it reveals your IP address to that service. The amount you type is never sent — the conversion is a multiplication on your device. The privacy policy has the details.