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_scheme on 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.
Note
This list is maintained honestly and shrinks as the engine grows. If something here is blocking you, that's useful signal for the roadmap — and the workarounds noted above usually keep you correct (if sometimes conservative) in the meantime.