What it means
For each CII element whose name ends in Quantity, the test passes if unitCode is absent or if any line's ram:SpecifiedLineTradeDelivery/ram:BilledQuantity has unitCode. The second condition is invoice-wide, not limited to the same line. Billed quantity and its unit are BT-129 and BT-130; price base quantity and its unit are BT-149 and BT-150. The test checks attribute presence, not unit-code values.
Why it matters
A price base quantity describes the basis of the unit price, not necessarily what the billed quantity measures. Its unit does not replace the billed quantity's own unit field.
How to fix it
Check ram:BilledQuantity inside ram:SpecifiedLineTradeDelivery on your invoice lines. Add the appropriate unitCode where needed, such as C62 for pieces, HUR for hours, DAY for days, KGM for kilograms or LTR for litres. Do not copy a price base unit without checking that it is correct for the billed quantity. Remove a unitCode elsewhere only if it is unintended. 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
unitCode should not be present Where this rule applies
| Rule set | Version |
|---|---|
| EN 16931 (CII) | 1.3.17 |
| XRechnung 3.0 (CII) | 3.0.2 |
| NLCIUS (CII) | 1.0.3.13 |
| France CTC (CII) | 1.4.0-04 |
Check your file
Drop your e-invoice to see whether CII-DT-033 still fails, and which other rules do.
Related rules
- CII-DT-034 Remove unitCodeListID from quantities
- CII-DT-035 Remove unitCodeListAgencyID from quantities
- CII-DT-036 Remove unitCodeListAgencyName from quantities
- CII-DT-037 Use VAT for the VAT tax type
- CII-DT-038 Remove CalculatedRate from tax blocks
- CII-DT-039 Remove calculation sequence numbers from tax blocks