Canonical data source for EU VAT rates — all 27 EU member states plus the United Kingdom, sourced from the European Commission TEDB. Checked daily, committed automatically when rates change.
This repository contains only the data and the update script. Language-specific packages are published separately:
| Language | Package | Install |
|---|---|---|
| JavaScript / TypeScript | npm | npm install eu-vat-rates-data |
| Python | PyPI | pip install eu-vat-rates-data |
| PHP | Packagist | composer require vatnode/eu-vat-rates-data |
| Go | pkg.go.dev | go get github.com/vatnode/eu-vat-rates-data-go |
| Ruby | RubyGems | gem install eu_vat_rates_data |
No package needed — use the JSON directly via CDN:
# jsDelivr CDN (cached):
https://cdn.jsdelivr.net/gh/vatnode/eu-vat-rates-data@main/data/eu-vat-rates-data.json
# Raw GitHub (always latest commit):
https://raw.githubusercontent.com/vatnode/eu-vat-rates-data/main/data/eu-vat-rates-data.json
const res = await fetch(
'https://cdn.jsdelivr.net/gh/vatnode/eu-vat-rates-data@main/data/eu-vat-rates-data.json'
)
const { rates } = await res.json()
console.log(rates.DE.standard) // 19```ts interface VatRate { country: string // "Finland" currency: string // "EUR" (or "DKK", "GBP", …) standard: number // 25.5 reduced: number[] // [10, 13.5] — sorted ascending super_reduced: number | null // null when not applicable parking: number | null // null when not applicable } ```
```json { "version": "2026-02-25", "source": "European Commission TEDB", "url": "https://taxation-customs.ec.europa.eu/tedb/vatRates.html", "rates": { "FI": { "country": "Finland", "currency": "EUR", "standard": 25.5, "reduced": [10, 13.5], "super_reduced": null, "parking": null } } } ```
- Fetched from EC TEDB SOAP API: daily at 07:00 UTC
- Committed on every run (version date always updated)
- Full audit trail: `git log -- data/eu-vat-rates-data.json`
To run locally:
```bash git clone https://github.com/vatnode/eu-vat-rates-data.git pip install requests python3 scripts/update.py ```
EU-27 member states + United Kingdom (28 countries total):
`AT` `BE` `BG` `CY` `CZ` `DE` `DK` `EE` `ES` `FI` `FR` `GB` `GR` `HR` `HU` `IE` `IT` `LT` `LU` `LV` `MT` `NL` `PL` `PT` `RO` `SE` `SI` `SK`
This repository provides VAT rates only. If you also need to validate EU VAT numbers against the official VIES database, check out vatnode.dev — a simple REST API with a free tier.
MIT
If you find this useful, a ⭐ on GitHub is appreciated.