VAT-only invoices

The e-invoice carries VAT and only VAT. Occupancy and tourist taxes are deliberately excluded — not because they don't matter, but because the EN 16931 standard can't represent them, and putting them on the invoice would misclassify them as recoverable VAT.

Why occupancy and tourist taxes are left off

A stay can attract several taxes — VAT on the room, plus a per-night tourist tax or a US hotel occupancy tax. Those are different legal animals. VAT is a recoverable consumption tax that EN 16931 is built to express. A tourist tax is a local levy with no VAT category — there is simply nowhere in the standard to put it that wouldn't claim it's VAT.

Misclassifying a levy as VAT is a real error
If a tourist tax were placed in a VAT subtotal, a buyer's accounting system would treat it as recoverable input VAT and reclaim it — money it isn't owed. Excluding non-VAT levies is the correct, compliant behavior, not a gap.

So TaxLens splits the booking's taxes by a VAT allow-list (is_vat_category, the same classifier the serializer uses). VAT categories go on the invoice; everything else is classified as EN 16931 category O ("not subject to VAT") and surfaced as a warning, to be remitted separately. Learn the underlying split in Tax categories.

What's on the invoice vs flagged

A €600 Italian stay with a tourist tax (illustrative)
Room rate (base)€600.00Italy VAT 10% · on the e-invoice€60.00Imposta di soggiorno · category O — excluded€30.00Invoice grand total (VAT view)€660.00Total the guest pays (incl. excluded levy): €690.00
Only the VAT line reaches the e-invoice. The imposta di soggiorno is a separate guest-borne levy outside the VAT base — flagged and remitted on its own.

Totals reconcile over the VAT view

Because the tourist tax is off the invoice, the invoice totals are computed over the VAT lines only. This is what makes the issued document match its UBL PayableAmount exactly — there's no hidden levy throwing off the arithmetic. The excluded amount is still reported so you don't lose sight of it: the document carries an excluded_tax_total and a total_paid_including_excluded alongside the VAT-only payable total.

Document totals (abridged, illustrative)
{
  "tax_breakdown": [
    { "category_code": "S", "rate_percent": 10, "taxable_amount": 600.00, "tax_amount": 60.00 }
  ],
  "totals": {
    "lines_net_total": 600.00,
    "tax_total": 60.00,
    "grand_total": 660.00,                 // ← matches UBL PayableAmount
    "currency": "EUR",
    "excluded_tax_total": 30.00,
    "total_paid_including_excluded": 690.00
  }
}
Note
The tourist tax doesn't vanish from your obligations — it's just remitted through its own channel, not the VAT invoice. The booking still shows the full amount the guest paid.

Next

When a single invoice does carry more than one VAT rate (room 10% + breakfast 20%), see Multi-rate VAT invoices. For how the same allow-list classifies categories across the engine, see Tax categories and the category reference.