PEPPOL SBDH Validator
Client-side validator for the SBDH (Standard Business Document Header) envelope. Checks sender / receiver ICDs, document type, PEPPOL BIS 3.0 process ID, RFC 3339 timestamps, payload presence — without sending a byte to a server.
Paste a SBDH envelope (StandardBusinessDocument) to validate the PEPPOL header.
How it works
SBDH (Standard Business Document Header) is the XML envelope normalised
by ISO/IEC 9735, profiled by UN/CEFACT and refined by GS1 XML 3.0 to
wrap a business document (UBL Invoice, UBL CreditNote, EDIFACT INVOIC…)
for transport. On the OpenPEPPOL network, every document handed off
between Access Points over AS4 is packed inside a
<StandardBusinessDocument> carrying:
- The ISO 6523 sender and receiver identifiers (e.g.
0192:991825827). - The exact payload nature (Standard URI, TypeVersion, local Type).
- An instance GUID (
InstanceIdentifier) for traceability. - The PEPPOL
DOCUMENTIDandPROCESSIDBusinessScope.
Validator pipeline:
- XML parsing (DOMParser in browser, fast-xml-parser fallback).
- Lookup of the
StandardBusinessDocumentroot. - Extraction of each header block (Sender, Receiver, DocumentIdentification, BusinessScope).
- Application of the rules below.
Rules checked
- Root element:
StandardBusinessDocument(any prefix). The canonical namespace ishttp://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader— a different namespace raises a warning, not an error. - HeaderVersion: must be exactly
1.0(SBDH 1.3 still uses the1.0header tag). Any other value, or absence, raises a blocking error. - Sender / Receiver: at least one of each, with a
non-empty
<Identifier>. The ICD scheme (the prefix before:) is checked against the ISO 6523 list below — an unknown ICD raises a warning. - DocumentIdentification: the five fields
Standard,TypeVersion,InstanceIdentifier,Type,CreationDateAndTimeare mandatory.CreationDateAndTimemust be RFC 3339 (YYYY-MM-DDThh:mm:ssZor with explicit offset). - BusinessScope: PEPPOL requires two
<Scope>entries — one of typeDOCUMENTID, one of typePROCESSID. A missing entry raises a warning.InstanceIdentifiervalues shaped asurn:peppol:bis:…are checked against the bundled list. - Loopback: when Sender and Receiver carry the exact same value, a warning is emitted (most often unintentional in integration).
- Payload presence: a business element must follow the
<StandardBusinessDocumentHeader>; a body-lessStandardBusinessDocumentraises a warning.
Supported ISO 6523 ICD schemes
The list below covers the ICDs actively used on the OpenPEPPOL network. The full OASIS registry contains ~250 codes — we bundle the 68 most-used ones for recognition and labelling.
| ICD code | Registry / country |
|---|---|
0002 | FR SIRENE |
0007 | SE Organisationsnummer |
0009 | FR SIRET |
0037 | LY-FI Finnish OVT |
0060 | DUNS |
0088 | GS1 GLN |
0090 | SST |
0096 | DK CVR (legacy) |
0097 | IT Fiscal Code (CF) |
0106 | EU VIES VAT |
0130 | DG GROW Directorate |
0135 | SIA Object Identifier |
0142 | SECETI |
0151 | AU Business Number (ABN) |
0183 | CH UID |
0184 | DK CVR-P |
0190 | NL Chamber of Commerce (KVK) |
0191 | EE Commercial Register |
0192 | NO Enhetsregisteret |
0193 | UBL.BE |
0195 | SG Unique Entity Number (UEN) |
0196 | IS Kennitala |
0198 | DK ERST (Erhvervsstyrelsen) |
0199 | LEI (Legal Entity Identifier) |
0200 | LV Register |
0201 | IT IPA Index |
0204 | DE Leitweg-ID (LWID) |
0208 | BE CBE (Crossroads Bank for Enterprises) |
0209 | GS1 Identification Keys |
0210 | IT Codice Fiscale (CF) |
0211 | IT Partita IVA (VAT) |
0212 | SE F-skattebevis |
0213 | BE Belgian Registration |
0218 | FI Y-tunnus (Business ID) |
0221 | JP CGI Corporate Number |
0230 | CN Unified Social Credit Identifier |
9901 | DK P-nummer (legacy) |
9910 | HU VAT |
9913 | ES VAT |
9914 | AT VAT |
9915 | AT Government |
9918 | IBAN (international bank account) |
9920 | ES VAT (legacy) |
9922 | AD VAT |
9923 | AL VAT |
9924 | BA VAT |
9925 | BE VAT |
9926 | BG VAT |
9927 | CY VAT |
9928 | CZ VAT |
9929 | DE VAT |
9930 | EE VAT |
9931 | GR VAT |
9932 | ES VAT |
9933 | FI VAT |
9934 | FR VAT |
9935 | GB VAT |
9936 | HR VAT |
9937 | LU VAT |
9938 | LV VAT |
9939 | LT VAT |
9940 | MT VAT |
9941 | NL VAT |
9942 | PT VAT |
9943 | RO VAT |
9944 | SE VAT |
9945 | SI VAT |
9946 | SK VAT |
PEPPOL BIS 3.0 identifiers recognised
The validator recognises the common PEPPOL BIS 3.0 identifiers and attaches a label:
urn:peppol:bis:billing:3.0:invoice— Invoice.urn:peppol:bis:billing:3.0:creditnote— CreditNote.urn:peppol:bis:ordering:3.0:order— Order.urn:peppol:bis:ordering:3.0:orderresponse— OrderResponse.urn:peppol:bis:despatch:3.0:despatchadvice— DespatchAdvice.urn:peppol:bis:catalogue:3.0:catalogue— Catalogue.urn:peppol:bis:mlr:3.0:mlr— Message Level Response.
Process IDs:
urn:peppol:bis:billing:3.0— Billing 3.0 process.urn:peppol:bis:ordering:3.0— Ordering 3.0 process.urn:peppol:bis:despatch:3.0— Despatch 3.0 process.
Limits
-
No full XSD validation of the envelope — only the rules above. The
official
StandardBusinessDocumentHeader.xsdis strict on a few secondary cardinalities we do not cover. - No validation of the wrapped payload. If the body is a UBL Invoice, run it through UBL 2.1 Validator or PEPPOL Validator downstream.
- No signature or TLS chain verification — the envelope is examined in cleartext, outside the AS4 transport layer.
Privacy
Related documentation
- UBL / PEPPOL — overview of the OpenPEPPOL network.
- PEPPOL BIS Billing 3.0 — reference specification for invoices on PEPPOL.
- PEPPOL Code Lists — the up-to-date list of document type and process IDs.
- UN/CEFACT SBDH 1.3 — the official XSD and implementation guide.