Skip to content
GitHub

Beyond the EU

Peppol PINT and Saudi ZATCA are UBL documents, so they run through the UBL parser; each adds its own fields in extensions.

Format ID Identifier What is mapped
pint-sg urn:peppol:pint:billing-1@sg-1 GST is a VAT-like scheme (vatId), UEN from the endpoint, GST categories used: extensions.sg
pint-aunz urn:peppol:pint:{billing,selfbilling}-1@aunz-1 ABN or NZBN, GST: extensions.au or extensions.nz by country; self-billing sets selfBilled
pint-jp urn:peppol:pint:{billing,selfbilling,nontaxinvoice}-1@jp-1 Qualified invoice issuer number (T + 13 digits) in extensions.jp; the non-tax-registered variant has none
pint-my urn:peppol:pint:billing-1@my-1 TIN (scheme GST) and SST (scheme VAT), MSIC code, FTA / certified exporter / customs references, LHDN UUID: extensions.my
pint-ae urn:peppol:pint:billing-1@ae-1 The eight transaction-type flags, UUID, TIN, registration type and authority, exchange rate; line commodity and nature codes in line.national: extensions.ae
pint-om, pint-eu …@om-1, …@eu-1 Detected and parsed as plain UBL
peppol-pint urn:peppol:pint:billing-1, other @xx-n, older BIS Billing International Plain UBL mapping
zatca-ubl ProfileID reporting:1.0 See below

Category codes of PINT SG and MY are not UNCL 5305; categoryCode keeps them as sent. The PINT Schematron is not bundled (OpenPEPPOL’s copyright statement forbids redistribution, see validation/NOTICE), so PINT gets the UBL XSD layer only.

ZATCA (Saudi Arabia). InvoiceTypeCode/@name (NNPNESB) gives the standard/simplified subtype and the third-party, nominal, exports, summary and self-billed flags. UUID, ICV, PIH, the invoice hash, the XAdES signature (the cryptographic stamp) and the QR code go into clearance[0] (authority SA:ZATCA) and extensions.sa; the QR TLV is decoded into fields and compared with the invoice. The invoice hash is recomputed with ZATCA’s transforms (drop UBLExtensions, cac:Signature and the QR reference, canonicalize, SHA-256) and compared with the signature digest and QR tag 6: extensions.sa.hashCheck says match, mismatch or not-checked, and a mismatch is a warning, never an error. Credit notes (type 381 on an Invoice root) become kind: 'creditNote'. Hijri dates in date fields are converted with the tabular calendar (it can be a day off from Umm al-Qura), recorded in extensions.sa.hijriDates and source.derived.