Tax Authority Exchange Rates: Which Rate Customs, VAT, and Tax Filings Require
Ask a developer for "the GBP/USD rate" and you get the number the market is trading at. Ask a customs broker the same question and you get a different number — one that has not moved in three weeks and will not move for another week yet. Both are correct. Only one of them belongs on a customs declaration.
National tax and customs authorities publish their own exchange rates, fixed for a month or a quarter at a time, and where a rule names that rate, it is the only rate that counts. This guide covers what those rates are, why they are deliberately stale, how far they drift from the market, and how to pull them as JSON.
The gap is not small
Here is the HMRC rate in force for GBP/USD over the last twelve months — the green step — against the Bank of England's daily spot rate for the same pair. The steps are the point: HMRC's rate holds flat for a whole calendar month while the market moves underneath it.
/api/v1/central-bank/hmrc/history and /boe/history).At the end of October 2025 the two were 3.7% apart: the market was at 1.3139 while the rate you were required to apply was 1.3647. On a $100,000 invoice that is a declared customs value of £73,277 instead of £76,109 — a difference of about £2,832 on a single entry. Multiply by a month of entries and the "close enough" market rate stops being close enough.
Note also that the gap is not a bias you can correct for. The official rate is above the market in some months and below it in others; the only way to be right is to use the published number.
Why the rate is fixed on purpose
A stale rate looks like a bug until you consider what the number is for. A tax authority is not pricing a trade — it is producing a figure that thousands of separate filings have to agree on. When the rate is fixed for a period, an importer, their broker, and the customs authority all convert the same invoice to the same value independently. A discrepancy then means someone made a real error, rather than two systems having sampled a moving market a few hours apart.
The same logic runs through the whole compliance stack: the rate must be citable (a fixed number attached to a period), knowable (published in advance where possible), and final (it never changes retroactively). Market accuracy is explicitly traded away for those three properties.
The two we cover, and how they differ
The authorities that publish rates do it on their own schedules, and the differences matter when you integrate them.
HMRC — monthly, published ahead
HM Revenue & Customs publishes one table per calendar month, around two weeks before the month it applies to, covering roughly 140 currencies against sterling. Because it is released in advance, next month's landed costs are knowable before the month starts. Any date inside a month resolves to that month's rate, so a lookup by invoice or entry date gives the right answer with no rounding decisions of your own.
US Treasury — quarterly, amended mid-quarter
The U.S. Department of the Treasury publishes the Treasury Reporting Rates of Exchange once a quarter, dated at quarter end, for around 145 currencies. Every federal agency must use them to convert foreign-currency balances for official reports, and contractors, grant recipients, and auditors follow the same table.
The wrinkle is amendments. When a currency moves sharply mid-quarter, the Treasury reissues that currency alone — so the most recent publication date is often three rows, not a table. Reading the raw feed and taking the newest date gives you three currencies where you expected a hundred and forty-five. Our API returns the table in force instead: the quarter's rates with any later amendments already applied, each row carrying the date it was actually published.
Tax authority or central bank — which rule applies?
Not every country publishes its own tax rates. Many point their tax and customs rules at the central bank's daily reference rate instead: Poland's tax rules cite the NBP table, the Czech Republic's cite the CNB fixing, Romania's cite the BNR. Others, like the UK and the US, publish a separate compliance rate on a slower cadence.
So the question is never "which rate is more accurate" — it is "which rate does the rule name". Practically:
- UK customs and VAT — the HMRC monthly rate for the period of the declaration.
- US federal reporting — the Treasury quarterly rate in force for the reporting date.
- Most of continental Europe — the national central bank's published rate for the relevant day, which is where the central bank rates API comes in.
- Anything else — read the rule, then pick the source it names. Both kinds are served by the same endpoints here, so switching is a change of bank code.
Getting the rates as JSON
Both kinds of source use the same endpoints and the same API key. Ask for a pair with the familiar source/target parameters:
curl "https://allratestoday.com/api/v1/central-bank/hmrc/latest?source=GBP&target=USD" \
-H "Authorization: Bearer YOUR_API_KEY" Or the rate in force on a specific invoice or entry date — the response says which publication it came from, so your audit trail stays honest:
curl "https://allratestoday.com/api/v1/central-bank/hmrc/2026-03-20?source=GBP&target=USD" \
-H "Authorization: Bearer YOUR_API_KEY" There are zero-dependency npm clients per source — hmrc-exchange-rate and ustreasury-exchange-rate:
import { getRatesForDate } from 'hmrc-exchange-rate';
// Any date inside a month resolves to that month's official rate
const day = await getRatesForDate('2026-03-20', { apiKey: 'art_live_...' }); Integrating them without burning your quota
The cadence that makes these rates awkward for a dashboard makes them very cheap to integrate. A rate that is fixed for a month cannot change under you mid-month, so the right pattern is one fetch per period, cached — not one call per invoice:
- Fetch on a schedule, not per document. One request a month covers every declaration in it. A free-tier quota goes a very long way here.
- Pull HMRC's table as soon as it appears, roughly two weeks ahead, and your pricing is correct from the first of the month.
- Store the rate with the document, not just the converted figure. An auditor will ask which rate you applied and when it was published.
- For the Treasury, re-check within a quarter. Amendments land between quarter ends, and a cached quarter-end table will silently miss them.
- Never interpolate. There is no rate "between" two periods; the rate in force is the last one published on or before your date.
FAQ
What is a tax authority exchange rate?
An exchange rate published by a national tax or customs authority specifically for compliance — such as HMRC's monthly customs and VAT rates or the US Treasury's quarterly reporting rates. It is fixed for its whole period and is the rate declarations, invoices, and official reports are required to use, regardless of where the market trades in the meantime.
Can I use the market rate instead of the official rate?
Not where a rule names the official rate. Over the twelve months to August 2026 the daily GBP/USD market rate differed from the HMRC rate in force by as much as 3.7% — on a $100,000 invoice that is roughly £2,800 of declared customs value. The authority computes duty from its own published rate, so a market-rate conversion will not reconcile.
Why do tax authorities fix a rate for a month or a quarter?
So that thousands of separate filings agree. A rate fixed for a period lets an importer, their broker, and the customs authority arrive at the same figure independently — which means a discrepancy points at a real error rather than at two systems that sampled a moving market hours apart.
Is a central bank rate the same as a tax authority rate?
No. Central banks publish a reference rate every business day as part of monetary policy; tax authorities fix one rate per month or quarter as a compliance instrument. Some countries point their tax rules at the central bank rate and others publish their own — which one applies depends on the rule you are complying with, not on which is more accurate.
Official tax authority rates, as JSON
The latest tables are free — 300 requests/month, no credit card.
Get your free API key