Blog

The EU's official VAT rate database got history wrong. Here's how we caught it.

If you need EU VAT rates in code, you will probably end up at TEDB, the European Commission's Taxes in Europe Database. It is free, it is official, and it has a SOAP API that answers one useful question: what was the VAT rate in this country on this date?

We built Duty27's rate history on it. Then we checked its answers against the law, and some of them were wrong.

How a wrong rate hides

We queried TEDB for every EU country four times a year, back to 2016, and flagged every place where the rate changed between two checkpoints. Each flagged change was then checked against the national law that made it.

That catches a change TEDB reports. It cannot catch one TEDB doesn't report. If TEDB returns the same wrong number before, during and after a real change, there is nothing to flag. The data looks perfectly calm.

Two standard-rate errors

Country Date Our August 2026 import TEDB on 10 October 2026 Actual rate
Greece 1 March 2016 24% 24% 23%
Germany 1 July 2020 19% 16% 16%
Germany 1 October 2020 19% 16% 16%

Greece raised its standard rate from 23% to 24% on 1 June 2016 (Law 4389/2016, article 52). TEDB reports 24% for the months before that too, and still did when we checked again on 10 October 2026. Any invoice, refund or correction for the first five months of 2016 that trusts TEDB uses the wrong rate.

Germany cut its standard rate from 19% to 16% for the second half of 2020 (Zweites Corona-Steuerhilfegesetz). Our August 2026 import from TEDB recorded 19% for both 1 July and 1 October 2020, so the cut was invisible to our checkpoints. When we queried the same dates again in October, TEDB returned 16%. Something changed in between. We didn't keep TEDB's raw August responses, so we can't show exactly what it sent then, and we saw no notice of a correction.

Germany has a second trap that is still there today. For those dates TEDB returns two entries marked "standard": an import VAT entry at 19% and the real 16%. Code that takes the first entry it finds gets 19%.

We found both errors by comparing against the Commission's own historical "VAT rates applied in the Member States" document, a separately compiled table that covers every member state up to 2020.

The reduced rates were worse

Reduced rates (the lower rates for things like e-books, newspapers and magazines) were noisier. These findings are from our August 2026 checks:

  • Austria's e-book rate came back as 10% and 20% at the same time for every checkpoint in 2018 and 2019.
  • A placeholder start date. Several countries' digital publication rates were dated 1 January 2018. In reality they took effect at different points, mostly in 2019 after the EU allowed reduced rates on electronic publications. The 2018 date was never a real legal event anywhere it appeared.
  • Spain was missing entirely. Spain cut VAT on electronic books, newspapers and magazines to 4% on 23 April 2020 (Real Decreto-ley 15/2020). TEDB had no data for those categories at all.

Of the 34 country and category combinations we investigated, 21 needed a correction: a wrong rate, a wrong date, or a rate that never existed.

Why it matters

VAT is due at the rate that applied on the date of the sale. A current-rates table can't answer that, and a historical table is only as good as its history. The dates that need it most are the old ones:

  • a refund or credit note for a sale made before a rate change,
  • a correction to an OSS return from an earlier quarter,
  • a tax audit asking you to show that the rate you charged was right on the day.

What we do now

  • Every rate change cites its source. Each change in Duty27's data points to the law or the tax authority statement we actually read, and the build fails if a change has no source. You can see them on the EU VAT rate history page.
  • TEDB is a starting point, not the answer. We use it to find candidate changes, then confirm each one against the law or another independent source.
  • The data is free to use. The full standard-rate history since 2016 is available as CSV and JSON, with a source for every change.

If you use TEDB yourself

  1. Treat it as a lead, not a source. The Commission itself describes the database as information supplied by the member states, not a reference for legal purposes.
  2. Check for conflicting values on the same date, not only for changes between dates. That is how the Austria and Germany problems show up.
  3. Keep the raw responses. We didn't save TEDB's raw August answers, so for Germany we can show what our import recorded, but not exactly what TEDB sent. Store them, and you can prove what the source said on the day.
  4. Cite every change to the law that made it. When a source disagrees with the law, the law wins.

Get an API keyRead the docs

General information, not tax advice. Confirm your own situation with a tax adviser or your tax authority.