Saubere Fahrzeuge (CVD) — was eine Fahrzeugrechnung zusätzlich tragen muss
Die Clean Vehicles Directive verpflichtet öffentliche Auftraggeber, über beschaffte Fahrzeuge zu berichten. Statt einer zweiten Datenerhebung trägt die Rechnung die beiden Angaben selbst — Fahrzeugkategorie und Antriebsart —, und diese acht Regeln prüfen, dass sie da sind und zusammenpassen.
8 Regeln · Regelwerk v2026-08-31
Zwei Codes, in derselben Rechnungszeile
Die Fahrzeugkategorie steht in BT-158 mit dem Schema CVD und muss eine von sechs sein: M1, M2, M3, N1, N2 oder N3 — M für Personen, N für Güter. Die Antriebsart steht als Merkmal BG-32 unter dem Namen cva in BT-161 und kennt genau drei Werte: clean, zero-emission oder other.
BR-DE-CVD-06-a und BR-DE-CVD-06-b binden die beiden aneinander: wer das eine setzt, muss in derselben Zeile genau ein Mal auch das andere setzen. Eine Kategorie ohne Antriebsart ist so wenig verwertbar wie eine Antriebsart ohne Kategorie.
Und die Rechnung muss zur Ausschreibung passen
BR-DE-CVD-01 und BR-DE-CVD-02 machen Vertragsreferenz (BT-12) und Vergabe- oder Losnummer (BT-17) zur Pflicht — beide sind in einer gewöhnlichen XRechnung optional. Ohne sie lässt sich die gemeldete Beschaffung keinem Verfahren zuordnen.
Diese Regeln greifen nur, wenn Sie die CVD-Variante erzeugen. Deren Kennung in BT-24 endet auf #compliant#urn:xeinkauf.de:kosit:xrechnung:cvd_0.9 — eine gewöhnliche XRechnung prüft nichts davon. Welche Kennung Sie verschicken, entscheidet BR-DE-21.
Alle CVD-Regeln
Mit dem offiziellen Regeltext und dem Ausdruck, den der Prüfer auswertet.
BR-DE-CVD-01
Das Element […] "Contract reference" (BT-12) muss übermittelt werden.
- Was der Validator prüft
UBLcac:ContractDocumentReference/cbc:ID[boolean(normalize-space(.))]CIIram:ContractReferencedDocument/ram:IssuerAssignedID[boolean(normalize-space(.))]
BR-DE-CVD-02
Das Element […] "Tender or lot reference" (BT-17) muss übermittelt werden.
- Was der Validator prüft
UBLcac:OriginatorDocumentReference/cbc:ID[boolean(normalize-space(.))]CIIram:AdditionalReferencedDocument[normalize-space(ram:TypeCode) = '50' and normalize-space(ram:IssuerAssignedID)]
BR-DE-CVD-03
In einer Rechnung muss mindestens eine […] INVOICE LINE (BG-25) enthalten sein, in der der Scheme identifier von […] "Item classification identifier" (BT-158) den Wert 'CVD' und der […] "Item attribute name" (BT-160) den Wert 'cva' enthält.
- Was der Validator prüft
UBL(cac:InvoiceLine/cac:Item | cac:CreditNoteLine/cac:Item)[cac:CommodityClassification/cbc:ItemClassificationCode/@listID = 'CVD' and cac:AdditionalItemProperty/cbc:Name = 'cva']CIIram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct[ram:DesignatedProductClassification/ram:ClassCode/@listID = 'CVD' and ram:ApplicableProductCharacteristic/ram:Description = 'cva']
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.
- Was der Validator prüft
UBLnot(normalize-space(@listID) = 'CVD') or normalize-space(.) = $CVD-VEHICLE-CATEGORYCIInot(normalize-space(@listID) = 'CVD') or normalize-space(.) = $CVD-VEHICLE-CATEGORY
BR-DE-CVD-05
Wenn innerhalb von […] ITEM ATTRIBUTES (BG-32) der […] "Item attribute name" (BT-160) den Wert 'cva' hat, muss der […] "Item attribute value" (BT-161) einen der zulässigen Werte enthalten.
- Was der Validator prüft
UBLnormalize-space(cbc:Value) = $CVA-CODESCIInormalize-space(ram:Value) = $CVA-CODES
BR-DE-CVD-06-a
Wenn der Scheme identifier von […] "Item classification identifier" (BT-158) mit dem Wert 'CVD' angegeben ist, muss in derselben Rechnungszeile genau ein […] "Item attribute name" (BT-160) mit dem Wert 'cva' vorhanden sein.
- Was der Validator prüft
UBLnot(cac:CommodityClassification/cbc:ItemClassificationCode[@listID = 'CVD']) or count(cac:AdditionalItemProperty[cbc:Name = 'cva']) = 1CIInot(ram:DesignatedProductClassification/ram:ClassCode/@listID = 'CVD') or count(ram:ApplicableProductCharacteristic[ram:Description = 'cva']) = 1
BR-DE-CVD-06-b
Wenn […] "Item attribute name" (BT-160) mit dem Wert 'cva' angegeben ist, muss in derselben Rechnungszeile genau ein […] "Item classification identifier" (BT-158) mit dem Scheme identifier 'CVD' vorhanden sein.
- Was der Validator prüft
UBLnot(cac:AdditionalItemProperty[cbc:Name = 'cva']) or count(cac:CommodityClassification/cbc:ItemClassificationCode[@listID = 'CVD']) = 1CIInot(ram:ApplicableProductCharacteristic/ram:Description = 'cva') or count(ram:DesignatedProductClassification/ram:ClassCode[@listID = 'CVD']) = 1
BR-TMP-CVD-01
Das Bildungsschema für […] "Item classification identifier" (BT-158) ist aus der Codeliste UNTDID 7143 zu wählen.
- Was der Validator prüft
UBL((not(contains(normalize-space(@listID), ' ')) and contains($UNTDID-7143-CVD-CODES, concat(' ', normalize-space(@listID), ' '))))CII((not(contains(normalize-space(@listID), ' ')) and contains($UNTDID-7143-CVD-CODES, concat(' ', normalize-space(@listID), ' '))))
NormAPI liefert technische Validierung, keine Steuer- oder Rechtsberatung.