SME Eligibility

POST /v1/vat/sme-eligibility — Check domestic SME VAT exemption eligibility (Art. 284)

Endpoint

POST /v1/vat/sme-eligibility

Authentication: 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

FieldTypeRequiredDescription
countrystringYesISO 3166-1 alpha-2 country code (TEDB uses EL for Greece)
annual_turnover_nacintegerYesAnnual turnover in minor units of the national currency (must be ≥ 0)
currencystringYesISO 4217 currency code — must match the country's national currency
reference_datestringNoYYYY-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

FieldTypeDescription
countrystringEcho of the submitted country code
currencystringEcho of the submitted currency code
annual_turnover_nacintegerEcho of the submitted turnover in minor units
reference_datestringEffective date used for threshold lookup (YYYY-MM-DD)
exemption_threshold_nacnumber | nullMain exemption threshold in whole national-currency units
exemption_threshold_eurnumber | nullMain exemption threshold in whole EUR units
eligible_for_exemptionbooleanWhether the turnover is within the exemption threshold
exceeded_by_nacintegerAmount by which turnover exceeds the threshold (0 if within)
scheme_typestringTEDB threshold type (e.g. Regular scheme)
policyobjectNational policy flags — see below
sectoralsarraySector-specific thresholds — see below. Empty array if none apply.
data_situation_onstringEffective date of the underlying TEDB data (YYYY-MM-DD)
disclaimerstringLegal disclaimer

Policy Object

FieldTypeDescription
one_national_annual_thresholdboolean | nullSingle national annual threshold applies
exclusion_article288_quarantine_periodstring | nullArticle 288 exclusion quarantine period (TEDB text)
voluntary_cessation_article290boolean | nullVoluntary cessation flag under Article 290

Sectoral Object

FieldTypeDescription
sectorstring | nullSector label (verbatim TEDB text)
exemption_threshold_eurnumber | nullSectoral exemption threshold in whole EUR units
exemption_threshold_nacnumber | nullSectoral exemption threshold in national-currency units
commentstring | nullAdditional comment (verbatim TEDB text)

Error Responses

StatusErrorCause
400invalid_jsonRequest body is not valid JSON
400invalid_countryCountry code is not a valid 2-letter code
400invalid_currencyCurrency code is not a valid 3-letter code
400invalid_turnoverannual_turnover_nac is negative
400invalid_reference_datereference_date is not a valid YYYY-MM-DD date
404no_sme_dataNo TEDB threshold data found for the country/date
422currency_mismatchCurrency does not match the country's national currency
429rate_limitedToo many requests — back off and retry
500internal_errorServer error