BR-23: Invoiced quantity unit of measure code (BT-130) is required
What this rule requires
Invoiced quantity unit of measure code (BT-130) is required.
ExampleEN 16931 (UBL)
An invoice built like a valid one, except for this:
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity>1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Widget</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>The validator says: Invoiced quantity unit of measure code (BT-130) is required and the document does not contain it.
Official validation message
This is the official EN 16931 validation message for this rule, quoted verbatim in English from the validation artefacts below. It is not translated: a translation would no longer be the official text.
[BR-23]-An Invoice line (BG-25) shall have an Invoiced quantity unit of measure code (BT-130).Quoted verbatim and unmodified from the official EN 16931 validation artefacts published by CEN/TC 434, release validation-1.3.16 of April 13, 2026, licensed under the European Union Public Licence v. 1.2. Provided without warranty of any kind, including as to accuracy. Source and licence →
How to fix it
Add Invoiced quantity unit of measure code to the invoice.
Frequently asked questions
- What does BR-23 mean?
- Invoiced quantity unit of measure code (BT-130) is required. The rule runs under EN 16931 (UBL), Peppol BIS 3.0, and XRechnung 3.0 (UBL).
- How do I fix BR-23?
- Add Invoiced quantity unit of measure code to the invoice. In UBL the element is /Invoice/cac:InvoiceLine/cbc:InvoicedQuantity/@unitCode.
Runs under these profiles
- EN 16931 (UBL)
- Peppol BIS 3.0
- XRechnung 3.0 (UBL)
Element path
- Invoiced quantity unit of measure code (BT-130)UBL /
Invoice/ cac:InvoiceLine/ cbc:InvoicedQuantity/ @unitCodeCII / CrossIndustryInvoice/ SupplyChainTradeTransaction/ IncludedSupplyChainTradeLineItem/ SpecifiedLineTradeDelivery/ BilledQuantity/ @unitCodeRead from what WorkAlio's CII parser accepts — there is no CII writer yet, so this path is not independently verified the way the UBL path is.