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 · 8 erklärt · 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
Welches Feld die Regel bewacht, und darunter der offizielle Regeltext.
BR-DE-CVD-01
Vertragsreferenz wird Pflicht (BT-12)
Das Element […] "Contract reference" (BT-12) muss übermittelt werden.
- Was die Regel verlangt
- Eine CVD-Rechnung muss die Vertragsreferenz (BT-12) tragen, die in einer gewöhnlichen XRechnung optional ist. Geprüft wird nur, dass das Feld einen Inhalt hat: Leerzeichen allein genügen nicht, jeder andere Inhalt schon — die Nummer selbst sieht sich das Regelwerk nicht an. Dass die Regel nur CVD-Rechnungen betrifft, zeigt der Ausdruck nicht; die Bedingung steckt im Kontext der Regel, der nur Dokumente mit der CVD-Kennung in BT-24 erfasst.
- Warum sie ausgelöst wird
- Die CVD-Kennung wird in BT-24 gesetzt, das Mapping aber nicht erweitert — Felder, die in der gewöhnlichen XRechnung optional sind, bleiben leer. Oder die Vertragsnummer liegt vor, landet aber in der Bestellreferenz (BT-13) oder nur in einer Bemerkung (BT-22). Für diese Regel zählt allein BT-12.
- Wie Sie es beheben
- Übermitteln Sie die Vertragsnummer des Auftraggebers in BT-12: in UBL als cac:ContractDocumentReference/cbc:ID, in CII als ram:ContractReferencedDocument/ram:IssuerAssignedID in ram:ApplicableHeaderTradeAgreement. In der UBL-Rechnung folgt das Element auf cac:OriginatorDocumentReference (BT-17), in der UBL-Gutschrift steht es davor. Ein Platzhalter wie „n/a“ besteht die Prüfung, macht die Beschaffung aber nicht zuordenbar.
- Was der Validator prüft
UBLcac:ContractDocumentReference/cbc:ID[boolean(normalize-space(.))]CIIram:ContractReferencedDocument/ram:IssuerAssignedID[boolean(normalize-space(.))]
Im XML
Ausschnitt in UBL. Der CII-Pfad steht oben im Text — dieselbe Änderung, andere Elementnamen.
Fehlerhaft <cbc:BuyerReference>04011000-12345-03</cbc:BuyerReference> <cac:OrderReference> <cbc:ID>RV-2026-0815</cbc:ID> </cac:OrderReference> <cac:OriginatorDocumentReference> <cbc:ID>VG-2026-017-L2</cbc:ID> </cac:OriginatorDocumentReference>Korrigiert <cbc:BuyerReference>04011000-12345-03</cbc:BuyerReference> <cac:OriginatorDocumentReference> <cbc:ID>VG-2026-017-L2</cbc:ID> </cac:OriginatorDocumentReference> <cac:ContractDocumentReference> <cbc:ID>RV-2026-0815</cbc:ID> </cac:ContractDocumentReference>BR-DE-CVD-02
Vergabe- oder Losnummer wird Pflicht (BT-17)
Das Element […] "Tender or lot reference" (BT-17) muss übermittelt werden.
- Was die Regel verlangt
- Eine CVD-Rechnung muss die Vergabe- oder Losnummer (BT-17) tragen — die Kennung des Vergabeverfahrens oder Loses, zu dem die Rechnung gehört. Geprüft wird nur, dass sie einen Inhalt hat. In UBL zählt dabei allein cac:OriginatorDocumentReference/cbc:ID; in CII hat BT-17 kein eigenes Element, sondern ist ein ram:AdditionalReferencedDocument, und der Ausdruck verlangt ram:TypeCode 50 und eine ram:IssuerAssignedID in demselben Element.
- Warum sie ausgelöst wird
- Wer beide Syntaxen aus einem Modell erzeugt, überträgt die CII-Konstruktion leicht nach UBL und schreibt die Nummer als cac:AdditionalDocumentReference mit cbc:DocumentTypeCode 50. Das zählt nicht — in der Rechnung weist eine CEN-Regel den Typcode 50 sogar eigens ab. In der UBL-Gutschrift dagegen liegt diese Form nahe, denn die CEN-Regeln lassen den Typcode 50 genau dort zu; BR-DE-CVD-02 sucht aber auch in der Gutschrift ausschließlich cac:OriginatorDocumentReference. In CII scheitert die Nummer, wenn ihr Dokument den Typcode 916 einer Anlage (BG-24) oder gar keinen trägt.
- Wie Sie es beheben
- Schreiben Sie die Nummer in UBL als cac:OriginatorDocumentReference/cbc:ID — in der Rechnung vor cac:ContractDocumentReference, in der Gutschrift erst nach cac:ContractDocumentReference und cac:AdditionalDocumentReference, denn dort ist die Reihenfolge eine andere. In CII gehört sie als ram:AdditionalReferencedDocument mit ram:IssuerAssignedID und ram:TypeCode 50 in ram:ApplicableHeaderTradeAgreement.
- Was der Validator prüft
UBLcac:OriginatorDocumentReference/cbc:ID[boolean(normalize-space(.))]CIIram:AdditionalReferencedDocument[normalize-space(ram:TypeCode) = '50' and normalize-space(ram:IssuerAssignedID)]
Im XML
Ausschnitt in UBL. Der CII-Pfad steht oben im Text — dieselbe Änderung, andere Elementnamen.
Fehlerhaft <cac:ContractDocumentReference> <cbc:ID>RV-2026-0815</cbc:ID> </cac:ContractDocumentReference> <cac:AdditionalDocumentReference> <cbc:ID>VG-2026-017-L2</cbc:ID> <cbc:DocumentTypeCode>50</cbc:DocumentTypeCode> </cac:AdditionalDocumentReference>Korrigiert <cac:OriginatorDocumentReference> <cbc:ID>VG-2026-017-L2</cbc:ID> </cac:OriginatorDocumentReference> <cac:ContractDocumentReference> <cbc:ID>RV-2026-0815</cbc:ID> </cac:ContractDocumentReference>BR-DE-CVD-03
Mindestens eine Fahrzeugzeile je Rechnung (BG-25)
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 die Regel verlangt
- Eine CVD-Rechnung muss mindestens eine Rechnungszeile (BG-25) enthalten, deren Artikel beides trägt: eine Klassifizierung (BT-158) mit dem Schema CVD und ein Merkmal (BG-32) mit dem Namen (BT-160) cva. Beides muss am selben Artikel stehen — die Kategorie in der einen und die Antriebsart in einer anderen Zeile genügen nicht. Ob die Werte selbst zulässig sind, prüfen erst BR-DE-CVD-04 und BR-DE-CVD-05.
- Warum sie ausgelöst wird
- Die Fahrzeugdaten stehen nur als Freitext in Artikelname oder Beschreibung („Fahrzeugklasse M3, batterieelektrisch“), nicht in den strukturierten Feldern. Oder sie sind anders geschrieben: Der Vergleich ist exakt, sodass „cvd“, „CVA“ oder ein Leerzeichen zu viel nicht zählen. Rechnet die Rechnung gar kein Fahrzeug ab, ist womöglich schon die CVD-Kennung in BT-24 falsch gewählt.
- Wie Sie es beheben
- Ergänzen Sie am Artikel der Fahrzeugzeile beides. In UBL sind das cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode mit listID="CVD" und cac:Item/cac:AdditionalItemProperty mit cbc:Name cva; das Merkmal folgt auf cac:ClassifiedTaxCategory. In CII sind es ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode mit listID="CVD" und ram:ApplicableProductCharacteristic mit ram:Description cva; hier steht das Merkmal vor der Klassifizierung.
- 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']
Im XML
Ausschnitt in UBL. Der CII-Pfad steht oben im Text — dieselbe Änderung, andere Elementnamen.
Fehlerhaft <cac:Item> <cbc:Description>Fahrzeugklasse M3, batterieelektrisch</cbc:Description> <cbc:Name>Gelenkbus 18 m</cbc:Name> <cac:ClassifiedTaxCategory> <cbc:ID>S</cbc:ID> <cbc:Percent>19</cbc:Percent> <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme> </cac:ClassifiedTaxCategory> </cac:Item>Korrigiert <cac:Item> <cbc:Description>Fahrzeugklasse M3, batterieelektrisch</cbc:Description> <cbc:Name>Gelenkbus 18 m</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>BR-DE-CVD-04
Zulässige Fahrzeugkategorien (BT-158)
Ein […] "Item classification identifier" (BT-158) mit dem Scheme identifier 'CVD' muss einen Wert aus der Liste der zulässigen Fahrzeugkategorien enthalten.
- Was die Regel verlangt
- Trägt eine Klassifizierung (BT-158) das Schema CVD, muss ihr Wert eine der sechs Fahrzeugkategorien sein: M1, M2, M3, N1, N2 oder N3. Leerzeichen am Rand entfernt der Ausdruck vorher, Groß- und Kleinschreibung zählt dagegen, und jeder Zusatz macht den Wert ungültig. Klassifizierungen unter anderen Schemata prüft die Regel nicht.
- Warum sie ausgelöst wird
- Statt der Kategorie steht eine Fahrzeugbezeichnung im Feld („Bus“, „Pkw“), die Kategorie ist kleingeschrieben („m3“) oder wurde samt Zusatz aus den Fahrzeugdaten übernommen — „M3 Klasse I“ für einen Stadtbus, „M1G“ für ein Geländefahrzeug. All das scheitert, auch wenn ein Mensch die Kategorie darin erkennt.
- Wie Sie es beheben
- Übermitteln Sie nur das Kürzel selbst, in Großbuchstaben und ohne Zusatz — in UBL in cac:CommodityClassification/cbc:ItemClassificationCode mit listID="CVD", in CII in ram:DesignatedProductClassification/ram:ClassCode mit listID="CVD". M steht für Fahrzeuge zur Personenbeförderung, N für Güterfahrzeuge. Angaben wie die Busklasse gehören in Artikelname oder Beschreibung, nicht in den Code.
- Was der Validator prüft
UBLnot(normalize-space(@listID) = 'CVD') or normalize-space(.) = $CVD-VEHICLE-CATEGORYVariablen darin
- $CVD-VEHICLE-CATEGORY
- ('M1', 'M2', 'M3', 'N1', 'N2', 'N3')
CIInot(normalize-space(@listID) = 'CVD') or normalize-space(.) = $CVD-VEHICLE-CATEGORYVariablen darin
- $CVD-VEHICLE-CATEGORY
- ('M1', 'M2', 'M3', 'N1', 'N2', 'N3')
Im XML
Ausschnitt in UBL. Der CII-Pfad steht oben im Text — dieselbe Änderung, andere Elementnamen.
Fehlerhaft <cac:Item> <cbc:Name>Gelenkbus 18 m, batterieelektrisch</cbc:Name> <cac:CommodityClassification> <cbc:ItemClassificationCode listID="CVD">M3 Klasse I</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>Korrigiert <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>BR-DE-CVD-05
Zulässige Antriebsarten (BT-161)
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 die Regel verlangt
- Das Merkmal (BG-32) mit dem Namen cva trägt die Antriebsart, und sein Wert (BT-161) muss genau einer von drei Codes sein: clean, zero-emission oder other. Leerzeichen am Rand ignoriert der Ausdruck, Groß- und Kleinschreibung nicht. Die Beschränkung auf Merkmale namens cva steht im Kontext der Regel, nicht im Ausdruck — ein Merkmal „CVA“ übergeht sie, und in einer Zeile mit Fahrzeugkategorie meldet dann BR-DE-CVD-06-a das fehlende cva.
- Warum sie ausgelöst wird
- Die Codes werden übersetzt („emissionsfrei“, „sauber“), mit Großbuchstaben geschrieben („Zero-Emission“) oder durch eine Beschreibung des Antriebs ersetzt („Elektro“, „Diesel“). Dahinter steckt ein Feld, das aus der Fahrzeugbeschreibung des Quellsystems befüllt wird statt aus einer festen Zuordnung.
- Wie Sie es beheben
- Ordnen Sie die Antriebsart im Mapping fest einem der drei Codes zu und schreiben Sie ihn klein: in UBL in cbc:Value des cac:AdditionalItemProperty mit cbc:Name cva, in CII in ram:Value der ram:ApplicableProductCharacteristic mit ram:Description cva. Welcher Code zutrifft, ist eine fachliche Einstufung des Fahrzeugs nach der Clean Vehicles Directive — der Validator prüft nur die Schreibweise.
- Was der Validator prüft
UBLnormalize-space(cbc:Value) = $CVA-CODESVariablen darin
- $CVA-CODES
- ('clean', 'zero-emission', 'other')
CIInormalize-space(ram:Value) = $CVA-CODESVariablen darin
- $CVA-CODES
- ('clean', 'zero-emission', 'other')
Im XML
Ausschnitt in UBL. Der CII-Pfad steht oben im Text — dieselbe Änderung, andere Elementnamen.
Fehlerhaft <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>emissionsfrei</cbc:Value> </cac:AdditionalItemProperty> </cac:Item>Korrigiert <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>BR-DE-CVD-06-a
Kategorie verlangt eine Antriebsart (BT-158 → BT-160)
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 die Regel verlangt
- Trägt ein Artikel eine Fahrzeugkategorie, also eine Klassifizierung (BT-158) mit dem Schema CVD, muss derselbe Artikel genau ein Merkmal mit dem Namen (BT-160) cva haben — nicht keines und nicht zwei. Gezählt wird nur der exakte Name; „Antriebsart“ oder „CVA“ zählen nicht. Die Gegenrichtung prüft BR-DE-CVD-06-b.
- Warum sie ausgelöst wird
- Die Antriebsart steht unter einem sprechenden Namen wie „Antriebsart“ oder fehlt, weil das Quellsystem sie nicht führt. Zwei cva-Merkmale entstehen, wenn eine Zeile mehrere Fahrzeuge mit unterschiedlichem Antrieb zusammenfasst oder das Mapping die Merkmale doppelt schreibt.
- Wie Sie es beheben
- Schreiben Sie je Fahrzeugzeile genau ein cac:AdditionalItemProperty mit cbc:Name cva (UBL) beziehungsweise eine ram:ApplicableProductCharacteristic mit ram:Description cva (CII), jeweils mit der Antriebsart als Wert. Fahrzeuge mit unterschiedlichem Antrieb gehören in getrennte Rechnungszeilen.
- 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
Im XML
Ausschnitt in UBL. Der CII-Pfad steht oben im Text — dieselbe Änderung, andere Elementnamen.
Fehlerhaft <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>Antriebsart</cbc:Name> <cbc:Value>zero-emission</cbc:Value> </cac:AdditionalItemProperty> </cac:Item>Korrigiert <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>BR-DE-CVD-06-b
Antriebsart verlangt eine Kategorie (BT-160 → BT-158)
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 die Regel verlangt
- Trägt ein Artikel ein Merkmal mit dem Namen (BT-160) cva, muss derselbe Artikel genau eine Klassifizierung (BT-158) mit dem Schema CVD haben — nicht keine und nicht zwei. Gezählt wird nur listID="CVD" in genau dieser Schreibweise; dieselbe Kategorie unter einem anderen Schema zählt nicht. Die Gegenrichtung prüft BR-DE-CVD-06-a.
- Warum sie ausgelöst wird
- Die Kategorie steht unter einem anderen Schema, etwa ZZZ — naheliegend, wenn die Zeile zuerst als gewöhnliche XRechnung getestet wurde: Dort weist BR-CL-13 das Schema CVD ab, weil es nicht in der UNTDID 7143 steht. Zwei Kategorien entstehen, wenn eine Zeile etwa einen Pkw (M1) und einen Transporter (N1) zusammenfasst.
- Wie Sie es beheben
- Setzen Sie die Kategorie genau einmal je Zeile mit listID="CVD" — in UBL an cac:CommodityClassification/cbc:ItemClassificationCode, in CII an ram:DesignatedProductClassification/ram:ClassCode. Fahrzeuge unterschiedlicher Kategorien gehören in getrennte Rechnungszeilen. Weitere Klassifizierungen dürfen daneben stehen, sofern ihr Schema aus der UNTDID 7143 stammt — das prüft BR-TMP-CVD-01.
- 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
Im XML
Ausschnitt in UBL. Der CII-Pfad steht oben im Text — dieselbe Änderung, andere Elementnamen.
Fehlerhaft <cac:Item> <cbc:Name>Gelenkbus 18 m, batterieelektrisch</cbc:Name> <cac:CommodityClassification> <cbc:ItemClassificationCode listID="ZZZ">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>Korrigiert <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>BR-TMP-CVD-01
Schema der Artikelkennung (BT-158)
Das Bildungsschema für […] "Item classification identifier" (BT-158) ist aus der Codeliste UNTDID 7143 zu wählen.
- Was die Regel verlangt
- In einer CVD-Rechnung muss jede Klassifizierung (BT-158) auf den Rechnungszeilen ein Schema aus der Codeliste UNTDID 7143 tragen — oder CVD, das die Liste nicht kennt. Ein fehlendes oder leeres listID lässt der Ausdruck allerdings durch: Die Variable hängt CVD samt Leerzeichen vor die Liste, und das doppelte Leerzeichen an der Nahtstelle passt auf einen leeren Wert. Ein fehlendes Attribut weist BR-65 ab, ein leeres listID="" nur in CII — in UBL prüft BR-65 lediglich, ob es das Attribut gibt.
- Warum sie ausgelöst wird
- Als Schema steht ein hausinternes Kürzel oder eine Schreibvariante, etwa „cvd“ in Kleinbuchstaben oder der Name eines Verzeichnisses statt seines Codes. Geprüft wird jede Klassifizierung auf den Zeilen, nicht nur die Fahrzeugkategorie. In einer gewöhnlichen XRechnung meldet das BR-CL-13; in der CVD-Variante stuft die Konfiguration des KoSIT-Validators BR-CL-13 zum Hinweis herab, weil diese Regel CVD nicht kennt, und BR-TMP-CVD-01 übernimmt die Prüfung als Fehler.
- Wie Sie es beheben
- Setzen Sie als listID entweder CVD — nur für die Fahrzeugkategorie — oder einen Code aus der UNTDID 7143, jeweils in genau dieser Schreibweise: in UBL an cac:CommodityClassification/cbc:ItemClassificationCode, in CII an ram:DesignatedProductClassification/ram:ClassCode. Sorgen Sie selbst dafür, dass das Attribut nie leer ist, denn in UBL fängt das Regelwerk diesen Fall nicht ab. Dass BR-CL-13 für den Code CVD auch in einer gültigen CVD-Rechnung erscheint, ist kein Fehler im Dokument.
- Was der Validator prüft
UBL((not(contains(normalize-space(@listID), ' ')) and contains($UNTDID-7143-CVD-CODES, concat(' ', normalize-space(@listID), ' '))))Variablen darin
- $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 Werte
CII((not(contains(normalize-space(@listID), ' ')) and contains($UNTDID-7143-CVD-CODES, concat(' ', normalize-space(@listID), ' '))))Variablen darin
- $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 Werte
Im XML
Ausschnitt in UBL. Der CII-Pfad steht oben im Text — dieselbe Änderung, andere Elementnamen.
Fehlerhaft <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>Korrigiert <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>
NormAPI liefert technische Validierung, keine Steuer- oder Rechtsberatung.