What it means
The XPath checks every cac:InvoiceLine and cac:CreditNoteLine for cac:Price/cbc:ValidityPeriod. It does not select cac:Price/cac:ValidityPeriod and does not check a period directly under the line.
Why it matters
An XML element's namespace is part of its identity, so this XPath matches cbc:ValidityPeriod but not cac:ValidityPeriod.
How to fix it
Check the element's namespace, then remove cbc:ValidityPeriod from cac:Price in each affected cac:InvoiceLine or cac:CreditNoteLine. If you need to keep price validity dates as text, use the line note (BT-127) or invoice note (BT-22). Review cac:ValidityPeriod separately if present, because this XPath does not check it. Export the corrected file and recheck it.
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 Item Price ValidityPeriod 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-629 still fails, and which other rules do.
Related rules
- UBL-CR-630 Check the price list element
- UBL-CR-632 A discount identifier does not belong inside the line price
- UBL-CR-633 A discount reason code does not belong inside the line price
- UBL-CR-634 Discount reason text does not belong inside the line price
- UBL-CR-635 A discount multiplier does not belong inside the line price
- UBL-CR-636 A prepaid flag does not belong inside the line price