BR-22: Each invoice line needs a quantity
Each invoice line needs a quantity; restore the invoiced quantity from the source transaction.
What the rule says
[BR-22]-Each Invoice line (BG-25) shall have an Invoiced quantity (BT-129).
Official en16931 source, version 1.3.16. EUPL 1.2; sources, licences and notices. Syntax and business checks are separate; this is not certification.
Each invoice line needs a quantity
Each invoice line needs a quantity. The controlled example changes the specific field or group named by this rule. Remove only /*/cac:InvoiceLine[1]/cbc:InvoicedQuantity.
Business terms: BT-129.
Restore the invoiced quantity from the source transaction.
Reproduced failure and correction
Tested on 2 November 2026 with the production SaxonC-HE 13.1 / saxonche 13.1.1 engine, en16931 mode, UBL. The XSD passes; the report then contains BR-22. Restoring this fragment makes the complete original invoice pass the selected checks.
[BR-22]-Each Invoice line (BG-25) shall have an Invoiced quantity (BT-129).Additional triggered rules: 1. BR-23. Counts include distinct error and warning codes; the target code is excluded.
Precise mutated XPath: /*/cac:InvoiceLine[1]/cbc:InvoicedQuantity.
Before: triggers this rule
<cac:InvoiceLine xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:ID>Zeitschrift [...]</cbc:ID>
<cbc:Note>Die letzte Lieferung im Rahmen des abgerechneten Abonnements erfolgt in 12/2016 Lieferung erfolgt / erfolgte direkt vom Verlag</cbc:Note>
<cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
<cac:OrderLineReference>
<cbc:LineID>6171175.1</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cbc:Description>Zeitschrift Inland</cbc:Description>
<cbc:Name>Zeitschrift [...]</cbc:Name>
<cac:SellersItemIdentification>
<cbc:ID>246</cbc:ID>
</cac:SellersItemIdentification>
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="IB">0721-880X</cbc:ItemClassificationCode>
</cac:CommodityClassification>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21</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>
After: passes
<cac:InvoiceLine xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:ID>Zeitschrift [...]</cbc:ID>
<cbc:Note>Die letzte Lieferung im Rahmen des abgerechneten Abonnements erfolgt in 12/2016 Lieferung erfolgt / erfolgte direkt vom Verlag</cbc:Note>
<cbc:InvoicedQuantity unitCode="XPP">1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
<cac:OrderLineReference>
<cbc:LineID>6171175.1</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cbc:Description>Zeitschrift Inland</cbc:Description>
<cbc:Name>Zeitschrift [...]</cbc:Name>
<cac:SellersItemIdentification>
<cbc:ID>246</cbc:ID>
</cac:SellersItemIdentification>
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="IB">0721-880X</cbc:ItemClassificationCode>
</cac:CommodityClassification>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21</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 context shown is part of a complete invoice; it is not a standalone invoice. Mutation: remove at /*/cac:InvoiceLine[1]/cbc:InvoicedQuantity. The passing baseline is validated with the selected pinned package. UBL examples use a controlled single-line adaptation of the official XRechnung example; the CII example uses the official EN 16931 baseline.
Download complete failing invoice · Download complete passing invoice
Check the rest of the invoice
Repair the source data and exporter, then validate the complete invoice again with the same package. Review every remaining error and warning; a passing rule is not a guarantee of recipient acceptance.
EN 16931 syntax and business checks · XRechnung profile requirements · Pro/Team batch checks.