EN16931 / XRechnung / Peppol BIS 3 Validator

PEPPOL-EN16931-P0101

fatal UBL auto-fix

Rule text

[PEPPOL-EN16931-P0101]-Credit note type code MUST be set according to the profile.

Automatic repair

A credit note type code (BT-3) not allowed in the Peppol billing process (e.g. 261 self-billed credit note) is mapped to 381 (credit note). Optional, Peppol profile only; the customer confirms.

This rule is in the deterministic set of our repair engine (UBL 2.1; measured 2026-10-23: XRechnung 15 broken test invoices accepted after repair, 45 valid invoices unchanged; Peppol BIS Billing 3: 10 official examples unchanged, 40 mutated invoices: 36 accepted after repair, 4 rejected as expected — one documented limit, two with the repair parameter switched off, one where no address could be derived; profile conversion of 33 XRechnung test invoices to Peppol: 30 accepted). For UN/CEFACT CII (Factur-X / ZUGFeRD EN 16931 XML, XRechnung CII) the engine repairs the totals chain, VAT breakdown, rounding, decimals and element order (measured 2026-10-24: 53 valid CEN and XRechnung CII invoices unchanged; 28 broken invoices: 27 accepted after repair, 1 rejected as expected because a VAT exemption reason cannot be derived). Repair is available in the paid Repair API — see Pricing.

Where the rule is checked

SyntaxSeverityContext (XPath)Test (XPath)
Peppol-UBLfatalcbc:CreditNoteTypeCodenot($profile = ('01','02')) or (some $code in tokenize('381 396 81 83 532', '\s') satisfies normalize-space(text()) = $code)

Source: Peppol BIS Billing 3.0 Schematron, UBL (OpenPeppol, docs.peppol.eu validation artefacts 3.0.21).

Check your invoice against this rule