EU VAT rates API

A VAT rates API returns, for a member state, the rates it applies, so that a checkout, an invoice or an OSS return can be computed without a hand-kept table. Veriport returns the standard, reduced, super-reduced and parking rates of the 27 member states, the rate for seven usual categories (digital services, e-books, printed books, food, hotels, restaurants, newspapers), and on every row the day it was verified (table verified 2026-10-24, next review 2026-11-24) and the official pages it was read from. No other rates API dates and sources its rows.

· Reviewed monthly: last read 2026-10-28, next review 2026-11-24

The answer, field by field

France:

FieldWhat it says
country, name, currencyThe member state (EL for Greece) and its currency.
standard, reduced[], superReduced, parkingThe rates in percent; null where a kind does not exist in that state.
hints[]Per category: rate, kind (standard, reduced, super_reduced, zero), since when it changed recently, note where the category splits.
verifiedOnThe day this row was last read against the sources; the oldest row of the table is what the docs call "table verified".
sources[]The official pages this row was read from, with the day they were consulted.
noteTerritories outside the table (Corsica, the Canary Islands, Madeira…) and other caveats.
200 OK · GET /vat/rates/FR
{
  "country": "FR",
  "name": "France",
  "currency": "EUR",
  "standard": 20,
  "reduced": [
    5.5,
    10
  ],
  "superReduced": 2.1,
  "parking": null,
  "hints": [
    {
      "category": "digital_services",
      "rate": 20,
      "kind": "standard"
    },
    {
      "category": "ebooks",
      "rate": 5.5,
      "kind": "reduced"
    },
    {
      "category": "newspapers",
      "rate": 2.1,
      "kind": "super_reduced"
    }
  ],
  "verifiedOn": "2026-10-24",
  "sources": [
    {
      "title": "VAT rates applied in the Member States of the European Union",
      "url": "https://taxation-customs.ec.europa.eu/taxation/vat/vat-rates_en",
      "consulted": "2026-10-24"
    }
  ],
  "note": "Corsica and the overseas departments apply other rates (not in this table)."
}

By category, across the Union

GET /vat/rates?category=ebooks returns the e-book rate of every member state in one call, the usual question of a digital seller under OSS; the same for digital_services, printed_books, foodstuffs, hotel_accommodation, restaurant, newspapers.

curl — one category, 27 rows
curl "https://veriport.io/api/v1/vat/rates?category=ebooks"

No upstream, a review instead of a degraded path

The table is in the service: nothing is fetched at request time, so the endpoint cannot be down because an administration is. What can be wrong is the table, which is why every row is dated, sourced and reviewed monthly, and why a change is announced in the changelog with the row it moved. The method is written on its own page.

The same call in six languages

One GET, the key optional for the first 20 calls a day.

curl
curl "https://veriport.io/api/v1/vat/rates/FR"
# with a key, once you have one:
# curl -H "Authorization: Bearer vp_live_YOUR_KEY" "https://veriport.io/api/v1/vat/rates/FR"

Price per 1,000 calls, against the named alternatives

Competitors’ figures are read from their public pricing pages on 2026-10-28 at full use of the included volume; a range means several tiers. Ours include the tax of your country, charged by Stripe as merchant of record.

OfferPriceIncludedPer 1,000Billing
vatlayer, Abstract, VATSensemonthly tiers (rates bundled with validation)per tier$1.65 → $14.00Subscription; rows undated
Commission’s TEDB and PDFfreeall rates$0Hand transcription, no API, no category hints
Veriport 2,000 pack$9 once2,000 calls, 12 months$4.50Prepaid, no renewal
Veriport 10,000 pack$29 once10,000 calls, 12 months$2.90Prepaid, no renewal
Veriport monthly plan$15 / month5,000 calls + bulk$3.00Subscription, cancel any time

Free before any of this: 100 calls a month with a key, 20 a day without one. A 4xx or 5xx is never counted.

Questions

How current is the table?
Every row carries its own verifiedOn; the oldest is 2026-10-24 and the next review is 2026-11-24. A change announced by an administration between reviews is applied when it takes effect and noted in the changelog.
Does it cover the UK, Switzerland or Norway?
No: the 27 member states only. Greece is EL. Northern Ireland follows the UK rates and is not in the table.
Can I rely on the category hints for my product?
They state what the state applies to the usual case of the category and point at the national page; the classification of your supply is yours, and the row’s note says where the usual case splits.
Is there a free way to get the whole table?
Yes: the 27 country pages and the free lookup show every row; GET /vat/rates returns them as JSON within the 20 anonymous calls a day.

100 calls a month: enough to refresh the 27 rows every day.

Get a free key

Sources