BR-TMP-CVD-01Das Bildungsschema für […] "Item classification identifier" (BT-158) ist aus der Codeliste UNTDID 7143 zu wählen.
Official rule text
In a CVD invoice every item classification identifier (BT-158) on the invoice lines must carry a scheme from the UNTDID 7143 code list — or CVD, which the list does not contain. A missing or empty listID gets through the expression, though: the variable puts CVD with its surrounding spaces in front of the list, and the double space at the join matches an empty value. A missing attribute is rejected by BR-65, an empty listID="" only in CII — in UBL, BR-65 merely checks that the attribute exists.
- Severity
- Error
- Applies to
- CII, UBL
- Rule set
- v2026-08-31
- Checked on
Written and checked against the official KoSIT rule set by Dmytro Yalanskyi, NormAPI.
Why does BR-TMP-CVD-01 happen?
The scheme is an in-house abbreviation or a variant spelling — "cvd" in lower case, say, or the name of a register instead of its code. Every classification on the lines is checked, not only the vehicle category. In an ordinary XRechnung BR-CL-13 reports this; in the CVD variant the KoSIT validator configuration downgrades BR-CL-13 to a notice, because that rule does not know CVD, and BR-TMP-CVD-01 takes over the check as an error.
What the validator checks
The expression the official KoSIT rule set evaluates — not paraphrased, but read from the Schematron file it ships. UBL and CII address different document trees, so the same rule reads differently in each.
- UBL
((not(contains(normalize-space(@listID), ' ')) and contains($UNTDID-7143-CVD-CODES, concat(' ', normalize-space(@listID), ' '))))Variables in it
- $UNTDID-7143-CVD-CODES
- concat($CVD-CODE, $UNTDID-7143-CODES)
- $CVD-CODE
- ' CVD '
- $UNTDID-7143-CODES
- 'AA AB AC AD AE AF AG AH AI AJ …'185 values
- CII
((not(contains(normalize-space(@listID), ' ')) and contains($UNTDID-7143-CVD-CODES, concat(' ', normalize-space(@listID), ' '))))Variables in it
- $UNTDID-7143-CVD-CODES
- concat($CVD-CODE, $UNTDID-7143-CODES)
- $CVD-CODE
- ' CVD '
- $UNTDID-7143-CODES
- 'AA AB AC AD AE AF AG AH AI AJ …'185 values
Source: rule set v2026-08-31
How do you fix BR-TMP-CVD-01?
Use either CVD — for the vehicle category only — or a code from UNTDID 7143 as listID, spelled exactly as listed: on cac:CommodityClassification/cbc:ItemClassificationCode in UBL, on ram:DesignatedProductClassification/ram:ClassCode in CII. Make sure yourself that the attribute is never empty, because in UBL the rule set does not catch that case. BR-CL-13 still appearing for the code CVD in a valid CVD invoice is not a fault in the document.
In the XML
A UBL fragment. The CII path is named above — same change, different element names.
<cac:Item>
<cbc:Name>Gelenkbus 18 m, batterieelektrisch</cbc:Name>
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="cvd">M3</cbc:ItemClassificationCode>
</cac:CommodityClassification>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:ClassifiedTaxCategory>
<cac:AdditionalItemProperty>
<cbc:Name>cva</cbc:Name>
<cbc:Value>zero-emission</cbc:Value>
</cac:AdditionalItemProperty>
</cac:Item><cac:Item>
<cbc:Name>Gelenkbus 18 m, batterieelektrisch</cbc:Name>
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="CVD">M3</cbc:ItemClassificationCode>
</cac:CommodityClassification>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:ClassifiedTaxCategory>
<cac:AdditionalItemProperty>
<cbc:Name>cva</cbc:Name>
<cbc:Value>zero-emission</cbc:Value>
</cac:AdditionalItemProperty>
</cac:Item>Related rules
NormAPI provides technical validation, not tax or legal advice.