Skip to content

BR-21: Invoice line identifier (BT-126) is missing

Official message

[BR-21] Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126).

EN 16931 (CII) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31

[BR-21] Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126).

EN 16931 (UBL) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31

[BR-21] Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126).

Factur-X / ZUGFeRD EN 16931 · Error · Message language: English · Version: Factur-X 1.08 / ZUGFeRD 2.4
Severity
Error The invoice is invalid and may be rejected by the recipient.
Applies to
EN 16931 (CII), EN 16931 (UBL), Factur-X / ZUGFeRD EN 16931
Affected fields
BG-25, BT-126

What does this mean?

Every invoice line (BG-25) must have an invoice line identifier (BT-126) that identifies it within the invoice. It is missing or empty for at least one line.

Typical causes

The generating system does not number the lines.
For text or subtotal rows that are output as lines, the identifier stays empty.

How to fix the error

Give every line an identifier, e.g. consecutively 1, 2, 3.
CII: ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID, UBL: cac:InvoiceLine/cbc:ID or cac:CreditNoteLine/cbc:ID.
Generate and validate the invoice again.

In E-Rechnungsfreund

In the invoice form ("Experte" view), section "Rechnungspositionen (BG-25)" (invoice lines), fill in the field "Pos.-Nr. (BT-126)" (line number) for every line. In the simple view ("Einfach") empty line numbers are assigned consecutively.

Example

Wrong

<ram:IncludedSupplyChainTradeLineItem>
  <ram:AssociatedDocumentLineDocument>
    <ram:LineID></ram:LineID>
  </ram:AssociatedDocumentLineDocument>
  ...
</ram:IncludedSupplyChainTradeLineItem>

Correct

<ram:IncludedSupplyChainTradeLineItem>
  <ram:AssociatedDocumentLineDocument>
    <ram:LineID>1</ram:LineID>
  </ram:AssociatedDocumentLineDocument>
  ...
</ram:IncludedSupplyChainTradeLineItem>
For developers: test expression per syntax

EN 16931 (CII) (CII)

Context: //ram:IncludedSupplyChainTradeLineItem

normalize-space(ram:AssociatedDocumentLineDocument/ram:LineID) != ''

EN 16931 (UBL) (UBL)

Context: cac:InvoiceLine | cac:CreditNoteLine

normalize-space(cbc:ID) != ''

Factur-X / ZUGFeRD EN 16931 (CII)

Technical ID in the source: FX-SCH-A-000200

Context: //ram:IncludedSupplyChainTradeLineItem

(ram:AssociatedDocumentLineDocument/ram:LineID!='')

Related validation rules

  • BR-01: Specification identifier (BT-24) is missing
  • BR-02: Invoice number (BT-1) is missing
  • BR-03: Invoice issue date (BT-2) is missing
  • BR-04: Invoice type code (BT-3) is missing
  • BR-05: Invoice currency code (BT-5) is missing
  • BR-06: Seller name (BT-27) is missing

Last updated:
Explanation of the validation rule, not legal or tax advice.