The rate a tax office or customs service tells you to use is not the market rate, and the gap grows with how long that rate stays fixed. Across 213 business days in 2026, the median table that publishes daily sat 0.29% from the market. Weekly and fortnightly tables sat 0.63% away, and monthly and quarterly tables 1.13%. The widest single day was 6.6%, on a New Zealand customs rate printed to two decimals.
What the 16 tables show
| Table | Cadence | Official, 30 Oct | Market, 30 Oct | Gap, 30 Oct | Mean gap, 2026 | 95th percentile | Widest |
|---|---|---|---|---|---|---|---|
| Bank of Canada (CAD per USD) | Daily | 1.3960 | 1.3969 | -0.06% | 0.10% | 0.29% | 0.47% |
| Turkey central bank (TRY) | Daily | 49.8644 | 49.9476 | -0.17% | 0.06% | 0.21% | 0.42% |
| Brazil PTAX, sell (BRL) | Daily | 5.4212 | 5.4325 | -0.21% | 0.24% | 0.62% | 1.57% |
| Philippines BSP reference (PHP) | Daily | 63.8520 | 63.6797 | +0.27% | 0.33% | 0.97% | 1.66% |
| Switzerland customs (CHF) | Daily | 0.8366 | 0.8230 | +1.66% | 1.00% | 1.83% | 3.54% |
| South Africa customs (ZAR) | Daily | 16.8523 | 16.6895 | +0.98% | 1.45% | 2.20% | 3.40% |
| Singapore customs (SGD) | Weekly | 1.2781 | 1.2784 | -0.02% | 0.35% | 0.98% | 1.75% |
| Philippines customs (PHP) | Weekly | 63.4190 | 63.6797 | -0.41% | 0.62% | 1.68% | 2.90% |
| Indonesia kurs pajak (IDR) | Weekly | 18,032 | 18,148 | -0.64% | 0.63% | 1.36% | 2.02% |
| Japan customs (JPY) | Weekly | 158.26 | 157.25 | +0.64% | 1.05% | 3.05% | 4.14% |
| New Zealand customs (NZD) | Fortnightly | 1.8182 | 1.7743 | +2.47% | 2.25% | 5.76% | 6.64% |
| UK HMRC (GBP) | Monthly | 0.7432 | 0.7463 | -0.42% | 1.06% | 2.23% | 3.66% |
| EU InforEuro (EUR) | Monthly | 0.8807 | 0.8951 | -1.61% | 1.13% | 2.47% | 2.86% |
| Ireland customs (EUR) | Monthly | 0.8763 | 0.8951 | -2.09% | 1.33% | 2.55% | 3.12% |
| US Treasury reporting (EUR) | Quarterly | 0.8810 | 0.8951 | -1.57% | 1.14% | 2.33% | 2.63% |
| Norway customs (NOK), 22 days | Fortnightly | 9.5650 | 9.2302 | +3.63% | 2.14% | 3.16% | 3.63% |
Rates are units of the table currency per US dollar. The gap is official divided by market, minus one. A plus sign means the official rate is higher than the market. The Norway table holds only 22 days because its history starts on 1 October 2026, so it stays out of the cadence medians.
Cadence explains most of the gap
A daily table is reset every business day, so it can only drift between the moment the authority takes its quote and the moment the market fixing used here is taken. Canada, Turkey, Brazil and the Philippine central bank stayed under 0.35% on average.
A weekly or monthly table is a snapshot that stays in force while the market moves. HMRC sets one rate per calendar month, and the mean gap on a typical day was 1.06%. The worst day was 3.66%. Singapore is the exception among weekly tables at 0.35%. Singapore Customs uses the weekly average of the previous week.
Three tables do not follow cadence. Switzerland and South Africa publish daily but sat above the market on 98% and 99% of days, by +0.98% and +1.44% on average. A timing lag would push the gap both ways, so the one-sided pattern points to something in how the rate is set; we have not established what. New Zealand customs publishes the US dollar rate as 0.55, to two decimals, and it sat above the market on 89% of days.
What counts as official and what counts as market
An official rate is one that a government body publishes and a rule tells you to use: a tax office, a customs service, a central bank or a treasury. Each table has an authority, a publishing schedule and a legal basis, and the API returns all three. Customs and tax rates are fixed for a period by regulation. A central bank rate such as the Bank of Canada daily average is published for statistical use, and a law or a contract may adopt it.
The market reference here is the euro reference rate that the European Central Bank publishes each business day at about 14:15 Central European Time, crossed to each currency through the US dollar. It is a single daily observation of the market. Any official table taken at another hour, or averaged over a week, will differ from it for that reason alone.
How we measured
- Sample. All 213 business days from 2 January to 30 October 2026 on which the ECB published a euro-dollar rate.
- Official side. For each day, the rate in force from the table: the latest publication whose start date is on or before that day. Pulled from
/v1/officialon 2 November 2026. - Market side. The ECB reference rate for the table currency divided by the ECB reference rate for the dollar.
- Gap. Official divided by market, minus one, per day. The mean is the average of the absolute daily gaps.
- Tables used. Only tables with a public page, either under official rates or a localized page (Turkey, Indonesia, Japan), and only where the ECB publishes the currency.
Left out: Colombia and Sri Lanka, because the ECB does not publish those currencies. Australia, because its table does not quote the US dollar. The US IRS yearly average, because it covers a whole year. The Norway table appears for 30 October only.
Which rate to use
Use the official rate when the rule names it. A customs declaration in Japan, an import VAT figure in Switzerland and a corporate tax return in Indonesia each state the table and the date. The official rate guide for an invoice or customs date walks through that choice.
Use a market rate to judge what a transaction was worth. The Indonesia kurs pajak guide shows the same comparison for one country. For invoicing in a currency with a wide gap, record both: the official rate for the filing and the market rate for your own books.
Pull both numbers from the API
The official rate for one pair, no key needed. On 2 November 2026 it returned the Indonesian tax rate published on 28 October, valid to 3 November:
curl "https://api.exchangerate.dev/v1/official/IDN/tax/rate/USD/IDR"{"date":"2026-10-28","base":"USD","quote":"IDR","rate":18032.0,"valid_to":"2026-11-03","method":"published"}The market rate for the same pair at the same moment returned 18,134.06, 0.56% above the official figure:
curl "https://api.exchangerate.dev/v1/latest/USD?symbols=IDR"{"result":"success","base":"USD","source":"live","market_session":"open","timestamp":"2026-11-02T11:22:50Z","rates":{"IDR":18134.06},"notice":"Indicative rates, not for settlement."}Past official dates open on the Basic plan. The MCP server carries the same data through get_official_rate, so an assistant can fetch the official figure and say which authority published it.
Limits of this comparison
- One market reference, taken once a day, is a proxy. An intraday market series would show different gaps for daily tables.
- The sample is one year of 2026 and 16 tables. Gaps change with volatility, so a calm year shows smaller ones.
- Rates here are indicative. They are not a statement of what a bank would have charged.
Sources: the official rates API and the euro reference rates published by the European Central Bank. Figures were computed on 2 November 2026.