THE 2026–2027 MANDATE WAVE BREAKS POINT-TO-POINT TRANSLATORS.
Belgium, France, Poland, and Saudi Arabia mandate incompatible e-invoicing schemas. Synclium is a stateless, pure-TypeScript compiler that validates and transpiles across UBL 2.1 (PEPPOL), Factur-X / ZUGFeRD (CII), and ZATCA Phase 2 via a lossless intermediate hub AST.
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>INV-2026-088</cbc:ID>
<cbc:IssueDate>2026-08-23</cbc:IssueDate>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyName><cbc:Name>Nordwind Transit Systems GmbH</cbc:Name></cac:PartyName>
<cac:PartyTaxScheme>
<cbc:CompanyID>DE314982711</cbc:CompanyID>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:PartyTaxScheme>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyName><cbc:Name>Europa Rail AG</cbc:Name></cac:PartyName>
<cac:PartyTaxScheme>
<cbc:CompanyID>DE812345678</cbc:CompanyID>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:PartyTaxScheme>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="HUR">1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">1500.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Rail Power Inverter Maintenance (EN16931)</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19.00</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
</cac:InvoiceLine>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">1500.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">1500.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">1785.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">1785.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
</Invoice><?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:ProfileID>reporting:1.0</cbc:ProfileID>
<cbc:ID>INV-2026-088</cbc:ID>
<cbc:UUID>3a5d8471-bc93-4791-912f-4827104b6841</cbc:UUID>
<cbc:IssueDate>2026-08-23</cbc:IssueDate>
<cbc:InvoiceTypeCode name="0100000">388</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyIdentification><cbc:ID schemeID="CRN">1010123456</cbc:ID></cac:PartyIdentification>
<cac:PartyName><cbc:Name>Nordwind Transit Systems GmbH</cbc:Name></cac:PartyName>
<cac:PartyTaxScheme>
<cbc:CompanyID>310123456700003</cbc:CompanyID>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:PartyTaxScheme>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">285.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">1500.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">285.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19.00</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">1500.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">1500.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">1785.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">1785.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
</Invoice>MANDATE COMPLIANCE MATRIX // 2026–2027 TIMELINE
The O(N²) Point-to-Point Integration Trap vs O(N) Canonical Hub
| JURISDICTION | MANDATE DATE | REQUIRED STANDARD | CLEARANCE SCHEME | SYNCLIUM ENGINE STATUS |
|---|---|---|---|---|
| Belgium | Jan 1, 2026 (B2B) | PEPPOL BIS Billing 3.0 (UBL 2.1) | PEPPOL 4-Corner Network | [READY] 100% Import · Export · Valid. |
| France | Sep 1, 2026 (Rollout) | Factur-X / ZUGFeRD 2.2 (EN16931 CII) | PDP & PPF Platform Routing | [READY] 100% Import · Export · Valid. |
| Saudi Arabia | Phase 2 Waves 1–15 Active | ZATCA Fatoora Phase 2 XML | ZATCA Clearance & Reporting API | [READY] 100% Import · Export · Valid. |
| Germany | 2025–2028 (Growth Act) | XRechnung 3.0 / ZUGFeRD | B2B Direct Exchange | [READY] 100% Import · Export · Valid. |
| Poland | Feb 1, 2026 (KSeF) | FA_VAT Logical Structure | National KSeF Central Clearance | [CONTRIBUTE] Open Package Adapter |
N × (N - 1) bespoke mappings. With Synclium's Canonical Intermediate Hub, complexity is strictly reduced to 2 × N pure functional transformers. Adding format N+1 requires exactly 0 changes to existing formats.INTERNAL COMPILER PIPELINE
Stateless In-Memory Transpilation Architecture
Signature Detection & OCR
Inspects root XML namespaces to select parsers. If unstructured PDF or scan images are provided, Google Gemini Flash extracts structured fields into standard JSON with multi-model failover.
detectFormat(buffer) ➔ "ubl" | "facturx"Lossless Zod Hub Schema
Normalizes seller/buyer tax numbers, line items, classified tax categories, allowances/charges, and payable amounts into a strongly-typed TypeScript AST (packages/core).
CanonicalInvoiceSchema.parse(ast)Deterministic XML Compilation
Emits target XML with compliant namespaces and executes exact Schematron validation rules reporting exact XPath error diagnostics before dispatch.
exportZATCA(canonical) ➔ XMLAUDITED RUNTIME BENCHMARKS & DATA PRIVACY
Real Engineering Metrics. Zero Marketing Inventions.
Golden-file test matrix across UBL 2.1, Factur-X, ZATCA, CLI, REST API, and rate limiters.
Benchmarked on real-world noisy camera scans, low-resolution receipts, and nested VAT tables.
Stateless in-memory execution. Invoices exist strictly in transient RAM during compilation.
Zero raw IP storage. Rate limiting runs on one-way salted hashes with fail-closed Upstash Redis.
FOR DEVELOPERS & CONTRIBUTING ADAPTERS
Embed as a Library, Run in CI/CD, or Add New Country Formats
# Transpile with auto-detected format signature$ oib convert invoice.xml --to zatca
# Execute Schematron compliance validation$ oib validate invoice.xml --format facturx
# AI multimodal extraction from scan PDF or image$ oib extract scan.pdf --json-out report.json
Implement Format $N+1$ in 3 Pure Functions
Adding support for Poland (KSeF), Malaysia (MyInvois), or Singapore (InvoiceNow)? Implement three pure functional entry points without touching existing formats:
import(rawXml: string): Promise<CanonicalInvoice>export(invoice: CanonicalInvoice): Promise<string>validate(rawXml: string): Promise<ValidationReport>