VAT
VAT is applied at the final stage of Quantaprice's pricing pipeline. All structural logic — inheritance, scheduled updates, historical resolution, quantity breaks, and bundle calculation — is completed before VAT is evaluated. This ensures consistent, predictable results across all pricelists and SKUs.
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
A pricelist may be configured for:
-
VAT Excluded The stored prices are considered net prices. VAT is added during evaluation.
-
VAT Included The stored prices already include VAT. VAT is removed only if explicitly needed for another calculation.
-
Use Article VAT Class VAT class is resolved from the article (or price structure) but the mode still comes from the pricelist.
VAT application is deterministic and does not depend on external systems.
VAT Rates
VAT rates are determined by:
- The VAT class assigned to the SKU
- The VAT definitions configured for the customer cluster
VAT class → rate mapping is static and can be changed without modifying any pricelist.
Article-TaxClass Mapping
Each article must be assigned a VAT class for each tax area where it will be sold. This mapping determines which VAT rate applies when a price is evaluated.
How It Works
The mapping is a three-way relationship:
- Article (SKU) — the product being priced
- Tax Area — the geographical region (e.g.,
SEfor Sweden,DEfor 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:
| SKU | Tax Area | VAT Class | Effective VAT Rate |
|---|---|---|---|
| SKU-123 | SE | STANDARD | 25% |
| SKU-123 | DE | REDUCED | 7% |
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
Child pricelists may override VAT mode. If not overridden, this value is inherited from the parent.
Bundles
VAT is applied to the final aggregated bundle price unless the pricelist is explicitly VAT-included.
Scheduled Updates
Scheduled updates may change:
- VAT mode
- VAT class or base price
The correct version is selected before VAT is applied.
Historical Pricing
"As of" queries use the VAT configuration that was active at that time.
Design Principles
- Last-step transformation — VAT never interferes with price structure or inheritance.
- Deterministic — identical inputs always produce identical results.
- Isolated — applied only after all structural logic has completed.
- Consistent — bundles, quantity breaks, and base prices follow the same rules.
Summary
VAT in Quantaprice is applied at the final stage of price evaluation, ensuring predictable and consistent results. This behaviour is controlled by the pricelist and integrates cleanly with inheritance, bundle logic, scheduled updates, and historical pricing.