BYTETOOLS

HMRC Monthly Exchange Rates API

Free HMRC monthly exchange rates for UK customs and VAT: one fixed rate per currency per month, published as CSV, XML and JSON. No key, tested example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the HMRC Monthly Exchange Rates API?

HMRC publishes the monthly exchange rates used for UK customs declarations and VAT as free downloadable files with no key. Each file holds one fixed rate per currency for the whole calendar month.

This is a rate with a specific legal job. HMRC fixes one rate per currency per month and it applies to every customs declaration and VAT calculation in that month regardless of what the market did in between. Using a live market rate where HMRC's monthly rate applies produces figures that will not reconcile with a submitted declaration, so treat this as a compliance input rather than an FX feed.

The direction of the quote is the thing to check. The column is headed `Currency Units per £1`, so 4.9091 for the dirham means 4.9091 dirhams buy one pound — you **divide** a foreign amount by this to get sterling. Files are addressed by month as `monthly_csv_YYYY-M.csv`, where the month has **no leading zero**: August 2026 is `2026-8`, not `2026-08`. XML and JSON variants of the same data live at sibling paths.

Quick facts

Base URL
https://www.trade-tariff.service.gov.uk/api/v2/exchange_rates
Authentication
No key or registration. Published by HMRC as part of the UK Trade Tariff service.
Rate limit
No documented limit. Files change once a month.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the HMRC Monthly Exchange Rates API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. HMRC monthly exchange rates for August 2026

GET https://www.trade-tariff.service.gov.uk/api/v2/exchange_rates/files/monthly_csv_2026-8.csv

curl
curl 'https://www.trade-tariff.service.gov.uk/api/v2/exchange_rates/files/monthly_csv_2026-8.csv'
JavaScript (fetch)
const res = await fetch("https://www.trade-tariff.service.gov.uk/api/v2/exchange_rates/files/monthly_csv_2026-8.csv");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://www.trade-tariff.service.gov.uk/api/v2/exchange_rates/files/monthly_csv_2026-8.csv", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
Country/Territories,Currency,Currency Code,Currency Units per £1,Start date,End date
Abu Dhabi,Dirham,AED,4.9091,01/08/2026,31/08/2026
Albania,Lek,ALL,109.7955,01/08/2026,31/08/2026
Algeria,Dinar,DZD,177.9594,01/08/2026,31/08/2026
Angola,Readj Kwanza,AOA,1224.3306,01/08/2026,31/08/2026
Antigua,E Caribbean Dollar,XCD,3.6196,01/08/2026,31/08/2026
Argentina,Peso,ARS,1975.2991,01/08/2026,31/08/2026
A

Parameters

ParameterTypeRequiredDescription
files/monthly_csv_{YYYY-M}.csvpathRequiredMonthly file. The month has no leading zero — `2026-8`, not `2026-08`. monthly_csv_2026-8.csv
files/monthly_xml_{YYYY-M}.xmlpathOptionalSame data as XML. monthly_xml_2026-8.xml
files/monthly_csv_{YYYY-M}.csv (past months)pathOptionalHistorical months are kept at the same URL pattern. monthly_csv_2025-12.csv

Response fields

Country/Territoriescolumn
Territory the currency belongs to. Several rows can share a currency code.
Currencycolumn
Currency name in HMRC's own wording.
Currency Codecolumn
ISO 4217 code — the column to key on.
Currency Units per £1column
The rate. Divide a foreign-currency amount by this to get sterling.
Start date / End datecolumn
Validity window in `DD/MM/YYYY`, normally the first and last day of the month.

What you can build with the HMRC Monthly Exchange Rates API

  • Convert invoice values for a UK customs declaration at the required rate
  • Calculate import VAT on a foreign-currency purchase
  • Populate a monthly rates table in an accounting system
  • Reconcile submitted declarations against the rate that applied that month

Common errors and how to fix them

404

The month was written with a leading zero.

Fix: The filename uses `2026-8`, not `2026-08`. This catches almost everyone the first time.

Converted amounts inverted

The quote direction was assumed backwards.

Fix: The column is units per £1, so sterling equals the foreign amount divided by the rate, not multiplied.

Duplicate currency codes

Several territories share one currency.

Fix: Deduplicate on `Currency Code` — the euro and the US dollar each appear on many rows.

HMRC Monthly Exchange Rates API — frequently asked questions

What are HMRC monthly exchange rates for?

They are the rates HMRC requires for customs declarations and VAT calculations. One rate per currency applies for the whole calendar month, regardless of market movement within it.

Is there an API key?

No. The files are published openly through the UK Trade Tariff service in CSV, XML and JSON with no key or registration.

Which direction is the rate?

Currency units per £1. To convert a foreign amount to sterling, divide by the rate. Multiplying gives you a figure that will not match a declaration.

Why does my URL 404?

Almost certainly a leading zero in the month. The filename pattern is `monthly_csv_2026-8.csv` — single-digit months have no padding.

Tools that pair with this API

HMRC Monthly Exchange Rates is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.