Chapter 01 ViDA
The deadline that makes this not optional.
Today the EU has 27 different VAT systems. A digital platform operating across the bloc juggles dozens of local registrations, half a dozen national e-invoice formats (Italy's SDI, France's Chorus Pro, Poland's KSeF and others), and uneven rules about whether the platform or the seller collects the tax. The cost: roughly €93 billion of lost VAT each year, high compliance overhead, and an uneven playing field. On 11 March 2025 the Council of the EU adopted ViDA, three directives and one regulation that rebuild this plumbing as a single, machine-readable system. Transposition is staggered: first national measures due 31 December 2026, substantive rules between 2028 and 2030.
Three things change. By 1 July 2028 a single VAT registration covers cross-border B2C and own-stock movements across all 27 states; the existing OSS portal extends to absorb them. From 1 July 2028 (mandatory by 1 January 2030), short-term accommodation and passenger-transport platforms become the deemed VAT supplier, collecting the tax themselves regardless of what the host or driver does. From 1 July 2030, every intra-EU B2B invoice must be issued as a structured e-invoice on the EN 16931 standard and reported to tax authorities in near-real time.
All three pillars assume something the existing stack does not deliver: that any commerce system can answer, deterministically and per address, which VAT regime applies. Today it cannot. Åland, the Canaries, Ceuta, Melilla, Mount Athos, Büsingen, Heligoland, Livigno and Campione sit inside the EU customs union and outside the VAT area, or under bespoke regimes. A single OSS registration is meaningless if the country selector still resolves Mariehamn to Finland. EN 16931 reporting is meaningless if the territory field on the invoice is wrong. Platform deemed-supplier rules are meaningless if the platform cannot tell where the rental is. ViDA is the deadline. TLL is the substrate it assumes.
- Mar 2025 ViDA adopted
- Dec 2026 first national transposition deadline
- Jul 2028 single VAT registration starts
- Jan 2030 platform deemed-supplier mandatory
- Jul 2030 intra-EU e-invoicing on EN 16931
- Jan 2035 domestic e-invoicing harmonised
Single VAT registration
OSS extends to own-goods movements and domestic B2C, removing the need for multiple national VAT registrations.
TLL Deterministic resolution of "is this address in the EU VAT area" per order, without which OSS misroutes EU-territory edge cases.
PILLAR 02 1 Jul 2028 → 1 Jan 2030 Platform economy
Short-term accommodation and passenger-transport platforms become the deemed VAT supplier on facilitated supplies. Member states may apply the rule from 1 July 2028; it is mandatory across the EU from 1 January 2030.
TLL Per-listing territory resolution distinct from sovereign state. A Las Palmas booking is not Spain for VAT; an Åland flat is not Finland.
Digital reporting & e-invoicing
Intra-Community supplies must be invoiced on EN 16931 and reported in near-real-time to national tax authorities.
TLL The territory field on the invoice has to be right at issuance. TLL provides the canonical code, the regime classification, and the source citation per line.
The chapters that follow are the engineering ground truth ViDA's deadline now requires.
Chapter 02 The break
Where the systems break.
Picture a Helsinki-based commerce stack. The customer lives at a Mariehamn address. To the validator, Mariehamn is in FI. The postcode begins with 22, valid for Finland Proper. The stack proceeds as if nothing special has happened. By the time the parcel sits in a Helsinki sorting facility with no customs paperwork, it is already four decisions too late.
The failure isn't a single bug. It's a chain of compounding small confusions, each inherited from a different upstream standard, each invisible at the layer above.
01 / ADDRESS
!
Form validates FI
Country selector only knows about sovereign states. AX is either missing or aliased to Finland.
✕ wrong territory from the start
02 / CHECKOUT
!
Regional ruleset = FI
Catalog filters, shipping rules, and content availability all resolve against Finland's profile.
✕ wrong SKUs shown, wrong freight
03 / PAYMENT
!
VAT 25.5% applied
Finnish domestic rate. But Åland sits outside the EU VAT area: the correct regime is 0% with a customs doc.
✕ over-charged, wrong invoice
04 / LOGISTICS
!
Routed as domestic
Carrier selects FI→FI. Parcel arrives without declaration and is held or returned.
✕ SLA miss, refund, bad review
None of these systems is individually broken. Each is doing exactly what it was told. The problem is the seam: there is no shared representation of what AX means as it travels from address validator to tax engine to logistics router.
Chapter 03 Divergence
Same standards, different rules.
"Special territory" is not a category. It's a statistical accident of four separate regulatory regimes barely acknowledging each other. Two territories can look identical on paper and behave completely differently in a checkout flow. Here are the four territories most systems get wrong.
Every row is a different failure mode. The Canaries look like Spain, tax differently. Faroe looks like Denmark, isn't Denmark at all. Åland is the extreme case: inside the customs union and outside the VAT area at the same time. One model cannot contain this. That's why TLL publishes structured profiles, not a country list.
Chapter 04 The triple conflict
The triple conflict.
Three canonical international standards claim jurisdiction over the question "what is this territory?" For Åland, and territories like it, they don't agree. They don't even refer to the same thing.
ISO 3166-1
alpha-2 AX
Independent entity
Lists Åland as a distinct territory for postal and country-code purposes. Used by address validators, domains, and geo-IP.
ISO 3166-2
subdivision FI-01
Finnish region
Treats Åland as a first-level subdivision of Finland. Used by HR systems, GIS data, and regional tax tables.
WIPO ST.3
IP office AX
Coded, not autonomous
AX appears in WIPO ST.3, but Åland is not a Madrid Protocol or PCT contracting party in its own right. IP filings, licensing registries, and rights-region logic file via Finland; the code exists, the jurisdiction does not.
Which one is right? All three. None is wrong. They answer different questions, and commerce systems quietly mix their answers, sometimes within the same transaction. TLL's job is to reconcile them: one canonical identity per territory, with aliases to every standard, and provenance on every field.
The problem isn't that Åland is unusual. The problem is that every standard models it as if the others didn't exist.
TLL design notes, 2026
Chapter 05 Language
Language is not the country.
BCP-47 locales encode language and region as separate axes: sv-AX, fo-FO, kl-GL. In practice, content stacks pick the dominant language of the resolved sovereign state. The result is a Mariehamn customer reading Finnish UI on a Swedish-only territory, or a Tórshavn customer reading Danish where Faroese is official.
This isn't a translation gap. It is a category error: the stack believes language follows the country code, but in hybrid territories the constitutional language and the country's primary language disagree. The fallback path quietly hides the disagreement.
Locale resolution is not just a UI concern. Customer service routing, legal templates, returns labels, accessibility audits, and SEO hreflang tags all branch on the same broken signal. Fixing them in five places is five chances for them to drift apart again.
Chapter 06 Licensing
Rights regions diverge from tax regions.
Every digital good carries a licence. Every licence has a territory. None of those territories were drawn with VAT in mind. The Finnish music catalogue, the Spanish app store storefront, the British software EULA: they each draw the line at a different place than the customs union, and at a different place again than the VAT area.
A Spotify subscriber in Mariehamn pays a Finnish-tier price for a Finnish-licensed catalogue, but the transaction itself sits outside the EU VAT area. A Faroese app developer publishes through Apple's Danish entity, but settles tax against MVG, not Danish moms. A trade mark filed for FI is enforceable in AX but the customs treatment of the parcel that infringes it isn't. The licence, the storefront, the geo-IP block, and the tax line all answer "where is this customer", and they answer differently.
For the engineering team, the consequence is mundane and severe: the same user record needs five different territory fields, one per regime, and they must be kept consistent. That is the field TLL exists to populate.
Chapter 07 Transit
The parcel crosses a border the country does not.
The country code on the address says one thing. The customs document says another. The carrier's routing table says a third. For five territories, the disagreement is structural: the parcel crosses a regulatory border even when the geopolitical map says it never left.
CN22/CN23T2F
Carrier Posti (FI domestic postage, non-domestic customs)
✕ Routed as FI→FI domestic. Held at Mariehamn until declaration is filed retroactively or returned to sender.
CN23Commercial invoiceEAD
Carrier Posta (FO designated operator, under DK in UPU)
✕ Treated as DK destination by carrier portals. DK customs nominally clears the parcel but FO collects MVG on receipt.
DUACommercial invoice
Carrier Correos (ES domestic postage, IGIC at delivery)
✕ Looks domestic on the label, but ES→IC leaves the EU VAT area: recipient owes IGIC and AIEM on arrival, and neither OSS (intra-EU distance sales) nor IOSS (low-value imports into the VAT area) covers the sale.
CN23Commercial invoice
Carrier TUSASS / Royal Arctic Line
✕ Outside EU customs union. DDP terms require a Greenland customs broker, not a Danish one.
Trader Support ServiceCommodity codeXI EORI
Carrier Royal Mail / parcel networks (GB-NI lane specific)
✕ Goods moving GB → XI need an XI EORI and the green/red lane decision. Some products (e.g. plants, animal-origin) are hard-restricted.
Each row is a different combination of customs union membership, postal-operator independence, and carrier classification. Helsinki to Mariehamn is a ~270 km ferry inside one country and one customs union, but outside one VAT area; the parcel crosses a tax border and needs a T2F (internal Union, fiscal) transit document and a postal customs declaration even though both endpoints share the same flag. London to Belfast is inside one state but the goods may move under EU rules. The carrier's "domestic" flag is the wrong abstraction and has been for a decade.
Chapter 08 The reframe
It's not a tax problem. It's a system problem.
Every team that encounters this thinks they've found a tax bug. They haven't. The VAT rate is the most visible consequence, but by the time VAT is computed the damage is already many upstream decisions deep. The address was wrong. The locale was wrong. The licence territory was wrong. The carrier classification was wrong. The currency was right but the invoice template wasn't. Only then does the tax engine get a bad question, and answer it accurately.
Patching the tax engine is the seductive trap. It fixes exactly one symptom. The address validator still can't express AX; the logistics carrier still routes domestic; the content region still shows Finnish SKUs; the licensing layer still serves the wrong catalogue; the locale negotiator still picks fi-FI. The next ticket is three sprints away.
What's missing is not a table of exceptions. It is a protocol, a shared, versioned representation of territorial truth that every layer in the stack can read.
TLL is that protocol. A structured profile per territory. Nine layers: identity, customs, tax, currency, language, licensing, postal, geographic, regulatory. Source-cited fields. Stable endpoints that answer decision questions, not lookup questions. The stack stops guessing.
Chapter 09 The solution
TLL solves this.
One protocol. One canonical profile per territory. Every layer reads the same answer.
What it is
A versioned territory protocol
- One canonical profile per territory
- Reconciles ISO, UPU, WIPO, EU, national rules
- Source citation on every field
- Immutable versions, dated diffs
What it covers
Nine layers, one model
- Identity & aliases
- Customs & VAT status
- Language & locale
- Licensing & rights region
- Postal, currency, regulatory
How you use it
One lookup, every layer
- Address validator accepts AX directly
- Tax engine reads VAT-area boolean
- Logistics branches on customs frontier
- Content resolves constitutional language
What it gives you
Sell to more customers, fewer tickets
- Reach hybrid-territory customers competitors block
- Cut support load from tax, address, and routing errors
- Audit trails write themselves
- Hybrid territories become ordinary rows