Tax categories: VAT, occupancy, tourist
Not every accommodation tax is the same kind of thing. TaxLens tags each layer with a category, and the category decides both how the tax is computed and how it appears on an invoice. Learn the vocabulary and why the VAT / non-VAT split is the one that matters most.
Three families of tax
Almost every accommodation tax falls into one of three families:
- VAT / GST — a percentage consumption tax on the room price (sometimes on more than the room — see VAT base composition). This is the recoverable, invoice-grade tax: it appears on the e-invoice as VAT a business guest can reclaim.
- Occupancy / lodging tax — typically a percentage of the room rate per room-night (the US "hotel occupancy tax", the Canadian municipal accommodation tax). Some are flat per night instead.
- Tourist / city tax — usually a flat amount per guest per night (the European taxe de séjour, imposta di soggiorno, the Catalan tourist tax). Often tiered by hotel class or price.
A single stay routinely carries one of each — a VAT layer, a city occupancy layer, and a per-person tourist layer — all stacking additively. See Layered & additive stacking.
How each kind computes
The category's shape determines the arithmetic. Every layer is one of three rate types:
| Field | Type | Description |
|---|---|---|
| percentage | rate × base | A fraction of the taxable base. VAT, GST, percentage occupancy taxes. The base is usually the room, sometimes room + another tax (VAT base composition). |
| flat | fixed amount | A fixed cash amount, multiplied by nights and/or guests depending on the category (per-night, per-person-per-night, per-stay). Most tourist taxes. See Tiered & per-person rates. |
| tiered | by price or star | The amount steps up by hotel class or nightly price (a 5★ hotel pays more per night than a 2★). A rate-level tier_type selects the banding logic — property_class (the dominant live shape), single_amount, threshold, or marginal_rate. |
The category vocabulary
Each layer carries a machine-readable category_code in its component. The dashboard humanizes these for display, but the codes are what you'll see in the API. The common ones:
| Field | Type | Description |
|---|---|---|
| vat_standard | VAT (standard) | Standard-rate VAT/GST. |
| vat_reduced | VAT (reduced) | Reduced accommodation VAT (common for lodging). |
| occ_pct | Occupancy % | Percentage occupancy / lodging tax. |
| occ_flat_night | Occupancy / night | Flat occupancy tax per room-night. |
| occ_flat_person_night | Occupancy / person / night | Flat occupancy tax per guest per night. |
| tourism_pct | Tourism % | Percentage tourist/city tax. |
| tourism_flat_person_night | Tourism / person / night | The classic per-guest-per-night tourist tax. |
| tier_price / tier_star | Tiered | Amount steps by nightly price or hotel star rating. |
| municipal_pct / municipal_flat | Municipal | City-level surcharge, percentage or flat. |
| eco_* / green_* / sustainability_* | Environmental | Eco / climate / sustainability levies, usually flat per night. |
| commission_tax | OTA commission tax | Tax on the intermediary's commission line, not the room (see reverse charge). |
vat_standard and vat_reduced — there is no vat_exempt code. A VAT exemption (a special zone, a long stay, a cross-border reverse charge) is expressed as an exemption or override rule on a vat_standard / vat_reduced rate, not as a distinct category. So filtering API responses on category_code === "vat_exempt" never matches; check the component's exemption flag instead.Why the VAT / non-VAT split matters
The most consequential distinction is not "VAT vs occupancy vs tourist" — it's VAT vs everything else. VAT is recoverable consumption tax that belongs on a compliant e-invoice as reclaimable tax. Occupancy and tourist taxes are different legal animals: they are levies, not VAT, and a business guest cannot reclaim them as VAT.
So when TaxLens projects a booking to an e-invoice, it includes only the VAT-family layers as VAT. Occupancy and tourist taxes are classified out of the VAT view (EN 16931 category O) and flagged — never mis-mapped as recoverable tax. The issued document's totals reconcile over the VAT view alone. This is the whole reason the category tag exists at the financial level.
Where to go next
Categories that compute by class or per guest are covered in Tiered & per-person rates. When one category's amount feeds another's base, see VAT base composition. And Rules can exempt or modify any category for a given booking.