What it means
This rule checks that no cac:InvoiceLine or cac:CreditNoteLine contains a cac:SubInvoiceLine. UBL lets a line hold smaller lines, for example the parts of a bundle. EN 16931 has a flat list of lines (BG-25) and no nesting. This particular test checks cac:SubInvoiceLine, not cac:SubCreditNoteLine.
Why it matters
EN 16931 does not use cac:SubInvoiceLine within an invoice or credit note line.
How to fix it
Decide what the buyer should see. Either list the parts as ordinary lines, or keep one line for the bundle and describe its contents in the item description. Keep each amount on one line only, so it is not counted twice in the totals. If you build the XML yourself, remove cac:SubInvoiceLine from the lines.
Once the file is corrected, check it again for free: Validate an invoice against EN 16931
Or fix the invoice in a form and download the corrected file, for 1 credit: Fix a rejected e-invoice
The rule as published
A UBL invoice should not include the InvoiceLine SubInvoiceLine Where this rule applies
| Rule set | Version |
|---|---|
| EN 16931 (UBL) | 1.3.17 |
| EN 16931 (UBL credit note) | 1.3.17 |
| XRechnung 3.0 (UBL) | 3.0.2 |
| XRechnung 3.0 (UBL credit note) | 3.0.2 |
| Peppol BIS Billing 3.0 (invoice) | 2026.5 |
| Peppol BIS Billing 3.0 (credit note) | 2026.5 |
| SI-UBL 2.0 / NLCIUS (invoice) | 2.0.3.13 |
| SI-UBL 2.0 / NLCIUS (credit note) | 2.0.3.13 |
| France CTC (UBL invoice) | 1.4.0-04 |
| France CTC (UBL credit note) | 1.4.0-04 |
| CIUS-RO UBL Invoice 1.0.9 | 1.0.9 |
| CIUS-RO UBL Credit Note 1.0.9 | 1.0.9 |
Check your file
Drop your e-invoice to see whether UBL-CR-646 still fails, and which other rules do.
Related rules
- UBL-CR-647 Lines should not use an item price extension
- UBL-CR-648 The specification identifier should have no scheme attribute
- UBL-CR-649 The business process identifier should have no scheme attribute
- UBL-CR-650 The invoice number must have no scheme attribute
- UBL-CR-651 A top-level SalesOrderID should have no scheme attribute
- UBL-CR-652 VAT and tax numbers should have no scheme attribute