SME Thresholds
GET /v1/vat/sme-thresholds — Look up EU SME VAT exemption and scheme thresholds
Endpoint
GET /v1/vat/sme-thresholdsAuthentication: Public (no API key required)
Overview
Returns EU Small Business Scheme (SME) VAT thresholds for all 27 member states, sourced from the official EU TEDB SMERetrievalService. Data includes the main national exemption threshold plus optional cash-accounting, flat-rate scheme, reduced-supply-of-services, and non-established-business thresholds where published by TEDB.
Amounts are in whole currency units. For eurozone countries the nationalCurrency is EUR and NAC amounts mirror EUR. For non-eurozone countries (BG, CZ, DK, HU, PL, RO, SE) a separate NAC amount is provided in the national currency.
Country codes: TEDB uses EL for Greece (ISO 3166-1 uses GR).
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
country | string | No | ISO 3166-1 alpha-2 filter (e.g. DE, EL for Greece). Returns all if omitted. |
date | string | No | YYYY-MM-DD. Returns the most recent threshold per key ≤ date. Defaults to today. |
taxName | string | No | Case-insensitive exact match on TEDB tax name (e.g. VAT). |
Example Requests
All thresholds as of today
curl https://api.vat-engine.daily-automations.app/v1/vat/sme-thresholdsSingle country
curl "https://api.vat-engine.daily-automations.app/v1/vat/sme-thresholds?country=DE"Country + specific date
curl "https://api.vat-engine.daily-automations.app/v1/vat/sme-thresholds?country=PL&date=2026-01-01"Response
{
"thresholds": [
{
"country": "DE",
"situationOn": "2024-01-01",
"taxName": "VAT",
"thresholdType": "Regular scheme",
"nationalCurrency": "EUR",
"exemption": {
"thresholdEur": 22000,
"thresholdNac": 22000,
"oneNationalAnnualThreshold": true,
"nationalAnnualThreshold": false,
"exclusionArticle288QuarantinePeriod": null,
"transitionalPeriodExceeded": null,
"voluntaryCessationArticle290": null,
"article290QuarantinePeriod": null,
"sectorals": []
}
},
{
"country": "PL",
"situationOn": "2024-01-01",
"taxName": "VAT",
"thresholdType": "Specific scheme",
"nationalCurrency": "PLN",
"exemption": {
"thresholdEur": 57602,
"thresholdNac": 240000,
"oneNationalAnnualThreshold": null,
"nationalAnnualThreshold": true,
"exclusionArticle288QuarantinePeriod": null,
"transitionalPeriodExceeded": null,
"voluntaryCessationArticle290": null,
"article290QuarantinePeriod": null,
"sectorals": []
}
}
]
}Top-Level Threshold Fields
| Field | Type | Description |
|---|---|---|
country | string | ISO alpha-2 country code (TEDB uses EL for Greece) |
situationOn | string | YYYY-MM-DD effective date of this threshold record |
taxName | string | TEDB tax name (e.g. VAT, VAT - Canary Islands) |
thresholdType | string | TEDB threshold type (e.g. Regular scheme, Specific scheme) |
nationalCurrency | string | ISO 4217 currency code. EUR for eurozone; national currency for others |
exemption | object | Main national exemption details — see below |
Exemption Object
| Field | Type | Description |
|---|---|---|
thresholdEur | number | null | Main exemption threshold in EUR |
thresholdNac | number | null | Main exemption threshold in national currency |
oneNationalAnnualThreshold | boolean | null | Single national annual threshold applies |
nationalAnnualThreshold | boolean | null | National annual threshold flag |
exclusionArticle288QuarantinePeriod | string | null | Article 288 quarantine period description |
transitionalPeriodExceeded | string | null | Transitional period exceeded flag (national / sectoral) |
voluntaryCessationArticle290 | boolean | null | Article 290 voluntary cessation quarantine |
article290QuarantinePeriod | string | null | Article 290 quarantine period description |
sectorals | array | Sector-specific breakdowns — see below. Empty array if none provided. |
Sectoral Threshold Object
Some countries publish sector-specific exemption levels (e.g. France for regulated professions, Denmark for publishers). Each entry in the sectorals array has:
| Field | Type | Description |
|---|---|---|
sector | string | null | Sector label (e.g. Authors and similar professions) |
exemptionThresholdEur | number | null | Sector exemption in EUR |
exemptionThresholdNac | number | null | Sector exemption in national currency |
comment | string | null | Optional TEDB note |
cnCodes | array | CN product codes scoped to this sectoral threshold |
cpaCodes | array | CPA product codes scoped to this sectoral threshold |
Each cnCodes / cpaCodes item has value (code string) and description (human-readable label).
Notes
- A
nullmonetary amount means TEDB does not publish that value for the country/scheme combination — it is not the same as a zero threshold. - Spain and the Canary Islands are returned as two separate rows (
taxName: "VAT"andtaxName: "VAT - Canary Islands") because TEDB models them separately. - TEDB may not publish a threshold for every country. Countries without a general exemption threshold currently appear with
exemption.thresholdEur: null.
Error Responses
| Status | Error code | Description |
|---|---|---|
400 | invalid_country | Country code is not 2 letters |
400 | invalid_date | Date is not in YYYY-MM-DD format |
500 | internal_error | Server error |