# BR-21 Invoice line identifier is required

Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126) that is unique within the invoice.

## Problem Description

> **ERROR**: EN 16931 core business rule (CEN)

## Context and Significance

This is an EN 16931 core rule. The line identifier lets credit notes, disputes and corrections refer to one specific line. BR-21 only checks that the value is filled, not that it is unique. The error usually comes from an export that writes an empty line number, for example for text or subtotal lines taken over from a PDF.

## Solution

Give every cac:InvoiceLine a cbc:ID value, for example 1, 2, 3, ensuring no line is left without an identifier.

- [Validate XML](/en/xrechnung-validator?source=resource&rule=BR-21)
- [Convert invoice](/en/pdf-to-xrechnung?source=resource&rule=BR-21)

## Valid Examples

- BT-126 = 1 on the first line, BT-126 = 2 on the second line

## Invalid Examples

- A cac:InvoiceLine with an empty cbc:ID (<cbc:ID></cbc:ID>), or a CII line with an empty ram:AssociatedDocumentLineDocument/ram:LineID; a missing cbc:ID in UBL is already an XML schema error

## Code Examples

### Valid XML
```
<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
</cac:InvoiceLine>
```

### Invalid XML
```
<cac:InvoiceLine>
  <cbc:ID></cbc:ID>
  <cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
</cac:InvoiceLine>
```

## Affected Fields

- [BT-126 Invoice line identifier](/resources/xrechnung/bt-126-invoice-line-identifier)

## Related Rules

- [BR-16](/resources/kosit-validator-errors/br-16-at-least-one-invoice-line-required)

## Validation Tools

- [Official KoSIT Validator](https://github.com/itplr-kosit/validator): Run the official KoSIT validator with the XRechnung configuration to check EN 16931 and XRechnung rules.
- [Convert PDF to XRechnung](/pdf-to-xrechnung): Find validation errors during conversion and review each correction.

## Related Resources

- [Official Specification](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/)
- [Test Suite](https://github.com/itplr-kosit/xrechnung-testsuite)
- [All validation errors](/resources/kosit-validator-errors): Overview of the EN 16931, XRechnung and Peppol validation rules explained here.
