Home Documentation Central Bank Rates Tax Authority Rates Playground Pricing API Status Blog About FAQ Contact Us

Tax Authority Exchange Rates: Which Rate Customs, VAT, and Tax Filings Require

Reviewed by Madhushan, Fintech Developer — August 2026

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.

GBP → USD — the official monthly rate versus the daily market
Aug '25 – Aug '26 · US dollars per 1 British pound
1.301.321.341.361.38Aug '25Nov '25Feb '26May '26Aug '263.7% apartHMRC rate in force (monthly)Bank of England daily spot2025-08-01: HMRC 1.3541 USD per GBP, all month2025-09-01: HMRC 1.3473 USD per GBP, all month2025-10-01: HMRC 1.3647 USD per GBP, all month2025-11-01: HMRC 1.3328 USD per GBP, all month2025-12-01: HMRC 1.3126 USD per GBP, all month2026-01-01: HMRC 1.3329 USD per GBP, all month2026-02-01: HMRC 1.3410 USD per GBP, all month2026-03-01: HMRC 1.3573 USD per GBP, all month2026-04-01: HMRC 1.3361 USD per GBP, all month2026-05-01: HMRC 1.3502 USD per GBP, all month2026-06-01: HMRC 1.3399 USD per GBP, all month2026-07-01: HMRC 1.3404 USD per GBP, all month2026-08-01: HMRC 1.3367 USD per GBP, all month
Sources: HM Revenue & Customs monthly rates and Bank of England daily spot rates · chart data from the AllRatesToday API (/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:

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:

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

Related Articles