EU VAT Rates 2026: Standard & Reduced Rates for All 28 Countries
Complete 2026 VAT rate table for all 27 EU member states and the United Kingdom: standard and reduced statutory rates, an explicit effective-year stamp, and the national VIES validator for every jurisdiction. This specification documents the exact field layout, checksum rules, and validation behavior so your integration matches EU Council Directive 2006/112/EC without reading the source standard.
⚡ Live EU VAT Rates 2026: Standard & Reduced Rates for All 28 Countries Interactive Workbench
Test real-time validation and schema parsing for EU VAT Rates 2026: Standard & Reduced Rates for All 28 Countries directly in your browser. Runs in sub-5ms with zero setup.
{
"status": "Click RUN VALIDATION to execute on the Cloudflare edge..."
}
Quick Summary: Complete 2026 VAT rate table for all 27 EU member states and the United Kingdom: standard and reduced statutory rates, an explicit effective-year stamp, and the national VIES validator for every jurisdiction. Validates strictly against EU Council Directive 2006/112/EC with sub-5ms in-memory response times.
Specification & Structural Breakdown
Technical Summary: Validates strictly against EU Council Directive 2006/112/EC. Payloads are parsed in memory and return clean, typed JSON in milliseconds with zero data logged.
Value Added Tax across the European Union is governed by Council Directive 2006/112/EC, which sets a minimum standard rate of 15% and a minimum reduced rate of 5%. Each member state sets its own statutory rates within those floors, while the United Kingdom applies its own regime.
For 2026 the standard rate ranges from 17% in Luxembourg to 27% in Hungary. Reduced rates apply to qualifying supplies such as food, medicines, books, and passenger transport, and range from zero-rated categories to rates close to the standard rate.
Rates are a maintained 2026 snapshot with an explicit effective year. Recent statutory changes include Romania moving to 21% in August 2025, Estonia to 22%, and Finland to 25.5%; confirm the rate in force on the invoice date before billing.
Every jurisdiction below has a dedicated VIES validator page with its national number format, checksum algorithm, and the same rate lookup, available programmatically from GET /api/v1/vat/rates/{country}.
| Country | Code | 2026 Standard Rate | Reduced Rates |
|---|---|---|---|
| Austria | AT | 20% | 10%, 13% |
| Belgium | BE | 21% | 6%, 12% |
| Bulgaria | BG | 20% | 9%, 5% |
| Cyprus | CY | 19% | 9%, 5% |
| Czechia | CZ | 21% | 12% |
| Germany | DE | 19% | 7% |
| Denmark | DK | 25% | None |
| Estonia | EE | 22% | 9% |
| Greece | EL | 24% | 13%, 6% |
| Spain | ES | 21% | 10%, 4% |
| Finland | FI | 25.5% | 14%, 10% |
| France | FR | 20% | 10%, 5.5%, 2.1% |
| United Kingdom | GB | 20% | 5% |
| Croatia | HR | 25% | 13%, 5% |
| Hungary | HU | 27% | 18%, 5% |
| Ireland | IE | 23% | 13.5%, 9%, 4.8% |
| Italy | IT | 22% | 10%, 5%, 4% |
| Lithuania | LT | 21% | 9%, 5% |
| Luxembourg | LU | 17% | 14%, 8%, 3% |
| Latvia | LV | 21% | 12%, 5% |
| Malta | MT | 18% | 7%, 5% |
| Netherlands | NL | 21% | 9% |
| Poland | PL | 23% | 8%, 5% |
| Portugal | PT | 23% | 13%, 6% |
| Romania | RO | 21% | 11%, 9% |
| Sweden | SE | 25% | 12%, 6% |
| Slovenia | SI | 22% | 9.5% |
| Slovakia | SK | 23% | 19%, 5% |
Parsed JSON Response Model
The edge microservice transforms input payloads into strongly-typed hierarchical JSON envelopes with sub-5ms latency:
{
"countryCode": "DE",
"countryName": "Germany",
"standardRate": 19,
"reducedRates": [
7
],
"effectiveYear": 2026
}
Copy-Paste Integration Code (6 Languages)
Integrate EU VAT Rates 2026: Standard & Reduced Rates for All 28 Countries directly into your production application with native, zero-dependency code snippets in cURL, Node.js, Python, Go, C#, and a ready-to-paste Claude prompt. Get a free API key → (no credit card required):
curl --request POST \
--url "https://api.stanzaapi.com/vat-validator/api/v1/vat/validate" \
--header "Content-Type: application/json" \
--header "x-api-key: YOUR_API_KEY" \
--data '{
"vatNumber": "DE123456789"
}'const response = await fetch("https://api.stanzaapi.com/vat-validator/api/v1/vat/validate", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": process.env.API_KEY || "YOUR_API_KEY"
},
body: JSON.stringify({
"vatNumber": "DE123456789"
})
});
const data = await response.json();
console.log(data);import requests
import json
url = "https://api.stanzaapi.com/vat-validator/api/v1/vat/validate"
headers = {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY"
}
payload = {
"vatNumber": "DE123456789"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
)
func main() {
url := "https://api.stanzaapi.com/vat-validator/api/v1/vat/validate"
payload := []byte(`{"vatNumber":"DE123456789"}`)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(payload))
req.Header.Add("Content-Type", "application/json")
req.Header.Add("x-api-key", os.Getenv("API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", Environment.GetEnvironmentVariable("API_KEY") ?? "YOUR_API_KEY");
var json = @"{""vatNumber"":""DE123456789""}";
var payload = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.stanzaapi.com/vat-validator/api/v1/vat/validate", payload);
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
}Integrate the Stanza vat-validator micro-API.
Endpoint: POST https://api.stanzaapi.com/vat-validator/api/v1/vat/validate
Auth header: x-api-key: YOUR_API_KEY
Content-Type: application/json
Request body:
{
"vatNumber": "DE123456789"
}
Rules:
- Send the request with a 2-second timeout.
- Parse the standard envelope { success, data, meta: { latency_ms, version } }.
- On failure, read { success: false, error, code } and branch on the code.
- Do not retry 4xx responses; surface the error code to the caller.
- Treat invalid-but-well-formed payloads as HTTP 200 with data.valid === false.Frequently Asked Questions & Technical Notes
Hungary has the highest standard VAT rate in the EU at 27%, and Luxembourg the lowest at 17%. Across the full table, the United Kingdom applies a 20% standard rate.
Yes. Member states can change rates during the year: Romania raised its standard rate from 19% to 21% on 1 August 2025, and Finland moved to 25.5%. This table is a maintained 2026 snapshot with an explicit effective year; always confirm the rate in force on the invoice date.
Under Council Directive 2006/112/EC the standard rate may not be lower than 15%, and the reduced rate may not be lower than 5%. Reduced rates may apply only to the categories listed in Annex III, such as food, medicines, books, and passenger transport.
Each jurisdiction in the table links to its VIES validator page with the national format rules and checksum algorithm. The same offline validation is available from POST /api/v1/vat/validate, which returns the applicable 2026 rates alongside the validation result.
Related EU & UK VAT Validator & Rate Engine API Formats
Explore sibling specifications and standards in the same developer cluster:
Austrian VAT Number (UID) Validator & VIES Check
Instant sub-1ms offline checksum validation, syntax verification, and 2026 tax rate lookup for Austria (AT) VAT numbers.
View Format →Slovakia (SK) VAT Validator & VIES Check
Instant sub-1ms offline checksum validation, syntax verification, and 2026 tax rate lookup for Slovakia (SK) VAT numbers.
View Format →Belgian VAT Number (BTW/TVA) Validator & VIES Check
Instant sub-1ms offline checksum validation, syntax verification, and 2026 tax rate lookup for Belgium (BE) VAT numbers.
View Format →Slovenia (SI) VAT Validator & VIES Check
Instant sub-1ms offline checksum validation, syntax verification, and 2026 tax rate lookup for Slovenia (SI) VAT numbers.
View Format →Bulgarian VAT Number (ДДС / ЕИК) Check, Format & Rates 2026
Instant sub-1ms offline checksum validation, syntax verification, and 2026 tax rate lookup for Bulgaria (BG) VAT numbers.
View Format →Swedish VAT Number (Momsnr) Validator & VIES Check
Instant sub-1ms offline checksum validation, syntax verification, and 2026 tax rate lookup for Sweden (SE) VAT numbers.
View Format →Cyprus (CY) VAT Validator & VIES Check
Instant sub-1ms offline checksum validation, syntax verification, and 2026 tax rate lookup for Cyprus (CY) VAT numbers.
View Format →Număr TVA & VAT România (CIF/CUI) Validator & ANAF Check
Instant sub-1ms offline checksum validation, syntax verification, and 2026 tax rate lookup for Romania (RO) VAT numbers.
View Format →Complementary Enterprise APIs
Seamlessly orchestrate data pipelines across adjacent financial, regulatory, and supply-chain protocols:
Peppol BIS Billing 3.0 →
Validate European e-invoicing UBL XML profiles, CEN TC 434 rules, and participant IDs.
SWIFT & ISO 13616 IBAN Validator →
Strict MOD-97-10 checksum calculation and BBAN extraction across 116 national corridors.
GLEIF LEI Legal Entity Identifier →
Corroborate corporate legal entity counterparty identifiers and check digit integrity.
Factur-X & ZUGFeRD 2.3 →
Validate the hybrid e-invoice that carries the supplier and customer VAT identifiers.