BR-21

Every invoice line (BG-25) must carry a line identifier (BT-126). It is the anchor the recipient uses to discuss or dispute a single row.

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

Official rule text

Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126).

Why does BR-21 happen?

Lines are built as a list whose order implicitly is the number. The index is not written out when serialising, because it was never a field on the source object.

How do you fix BR-21?

Assign an identifier unique within the invoice in BT-126: cbc:ID inside cac:InvoiceLine in UBL, ram:AssociatedDocumentLineDocument/ram:LineID in CII. A counter from 1 is enough.

In the XML

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

Fails
<cac:InvoiceLine>
  <cbc:InvoicedQuantity unitCode="C62">10</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Beratungsleistung</cbc:Name>
  </cac:Item>
  <cac:Price>
    <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
  </cac:Price>
</cac:InvoiceLine>
Fixed
<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">10</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Beratungsleistung</cbc:Name>
  </cac:Item>
  <cac:Price>
    <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
  </cac:Price>
</cac:InvoiceLine>

NormAPI provides technical validation, not tax or legal advice.