eu-vat-rates-data
v2026.2.27
Published
EU VAT rates for all 27 member states + UK. Checked daily from EC TEDB, published automatically when rates change.
Maintainers
Readme
eu-vat-rates-data
EU VAT rates for all 27 EU member states plus the United Kingdom, sourced from the European Commission TEDB. Checked daily, published automatically when rates change.
- Standard, reduced, super-reduced, and parking rates
- TypeScript types included — works in Node.js and the browser
- JSON file committed to git — full rate-change history via
git log - Checked daily via GitHub Actions, new npm version published only when rates change
Available in 5 ecosystems:
| 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 |
Installation
npm install eu-vat-rates-data
# or
yarn add eu-vat-rates-data
# or
pnpm add eu-vat-rates-dataUsage
TypeScript / ESM
import { getRate, getStandardRate, getAllRates, isEUMember, dataVersion } from 'eu-vat-rates-data'
// Full rate object for a country
const fi = getRate('FI')
// {
// country: 'Finland',
// currency: 'EUR',
// standard: 25.5,
// reduced: [10, 13.5],
// super_reduced: null,
// parking: null
// }
// Just the standard rate
getStandardRate('DE') // → 19
// Type guard
if (isEUMember(userInput)) {
const rate = getRate(userInput) // type: VatRate (never undefined)
}
// All 28 countries at once
const all = getAllRates()
Object.entries(all).forEach(([code, rate]) => {
console.log(`${code}: ${rate.standard}%`)
})
// When were these rates last fetched?
console.log(dataVersion) // e.g. "2026-02-25"CommonJS
const { getRate, isEUMember } = require('eu-vat-rates-data')
console.log(getRate('FR').standard) // 20Direct JSON — always the latest data
# Served directly from GitHub CDN:
https://cdn.jsdelivr.net/gh/vatnode/eu-vat-rates-data-js@main/data/eu-vat-rates.json
# Raw GitHub (always latest commit):
https://raw.githubusercontent.com/vatnode/eu-vat-rates-data-js/main/data/eu-vat-rates.jsonconst res = await fetch(
'https://cdn.jsdelivr.net/gh/vatnode/eu-vat-rates-data-js@main/data/eu-vat-rates.json'
)
const { rates } = await res.json()
console.log(rates.DE.standard) // 19Data structure
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
}reduced may contain rates for special territories (e.g. French DOM departments, Azores/Madeira for Portugal, Canary Islands for Spain). All values come verbatim from EC TEDB.
Country codes
Standard ISO 3166-1 alpha-2, with one EU convention: Greece is GR (TEDB internally uses EL, which this package normalises).
Example JSON entry
{
"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
}
}
}Data source & update frequency
Rates are fetched from the European Commission Taxes in Europe Database (TEDB) via its official SOAP web service:
- WSDL:
https://ec.europa.eu/taxation_customs/tedb/ws/VatRetrievalService.wsdl - Refreshed: daily at 07:00 UTC
- Published: new npm version only when actual rates change (not on date-only updates)
- History:
git log -- data/eu-vat-rates.jsongives a full audit trail of VAT changes across the EU
To manually trigger a refresh, go to Actions → Run workflow.
To run locally:
git clone https://github.com/vatnode/eu-vat-rates-data-js.git
cd eu-vat-rates-data
pip install requests
python3 scripts/update.pyCovered countries
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
License
MIT
