Cross-border B2B & reverse charge
When a business guest books across an EU border, the instinct is 'reverse charge the VAT'. For a hotel room, that instinct is wrong. The room is always taxed with local VAT. Reverse charge applies only to the OTA's commission line — and TaxLens models it precisely.
Place of supply: the room is special
The room and the commission are two different supplies with two different place-of-supply rules, and that difference is the whole story.
A hotel room is a service connected to immovable property (EU VAT Directive Article 47), so it is taxed where the property is — local VAT — even for a cross-border business guest. The room is never reverse-charged. Reverse charge (Articles 44/196) applies to the OTA's commission / intermediary service, which is taxed where the recipient is established.
base_type=commission_amount), never the room VAT. TaxLens deliberately ships no seeded reverse-charge rule on room VAT — an earlier room-level rule was removed as an Article 47 bug. Commission-line reverse-charge rules are authored per OTA establishment.The fields that drive it
You signal a business booking with two fields; the engine derives the cross-border test from them (and from the property country):
| Field | Type | Description |
|---|---|---|
| customer_type | "business" | … | Set to business for a B2B booking. Exposes has_valid_vat_id and the cross-border derivation. |
| business_tax_id | string | The guest's VAT id (e.g. DE…). The country prefix derives customer_vat_country (EL maps to GR). |
| is_cross_border_b2b | derived | Engine-derived from the property country (head of the jurisdiction code) vs. the VAT-id country. The gate for the commission reverse charge. |
| commission_supplier_country | ISO country | The OTA / intermediary's country. When present, the commission gate uses is_commission_cross_border_b2b (supplier-vs-property), independent of the guest — so a non-EU OTA acting as MoR for an EU hotel still reverse-charges its commission. Falls back to the guest-derived test when omitted. |
So a US OTA acting as merchant of record for a German hotel reverse-charges its commission (category AE) even when the guest is a non-EU consumer — because commission_supplier_country drives the commission gate. The room, again, is unaffected: local German VAT.
What isn't validated yet
is_cross_border_b2b, but the id is not checked against the VIES registry. Treat VAT-id validation as your responsibility upstream for now. See Limitations.Where to go next
The commission line itself and MoR routing are in Channels & merchant of record. How the AE category lands on the document is in E-invoice standards, and override actions in general are in Rules.