Limitations & roadmap
An honest list of what TaxLens does not yet model. Tax is endlessly specific — knowing the edges lets you decide where to trust the engine outright and where to keep a human in the loop. For what the engine does support, start with the concept guides and the scenario-field reference.
Per-guest taxes
Per-occupant accommodation taxes — per-guest age bands, residency, a numeric disability_percentage, and guest type — are modeled; see Tiered & per-person rates. The remaining edges:
- Per-commune disability thresholds. Where the qualifying disability percentage differs from one commune to the next within a country, only the national threshold is applied.
- Multi-axis municipal schedules. Tourist taxes that combine several axes at once — e.g. Venice's date × zone × class schedule — are not yet modeled as a single rule.
VAT & cross-border
- No live VAT-ID validation. Reverse charge trusts the structure of the VAT ID you supply — there is no live VIES lookup. Validate the ID upstream if you need certainty. See Reverse charge.
- TOMS is opt-in, not auto-detected. The margin scheme is applied when you set
margin_schemeon a booking; the engine does not infer which bookings qualify on its own. See scenario fields. - Per-city VAT-base scoping is partial. A national VAT can fold a tourist tax into its base for specific cities or states; coverage for some countries (e.g. Germany) is still expanding.
Host tax regimes
Small-business and franchise regimes — the French franchise en base, the German Kleinunternehmer rule, the Italian regime forfettario, the Peruvian MYPE regime, the UK below-threshold rule — are handled via supplier_tax_regime. Not yet modeled:
- The pan-EU cross-border SME scheme (the EU-wide small-business VAT exemption across member states).
- Brazil's Simples Nacional regime.
E-invoicing
TaxLens projects bookings to EN 16931 and serializes UBL 2.1 / PEPPOL BIS 3.0. Not yet built:
- Clearance & transmission. Sending to a clearance platform (PEPPOL Access Point, SdI, KSeF, and similar) is not built — you take the generated document to your transmission channel.
- National formats. FatturaPA, CFDI, IRN, and ZATCA formats are not generated (UBL only).
- Exemption-certificate workflow. Capturing and validating exemption certificates is not built.
- Per-issuer timezone. The invoice date and fiscal sequence use a representative timezone for the issuer's country; a per-issuer timezone (needed for multi-timezone countries such as the US and Mexico) is not yet configurable.
- Full multi-party self-billing. Self-billed (389) invoices are issued; the complete host-as-supplier party model has further work pending.
The full e-invoicing boundary lives in E-invoicing coverage & deferred.
Out of scope by design
- One-time entry / departure levies. Border taxes paid per trip (national international-tourist levies, departure taxes) are not part of a per-night room calculation, so they never fire on an accommodation calc — see Coverage.
- Non-accommodation taxes. Flights, cruises, car rental, and attraction fees are not modeled.
- Per-organization rate overrides. The calculator engine is identical across tenants by design; a rate cannot be overridden for a single organization.
- Loyalty / points bookings. Points-funded or zero-cash stays are not modeled as a distinct tax scenario.
- Historical stay-date lookup. The engine keeps one active rate per jurisdiction/category; recalculating a past stay against a since-changed rate is not a first-class capability.