Rule family BR-DE-CVD
BR-DE-CVD-04: vehicle category (BT-158) not in the allowed list
ErrorXRechnung business rule (KoSIT)
The rule's own wording
[BR-DE-CVD-04] Ein "Item classification identifier" (BT-158) mit dem Scheme identifier 'CVD' muss einen Wert aus der Liste der zulässigen Fahrzeugkategorien enthalten.Source: KoSIT XRechnung, version 3.0.2 (Schematron 2.6.0)
The fix in the XML
Enter in cbc:ItemClassificationCode with listID CVD exactly one of the categories M1, M2, M3, N1, N2 or N3, in capitals and without any addition; in CII in ram:ClassCode with listID CVD. The category stands in field J of the registration certificate part I.
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="CVD">car</cbc:ItemClassificationCode>
</cac:CommodityClassification><cac:CommodityClassification>
<cbc:ItemClassificationCode listID="CVD">M1</cbc:ItemClassificationCode>
</cac:CommodityClassification>Meaning of the rule
A line of your invoice carries a classification in the scheme CVD, but the value is not one of the permitted vehicle categories. Allowed are the EU categories M1, M2 and M3 for passenger vehicles and buses and N1, N2 and N3 for commercial vehicles, as they appear in the registration certificate. Other spellings, such as car, truck, M1G or a lower-case letter, are rejected because the public body evaluates the categories by machine.
What usually goes wrong
- The category was entered as plain text such as car or van instead of a code.
- A subcategory such as M1G or N1 class II was copied although only the main category counts.
- The code was written in lower case or with spaces.
Questions and answers
Which category does a minibus with nine seats have?
M1 if it has at most eight seats besides the driver's; from nine passenger seats M2 or M3, depending on the total mass. The registration certificate is decisive.
Does the rule also apply to lines without the CVD scheme?
No. A classification with another scheme is untouched; only codes with listID CVD are checked.
EN 16931 fields
- BT-158
- BG-25
See also
Check your invoice
The XRechnung validator reports this rule with the line number and location – right in your browser, without upload.
The rule in detail
- UBL · Context (XPath)
(/ubl:Invoice[$isCVD]/cac:InvoiceLine | /cn:CreditNote[$isCVD]/cac:CreditNoteLine)/cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode- UBL · Schematron test
not(normalize-space(@listID) = 'CVD') or normalize-space(.) = $CVD-VEHICLE-CATEGORY- CII · Context (XPath)
/rsm:CrossIndustryInvoice[$isCVD]/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode- CII · Schematron test
not(normalize-space(@listID) = 'CVD') or normalize-space(.) = $CVD-VEHICLE-CATEGORY
Explanation written on 14 September 2026