VAT rates across the European Union are not uniform. Each member state sets its own rates within the limits defined by EU Directive 2006/112/EC. The standard rate must be at least 15%, but in practice ranges from 17% in Luxembourg to 27% in Hungary. Reduced rates, super-reduced rates, and parking rates add further complexity for developers building tax-compliant billing systems.
EU VAT Rate Types Explained
| Rate Type | Description | EU Range |
|---|---|---|
| Standard rate | Default rate applied to most goods and services | 17% – 27% |
| Reduced rate | Lower rate for socially important goods (food, books, medicine) | 5% – 15% |
| Super-reduced rate | Very low rate for essential goods, only some member states | 2.1% – 4% |
| Zero rate (0%) | No VAT charged, but input VAT is deductible | 0% |
| Parking rate | Transitional rate retained by some member states | 12% – 14% |
VAT Rates for All 27 EU Countries (2026)
| Country | Standard | Reduced | Super-Reduced |
|---|---|---|---|
| Austria (AT) | 20% | 13%, 10% | — |
| Belgium (BE) | 21% | 12%, 6% | — |
| Bulgaria (BG) | 20% | 9% | — |
| Croatia (HR) | 25% | 13%, 5% | — |
| Cyprus (CY) | 19% | 9%, 5% | — |
| Czech Republic (CZ) | 21% | 15%, 12%, 10% | — |
| Denmark (DK) | 25% | — | — |
| Estonia (EE) | 22% | 9% | — |
| Finland (FI) | 25.5% | 14%, 10% | — |
| France (FR) | 20% | 10%, 5.5% | 2.1% |
| Germany (DE) | 19% | 7% | — |
| Greece (GR) | 24% | 13%, 6% | — |
| Hungary (HU) | 27% | 18%, 5% | — |
| Ireland (IE) | 23% | 13.5%, 9% | 4.8% |
| Italy (IT) | 22% | 10%, 5% | 4% |
| Latvia (LV) | 21% | 12%, 5% | — |
| Lithuania (LT) | 21% | 9%, 5% | — |
| Luxembourg (LU) | 17% | 14%, 8%, 3% | — |
| Malta (MT) | 18% | 7%, 5% | — |
| Netherlands (NL) | 21% | 9% | — |
| Poland (PL) | 23% | 8%, 5% | — |
| Portugal (PT) | 23% | 13%, 6% | — |
| Romania (RO) | 19% | 9%, 5% | — |
| Slovakia (SK) | 20% | 10%, 5% | — |
| Slovenia (SI) | 22% | 9.5%, 5% | — |
| Spain (ES) | 21% | 10%, 4% | — |
| Sweden (SE) | 25% | 12%, 6% | — |
Look Up VAT Rates via API
Instead of hardcoding rate tables in your application, use the TaxID API to fetch current VAT rates at runtime. This ensures your billing logic always reflects the latest rates without code deployments.
# Get VAT rates for a specific country
curl https://api.taxid.dev/v1/rates?country=DE \
-H "Authorization: Bearer YOUR_API_KEY"
# Response:
# {
# "country": "DE",
# "standard_rate": 19,
# "reduced_rates": [7],
# "last_updated": "2026-01-01"
# }const res = await fetch('https://api.taxid.dev/v1/rates?country=DE', {
headers: { 'Authorization': `Bearer ${process.env.TAXID_API_KEY}` }
});
const { standard_rate, reduced_rates } = await res.json();
console.log(`Germany: ${standard_rate}% standard, ${reduced_rates.join('/')}% reduced`);Note
VAT rates rarely change, but when they do (e.g., Estonia raised its standard rate from 20% to 22% in January 2024), hardcoded values cause billing errors. Cache API responses for 24 hours and rebuild on cache miss.
Country-specific VAT rate guides
Start validating EU VAT numbers
Free plan — 100 validations/month. No credit card required.