BR-38: Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or…
Peppol BIS Billing 3.0.20 · UBL
Original rule text
[BR-38]-Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105).
exists(cbc:AllowanceChargeReason) or exists(cbc:AllowanceChargeReasonCode)BR-38 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-21, BT-104, BT-105.
What this rule requires
For each document-level charge (BG-21), the rule requires at least one of a charge reason (BT-104) or a charge reason code (BT-105). In UBL, a document-level charge is an cac:AllowanceCharge with cbc:ChargeIndicator = true(); it must contain either cbc:AllowanceChargeReason or cbc:AllowanceChargeReasonCode. In CII, the ram:SpecifiedTradeAllowanceCharge whose ram:ChargeIndicator has udt:Indicator='true' must contain either ram:Reason or ram:ReasonCode. Because the test uses or, having either element satisfies the rule; having neither fails validation with severity fatal.
How to fix
In the invoice, for every document-level charge that currently lacks both elements, add cbc:AllowanceChargeReason with a text description of the charge, or add cbc:AllowanceChargeReasonCode with a valid reason code, inside the corresponding cac:AllowanceCharge. In CII, add ram:Reason or ram:ReasonCode inside the ram:SpecifiedTradeAllowanceCharge for that charge. If the producing system omits these fields, configure it to populate at least one for each document-level charge. Use only reason code values accepted by the applicable code list.
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-38.
Validate an invoice against these rules · All release changes