PEPPOL-EN16931-CL002
Reason code MUST be according to subset of UNCL 5189 D.16B.
What does this rule mean?
The allowance reason code is not from UNCL 5189 D.16B.
Peppol narrows the EN 16931 code lists further so every receiver on the network can resolve the value without a prior agreement.
Official rule message (standard)
Reason code MUST be according to subset of UNCL 5189 D.16B.
Where the rule applies
Syntax: CII · UBL
The same rule, expressed twice: UBL and CII name the same fields with different paths. Running a CII file against the UBL rules is why you get errors that mean nothing.
UBL
cac:AllowanceCharge[cbc:ChargeIndicator = 'false']/cbc:AllowanceChargeReasonCode
CII
ram:SpecifiedTradeAllowanceCharge[normalize-space(ram:ChargeIndicator/udt:Indicator) = 'false']/ram:ReasonCode
Technical test
The rule passes when this Schematron expression holds true:
some $code in $UNCL5189
satisfies normalize-space(text()) = $codeHow to fix it
A missing or incorrect business entry only you can supply. Add or correct it, then re-check.
Choose a valid UNCL 5189 code (e.g. 95 discount).
Correct the affected entry in your XML, then re-check the invoice. Validation runs locally in your browser — your file never leaves your machine.
Check an e-invoice here
Drop an XML or ZUGFeRD PDF file here. Validation runs locally in your browser against EN 16931 — your file never leaves your machine.