Peppol BIS Billing 3.0.21 · UBL

BR-CO-24: Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or…

Peppol BIS Billing 3.0.21 · UBL

fatalbusiness

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.

Stored validation assertion
exists(cbc:AllowanceChargeReason) or exists(cbc:AllowanceChargeReasonCode)

BR-CO-24 is a fatal rule in the business layer of Peppol BIS Billing 3.0.21 · 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