BR-CO-24: Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or…
Peppol BIS Billing 3.0.20 · UBL
Original rule text
[BR-CO-24]-Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145), or both.
exists(cbc:AllowanceChargeReason) or exists(cbc:AllowanceChargeReasonCode)BR-CO-24 is a fatal rule in the business layer of Peppol BIS Billing 3.0.20 · UBL. An invoice that breaks it is rejected. It refers to BG-28, BT-144, BT-145.
What this rule requires
BR-CO-24 requires every invoice line charge (BG-28) to include at least one of cbc:AllowanceChargeReason (BT-144) or cbc:AllowanceChargeReasonCode (BT-145), or both. In UBL this applies to cac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator = true()] and to cac:CreditNoteLine/cac:AllowanceCharge[cbc:ChargeIndicator = true()]; in CII it applies to the corresponding SpecifiedTradeAllowanceCharge with ChargeIndicator true. A document fails when a line charge has neither element, because the test exists(cbc:AllowanceChargeReason) or exists(cbc:AllowanceChargeReasonCode) is false.
How to fix
For each line charge in the invoice or credit note, make sure at least one of cbc:AllowanceChargeReason or cbc:AllowanceChargeReasonCode is present. In a producing system, configure the line charge to output a reason text or reason code; for UBL, add e.g. <cbc:AllowanceChargeReason>...</cbc:AllowanceChargeReason> or <cbc:AllowanceChargeReasonCode>...</cbc:AllowanceChargeReasonCode> to the charge. For CII, add ram:Reason or ram:ReasonCode to the ram:SpecifiedTradeAllowanceCharge that has ram:ChargeIndicator with indicator value 'true'.
Guidance on this rule. The original text above is authoritative.
Where to go next
No published Peppol BIS Billing UBL release comparison lists a change to BR-CO-24.
Validate an invoice against these rules · All release changes