SME Eligibility
POST /v1/vat/sme-eligibility — Check domestic SME VAT exemption eligibility (Art. 284)
Endpoint
POST /v1/vat/sme-eligibilityAuthentication: Public (no API key required)
Overview
Checks whether a business with a given annual domestic turnover falls within the national SME VAT exemption threshold for a specific member state (Art. 284 VAT Directive). This endpoint does not evaluate the EU cross-border SME scheme (Art. 284a). Thresholds are sourced from the official EU TEDB SMERetrievalService.
Amounts: annual_turnover_nac is expressed in minor units (cents) of the national currency. Threshold amounts in the response are in whole currency units as published by TEDB.
Country codes: TEDB uses EL for Greece (ISO 3166-1 uses GR).
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
country | string | Yes | ISO 3166-1 alpha-2 country code (TEDB uses EL for Greece) |
annual_turnover_nac | integer | Yes | Annual turnover in minor units of the national currency (must be ≥ 0) |
currency | string | Yes | ISO 4217 currency code — must match the country's national currency |
reference_date | string | No | YYYY-MM-DD date for threshold lookup. Defaults to today. |
Example Requests
Eurozone country (Germany)
curl -X POST https://api.vat-engine.daily-automations.app/v1/vat/sme-eligibility \-H "Content-Type: application/json" \-d '{"country":"DE","annual_turnover_nac":1800000,"currency":"EUR"}'Non-eurozone country (Poland, with explicit date)
curl -X POST https://api.vat-engine.daily-automations.app/v1/vat/sme-eligibility \-H "Content-Type: application/json" \-d '{"country":"PL","annual_turnover_nac":20000000,"currency":"PLN","reference_date":"2026-01-01"}'Response
{
"country": "DE",
"currency": "EUR",
"annual_turnover_nac": 1800000,
"reference_date": "2025-07-09",
"exemption_threshold_nac": 22000,
"exemption_threshold_eur": 22000,
"eligible_for_exemption": true,
"exceeded_by_nac": 0,
"scheme_type": "Regular scheme",
"policy": {
"one_national_annual_threshold": true,
"exclusion_article288_quarantine_period": null,
"voluntary_cessation_article290": null
},
"sectorals": [],
"data_situation_on": "2024-01-01",
"disclaimer": "Domestic-only check (Art. 284 VAT Directive). Does not evaluate the EU cross-border SME scheme (Art. 284a). Consult a tax advisor for formal eligibility decisions."
}Response Fields
| Field | Type | Description |
|---|---|---|
country | string | Echo of the submitted country code |
currency | string | Echo of the submitted currency code |
annual_turnover_nac | integer | Echo of the submitted turnover in minor units |
reference_date | string | Effective date used for threshold lookup (YYYY-MM-DD) |
exemption_threshold_nac | number | null | Main exemption threshold in whole national-currency units |
exemption_threshold_eur | number | null | Main exemption threshold in whole EUR units |
eligible_for_exemption | boolean | Whether the turnover is within the exemption threshold |
exceeded_by_nac | integer | Amount by which turnover exceeds the threshold (0 if within) |
scheme_type | string | TEDB threshold type (e.g. Regular scheme) |
policy | object | National policy flags — see below |
sectorals | array | Sector-specific thresholds — see below. Empty array if none apply. |
data_situation_on | string | Effective date of the underlying TEDB data (YYYY-MM-DD) |
disclaimer | string | Legal disclaimer |
Policy Object
| Field | Type | Description |
|---|---|---|
one_national_annual_threshold | boolean | null | Single national annual threshold applies |
exclusion_article288_quarantine_period | string | null | Article 288 exclusion quarantine period (TEDB text) |
voluntary_cessation_article290 | boolean | null | Voluntary cessation flag under Article 290 |
Sectoral Object
| Field | Type | Description |
|---|---|---|
sector | string | null | Sector label (verbatim TEDB text) |
exemption_threshold_eur | number | null | Sectoral exemption threshold in whole EUR units |
exemption_threshold_nac | number | null | Sectoral exemption threshold in national-currency units |
comment | string | null | Additional comment (verbatim TEDB text) |
Error Responses
| Status | Error | Cause |
|---|---|---|
| 400 | invalid_json | Request body is not valid JSON |
| 400 | invalid_country | Country code is not a valid 2-letter code |
| 400 | invalid_currency | Currency code is not a valid 3-letter code |
| 400 | invalid_turnover | annual_turnover_nac is negative |
| 400 | invalid_reference_date | reference_date is not a valid YYYY-MM-DD date |
| 404 | no_sme_data | No TEDB threshold data found for the country/date |
| 422 | currency_mismatch | Currency does not match the country's national currency |
| 429 | rate_limited | Too many requests — back off and retry |
| 500 | internal_error | Server error |