BR-CO-24

Every charge on an invoice line (BG-28) must carry a reason — in plain text (BT-144), as a code (BT-145), or both.

Severity
Error
Applies to
CII, UBL
Rule set
v2026-01-31

Official rule text

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.

Why does BR-CO-24 happen?

The rarest of the four cases, and therefore the one most likely to have no field in the mapping at all: the amount is passed through because the total needs it, and the reason is dropped.

How do you fix BR-CO-24?

Write cbc:AllowanceChargeReason or cbc:AllowanceChargeReasonCode into the line's cac:AllowanceCharge with cbc:ChargeIndicator true in UBL, or ram:Reason or ram:ReasonCode into the line's ram:SpecifiedTradeAllowanceCharge in CII.

In the XML

A UBL fragment. The CII path is named above — same change, different element names.

Fails
<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
    <cbc:Amount currencyID="EUR">25.00</cbc:Amount>
  </cac:AllowanceCharge>
</cac:InvoiceLine>
Fixed
<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
    <cbc:AllowanceChargeReason>Montage</cbc:AllowanceChargeReason>
    <cbc:Amount currencyID="EUR">25.00</cbc:Amount>
  </cac:AllowanceCharge>
</cac:InvoiceLine>

NormAPI provides technical validation, not tax or legal advice.