Skip to main content

VAT

VAT is applied after price rules and currency conversion, and before rounding. Every price you query comes back both excluding and including VAT for the tax area you ask for.


VAT Handling​

VAT behaviour is controlled primarily by the pricelist, not the SKU. The SKU contributes the VAT class, while the pricelist defines how VAT should be applied.

VAT Modes​

Every pricelist has a vat_mode:

  • NET: stored prices exclude VAT. VAT is added.
  • GROSS: stored prices include VAT. VAT is extracted for the price excluding VAT.

VAT Rates​

The rate comes from the article's VAT class in the query's tax area, and the rate for that (tax area, VAT class) pair in force at the query's as_of. Rates have start dates, so a rate change can be scheduled, and changing a rate needs no change to any pricelist.

The VAT Baseline​

A new tenant comes with:

  • the VAT classes STANDARD, REDUCED, REDUCED_2, SUPER_REDUCED, ZERO and EXEMPT;
  • 31 tax areas: the EU countries, GB, NO, CH and IS;
  • each country's national VAT rates in force in October 2026, from 2020-01-01.

REDUCED, REDUCED_2 and SUPER_REDUCED hold a country's reduced rates, highest first. A country with fewer reduced rates has no rate in the classes left over: an article given such a class there cannot be priced in that tax area, and a query for it fails with 400. ZERO and EXEMPT are 0 % everywhere. Regional rates, such as those on Madeira or the Greek islands, are not included.

Tax areaSTANDARDREDUCEDREDUCED_2SUPER_REDUCED
ATAustria2013104.9
BEBelgium21126—
BGBulgaria209——
CHSwitzerland8.13.82.6—
CYCyprus19953
CZCzechia2112——
DEGermany197——
DKDenmark25———
EEEstonia24139—
ESSpain21104—
FIFinland25.513.510—
FRFrance20105.52.1
GBUnited Kingdom205——
GRGreece24136—
HRCroatia25135—
HUHungary27185—
IEIreland2313.594.8
ISIceland2411——
ITItaly221054
LTLithuania21125—
LULuxembourg171483
LVLatvia21125—
MTMalta181275
NLNetherlands219——
NONorway251512—
PLPoland2385—
PTPortugal23136—
RORomania2111——
SESweden25126—
SISlovenia229.55—
SKSlovakia23195—

Rates in percent. Which goods take which rate is up to each country: give each article the class that matches its rate in each tax area you sell in, as described below.

When a country changes a rate, add the new rate with the date it takes effect; the old rate stays in force until then. For example, if Sweden's 12 % rate went to 13 % from 1 January 2028:

POST /vatrate
Content-Type: application/json

{
"tax_area_code": "SE",
"vat_class_code": "REDUCED",
"rate": 13.0,
"start_date": "2028-01-01T00:00:00Z"
}

Add tax areas, classes and rates of your own the same way, in the API or under VAT in the console.


Article-TaxClass Mapping​

An article's VAT class in a tax area decides which VAT rate applies to it there. An article without a class in a tax area is STANDARD, so you assign a class only to articles that are not standard-rated.

How It Works​

The mapping is a three-way relationship:

  • Article (SKU) — the product being priced
  • Tax Area — the geographical region (e.g., SE for Sweden, DE for Germany)
  • VAT Class — the tax category (e.g., STANDARD, REDUCED, ZERO, EXEMPT)

When a price query specifies a tax_area, Quantaprice looks up the article's VAT class for that area, then resolves the VAT rate from the tax area's rate table.

Example​

An article SKU-123 sold in Sweden and Germany:

SKUTax AreaVAT ClassEffective VAT Rate
SKU-123SESTANDARD25%
SKU-123DEREDUCED7%

The same product can have different VAT classes in different tax areas — for example, food items may be standard-rated in one country but reduced-rated in another.

Managing Mappings​

Assign a VAT class to an article for a specific tax area:

POST /article-taxclass
Content-Type: application/json

{
"sku_code": "SKU-123",
"tax_area_code": "SE",
"vat_class_code": "STANDARD",
"start_date": "2025-01-01T00:00:00Z"
}

The start_date field supports historical and scheduled changes — if a product's tax classification changes (e.g., due to regulatory changes), you can record the new mapping with a future start date.

Query an article's VAT class for a specific tax area:

GET /article-taxclass/SKU-123/SE

List all mappings for a tax area:

GET /article-taxclass/by-area?tax_area=SE

Interaction With Other Pricing Features​

Inheritance​

Every pricelist sets its own VAT mode; it is not inherited.

Bundles​

VAT is computed per component, with each component's own VAT class, so bundles with mixed VAT classes are taxed correctly.

Scheduled Updates​

VAT rates and article VAT classes take a start date, so changes can be scheduled; see Scheduled Updates.

Historical Pricing​

"As of" queries use the VAT configuration that was active at that time.


Summary​

The article's VAT class in the tax area you query gives the VAT rate; the pricelist's VAT mode says whether its prices include VAT. VAT is applied after rules and currency conversion, before rounding.


See also​

  • Currencies — VAT precision is configured per currency.
  • Rounding — rounding is applied after VAT in the pricing pipeline.
  • Bundles — how per-component VAT works for bundle SKUs.
  • API Reference — full spec for the /article-taxclass, /taxarea, /vatclass and /vatrate endpoints.