BR-CO-23
EN 16931-1 layer: en16931
Checked against Peppol BIS Billing 3.0 2026.5
What does BR-CO-23 mean? Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.
Why did my invoice fail BR-CO-23?
Each invoice line allowance (BG-27) must contain an allowance reason as free text (BT-139) or a coded reason (BT-140), or both. This documents why a discount was applied to a specific line so it can be understood and audited.
Official rule text
Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.
Common causes
- Line-level cac:AllowanceCharge (ChargeIndicator=false) with an amount but neither AllowanceChargeReason nor AllowanceChargeReasonCode.
- Reason set at document level but line-level allowance left unreasoned.
- Reason code empty string treated as missing.
- Per-line discount generated from price rules without a reason.
How do I fix it?
On the line allowance add a reason, e.g. <cac:AllowanceCharge><cbc:ChargeIndicator>false</cbc:ChargeIndicator><cbc:AllowanceChargeReason>Volume discount</cbc:AllowanceChargeReason>...</cac:AllowanceCharge>.
Related rules
BR-CO-03 · BR-CO-04 · BR-CO-05 · BR-CO-06 · BR-CO-07 · BR-CO-08 · BR-CO-09 · BR-CO-10
Check your invoice against this rule
Paste it into the live demo, or call POST /v1/validate. See the quickstart.