SchemaGuard by Ironbark Digital · EN 16931 / Peppol / XRechnung Reference
← All 294 EN 16931 / Peppol Rules & Live Validator
WARNING Official EN 16931 / Peppol / CIUS Rule BT/BG Fields: BT-21

PEPPOL-EN16931-R002 — E-Invoice Validation Rule & Fix

Fixture ID: peppolNoteSubjectCode · XPath: /rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode

1. Why This Rule Triggers (Diagnostic Message)

The document note subject code (BT-21) is "AAI", and Peppol's CII binding forbids it. The rule is titled "No more than one note is allowed on document level", which is not what its second half does: the test is count(ram:IncludedNote) <= 1 and not(ram:IncludedNote/ram:SubjectCode), so a document carrying exactly one note still fails if that note has a subject code. This is a warning rather than an error because it depends on the syntax you emit, which "peppol-bis-3" does not state. generateXRechnungUBL is unaffected — UBL has no element for BT-21, so its binding folds the code into the note text as "#AAI#…" and Peppol's UBL R002 tests only the note count. generateCii omits the element under this profile, so BT-21 will be absent from the CII document you get back. This is a Peppol BIS Billing 3.0 profile rule: it applies because profile is "peppol-bis-3". It does not apply to the en16931, xrechnung-ubl or xrechnung-cii profiles, whose validators will accept the same document.

2. How to Fix PEPPOL-EN16931-R002

Remove noteSubjectCode if you intend to send CII over Peppol, and fold whatever it qualified into the note text itself — the code is a UNTDID 4451 subject qualifier, and Peppol takes the view that a free-text note on a Peppol invoice needs no machine-readable subject. Keep it if you are generating UBL, which is Peppol's mandatory syntax and where the code is carried losslessly.

3. Valid Code / Payload Example

"note": "Delivery in two parts, the second on 2026-09-01."
Test & Validate XML / JSON in Live SchemaGuard Validator →