UBL 2.3

OASIS · Universal Business Language SIGNET support: Normative mapping — machine-verified for Invoice

What it is

UBL, the Universal Business Language, is the OASIS standard defining a royalty-free library of XML business documents — orders, catalogues, invoices, tenders, and many more — built from shared, reusable components. It is one of the two syntaxes recognised under the EU e-invoicing framework and the document syntax on which Peppol BIS is built. UBL 2.3 is the current major revision.

The standard is maintained by the OASIS UBL Technical Committee. Official reference →

How SIGNET supports it

UBL sits in SIGNET's normative mapping tier. The specification's mapping table binds Order to the UBL 2.3 Order document, Catalogue to the UBL 2.3 Catalogue, Invoice to the UBL Invoice, and Submission to the UBL Tender. A conforming implementation MUST be able to transform between the canonical objects and these documents without loss of the mapped fields.

The Invoice mapping is continuously proven: the reference repository ships a dependency-free transform projecting the canonical invoice into UBL 2.1 as profiled by Peppol BIS Billing 3.0, with an independent verifier reconciling every mapped value. The mapping basis for Order and Catalogue is UBL 2.3, while the shipped invoice transform emits UBL 2.1 because that is the version Peppol BIS Billing profiles — a distinction the specification keeps explicit rather than papering over.

The design intent follows SIGNET's first principle: reuse before invention. Where UBL has already defined the document vocabulary for a lifecycle stage, the canonical model adopts and aligns to it. SIGNET adds the layers UBL does not address — governed agents, policy-as-data, cryptographic provenance — and keeps them cleanly separable, so the UBL projection never entangles them.

Where it lives in the standard

  • Standards Mapping — the normative mapping table
  • Process Layer — Order, Catalogue, Invoice, Submission
  • Schema sources: order.schema.json, catalogue.schema.json, invoice.schema.json, submission.schema.json