SYNCLIUM // BORDER CONTROL FOR INVOICES
Every invoice
has a border.
Synclium moves it across — UBL 2.1 / PEPPOL, Factur-X CII and ZATCA Phase 2, transpiled through one canonical AST. Deterministic. Stateless. MIT open source.
TECHNICAL UTILITY — NOT GOVERNMENT CLEARANCE OR CERTIFICATION
TAX INVOICE — UBL 2.1
Nordwind Transit Systems GmbH
INV-2026-088
2026-08-23
DE314982711
EUR 1785.00
LINE 1 — Rail power inverter maintenance · S 19.00%
- cbc:IDINV-2026-088
- cbc:IssueDate2026-08-23
- seller.taxIdDE314982711
- line[0].taxS · 19.00%
- totals.payableEUR 1785.00
- profilePEPPOL BIS 3.0
- ORIGIN
- EU / PEPPOL
- FORMAT
- UBL 2.1
- DESTINATION
- SAUDI ARABIA
- TARGET
- ZATCA PHASE 2
Six gates. One document. No queues.
INGEST → DETECT → NORMALIZE → VALIDATE → COMPILE → EMIT. Each gate visibly rewrites the document; watch the seal change as it travels.
Same meaning. Different representation.
UBL → canonical AST → CII → ZATCA. Semantic values stay pinned while the syntax around them is rewritten. That is the whole product.
| FIELD | UBL 2.1 | CANONICAL AST | CII | ZATCA |
|---|---|---|---|---|
| document.id | cbc:ID → INV-2026-088 | id: INV-2026-088 | ram:ID → INV-2026-088 | cbc:ID → INV-2026-088 |
| issue.date | cbc:IssueDate | issueDate | udt:DateTimeString @102 | cbc:IssueDate |
| seller.tax | PartyTaxScheme / CompanyID | seller.taxId | SpecifiedTaxRegistration | CompanyID · 15-digit |
| line.tax | ClassifiedTaxCategory | taxes[] {code, rate} | ApplicableTradeTax | TaxSubtotal / Category |
| payable | LegalMonetaryTotal | totals.payableAmount | DuePayableAmount | LegalMonetaryTotal |
| clearance | ProfileID · CustomizationID | extensions[] | GuidelineParameter | UUID · ICV · PIH |
THE ORANGE COLUMN IS THE PRODUCT. EVERYTHING ELSE IS A DIALECT.
N formats don't need N × (N − 1) converters.
Six dialects, thirty bespoke mappings — or six adapters into one hub. Toggle the collapse.
CONNECTIONS
30
N × (N − 1) bespoke mappings. Add a format, touch everything.
Cleared to cross.
One document, stamped at every gate. Clearance status stays honest: validated technically, never submitted to any authority.
SYNCLIUM TRANSIT RECORD
Nº 088-2026-EU-SA
- DOCUMENT ID
- INV-2026-088
- ORIGIN
- EU / PEPPOL
- DESTINATION
- SAUDI ARABIA
- SOURCE FORMAT
- UBL 2.1 · BIS 3.0
- TARGET FORMAT
- ZATCA PHASE 2
- SEMANTIC INTEGRITY
- LOSSLESS · 6/6 FIELDS
- VALIDATION STATE
- STRUCTURE + RULES PASS
- CLEARANCE STATUS
- NOT SUBMITTED · TECHNICAL ONLY
Watch the machine compile.
Real UBL in, real engine call, real ZATCA out. Telemetry below is measured in your browser against /api/v1 — never invented.
- SOURCE
- DETECT
- CANONICAL
- VALIDATE
- EMIT
- TARGET
SOURCE // UBL 2.1
SYNCLIUM CORE // VALIDATION GATE
RULES
TARGET // ZATCA
—
The deadlines are real. The engine is ready.
Select a jurisdiction. The chamber reconfigures to its standard, clearance model, and Synclium support state.
JURISDICTION
SAUDI ARABIA
MANDATE TIMING
PHASE 2 · WAVES 1–15
STANDARD
ZATCA Fatoora Phase 2 XML
CLEARANCE MODEL
ZATCA clearance + reporting API
Add a format. Count the damage.
Every new dialect multiplies point-to-point work. The hub divides it.
POINT-TO-POINT
N×(N−1)
= 6 converters
SYNCLIUM HUB
2×N
= 6 adapters
Nothing is stored. Watch it leave.
Invoices live in transient RAM for the duration of one compilation — then the chamber is empty. No disk, no database, no retention.
SCOPE HONESTY: “ZERO DATA” COVERS SYNCLIUM ITSELF. RATE-LIMIT COUNTERS (SALTED HASHES, 24H TTL) AND ANY UPSTREAM AI PROVIDER RETENTION APPLY PER THEIR OWN POLICIES — SEE DOCS.
Read the machine before you trust it.
Every adapter is three pure functions — import, export, validate — covered by golden-file matrices. MIT licensed. Extend it in a day.
REPOSITORY // PACKAGES
- packages/corecanonical AST · zod + JSON schema
- packages/formats/ublreference dialect adapter
- packages/formats/facturxCII adapter
- packages/formats/zatcaFatoora adapter (wraps UBL)
- packages/formats/registrydetect · convert · validate
- packages/extractGemini · Claude · mock providers
- packages/clioib convert / validate / extract
- packages/apiFastify · OpenAPI · stateless
- examples/fixtures + 554-field eval set
EVAL // 554 VERIFIED FIELDS
- mock baseline100.0% · 554/554
deterministic · CI-enforced
- Gemini Flash96.9% · 537/554
free tier · GEMINI_API_KEY
- Claude 3.5 Sonnet97.8% · 542/554
ANTHROPIC_API_KEY
11 // THE SITE ENDS. THE MACHINE REMAINS.
Cross the border.
synclium v1.0 · stateless · mit
type 'run' to compile INV-2026-088 → zatca
