What this is
A free reference for the EN 16931 and Peppol BIS Billing 3.0 validation rules, written for the person whose invoice just got rejected.
Why it exists
Schematron tells you PEPPOL-EN16931-R003 failed at an XPath. It does not tell
you that Peppol requires a buyer reference even though base EN 16931 does not, that receiving
systems use it to route the invoice internally, or that an order reference works instead.
Turning the first into the second is the work, and it is done here by hand, rule by rule.
What it covers
56 rules — the ones real invoices actually hit, measured by running a corpus of 151 documents from the official OpenPEPPOL and CEN repositories through both rule sets. Not all ~311 rules: the long tail is written as people hit it. If you hit a rule that is not here, that is worth telling us about.
Which versions
Explanations track Peppol BIS Billing 3.0 v3.0.20 and CEN EN 16931
validation-1.3.16. Rule sets move roughly twice a year, typically May and
November.
Accuracy
These are independent explanations, not an official publication. The normative text is the Schematron published by OpenPEPPOL and CEN. Where this reference and the artefacts disagree, the artefacts are right — and we would like to hear about it.