Zum Inhalt springen

Ironfang Finance - Regelreferenz

BR-CO-04: Den Code der Umsatzsteuerkategorie in jeder Rechnungsposition angeben

Jede Position braucht cac:Item/cac:ClassifiedTaxCategory/cbc:ID unter dem Steuerschema VAT, das die Umsatzsteuerkategorie des Artikels angibt.

EN 16931Fehler: Das Dokument ist ungültigUmsatzsteuerPositionen und Preise

Auf dieser Seite

Die kurze Antwort

BR-CO-04 schlägt für jede cac:InvoiceLine (oder cac:CreditNoteLine) fehl, deren Artikel keine cac:ClassifiedTaxCategory mit einer cbc:ID unter dem Steuerschema VAT hat. Fügen Sie cbc:ID als erstes Kindelement von cac:Item/cac:ClassifiedTaxCategory ein, mit der Umsatzsteuerkategorie, in der die Position besteuert wurde: Z für die Position zum Nullsatz im aufgezeichneten Beispiel.

Eine Position ohne Kategorie fällt auch aus ihrer Umsatzsteueraufschlüsselung heraus. Die Aufschlüsselung enthält den Betrag der Position weiterhin, daher schlägt die Prüfung der Bemessungsgrundlage für diese Kategorie ebenfalls fehl.

Was die Regel prüft

Die Regel läuft einmal pro Position, und die Fundstelle des Befunds ist die Position. Sie sucht innerhalb von cac:Item nach einer cac:ClassifiedTaxCategory, deren cac:TaxScheme/cbc:ID den Wert VAT hat, ohne Beachtung von Groß- und Kleinschreibung und umgebenden Leerzeichen, und besteht, wenn diese Kategorie ein Element cbc:ID hat.

Eine Kategorie unter einem anderen Steuerschema zählt nicht. Im Versuch wurde eine Position, deren Kategorie das Steuerschema GST hatte, von dieser Regel gemeldet.

Eine vorhandene, aber leere cbc:ID wird hier nicht erfasst. Im Versuch wurde ein leerer Code in einer Position zum Normalsatz stattdessen von BR-CL-18 und PEPPOL-EN16931-R008 gemeldet, zusammen mit BR-S-01 und BR-S-08.

Eine Position ganz ohne cac:ClassifiedTaxCategory schlägt an dieser Regel ebenfalls fehl. Im Versuch meldete sie außerdem UBL-SR-48, das genau eine klassifizierte Steuerkategorie pro Position verlangt.

BegriffBedeutungUBL-Element
BG-25Rechnungspositioncac:InvoiceLine (cac:CreditNoteLine in a credit note)
BT-151Code der Umsatzsteuerkategorie des in Rechnung gestellten Artikelscac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID (cac:CreditNoteLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID in a credit note)

Wie es in einer Integration dazu kommt

Mögliche Ursachen, abgeleitet aus der Form der Regel und nicht aus gemessener Nutzung:

  • Artikel ohne Steuercode in den Produktstammdaten werden mit leerer Steuerkategorie exportiert, statt angehalten zu werden.
  • Die Kategorie der Position wird nur geschrieben, wenn sie von einem Standardwert des Dokuments abweicht, sodass Positionen in der Standardkategorie sie verlieren.
  • Positionen zum Nullsatz oder steuerbefreite Positionen werden so behandelt, als trügen sie keine Umsatzsteuer, und der Export überspringt ihren Kategoriecode.
  • Von Hand erfasste Positionen, etwa Ad-hoc-Leistungen oder Korrekturen, werden ohne Steuercode des Artikels angelegt.

So korrigieren Sie das Dokument

  1. Ermitteln Sie die Umsatzsteuerkategorie, in der die Position tatsächlich besteuert wurde, aus dem Steuercode ihres Artikels oder der Steuerermittlung für diese Position.
  2. Schreiben Sie sie als cbc:ID, das erste Kindelement von cac:ClassifiedTaxCategory, gefolgt von cbc:Percent (entfällt bei der Kategorie O) und cac:TaxScheme mit cbc:ID gleich VAT.
  3. Prüfen Sie, dass die Position nun in die Aufschlüsselung mit derselben Kategorie und demselben Steuersatz fällt, sodass deren Bemessungsgrundlage wieder zu ihren Positionen passt.
  4. Halten Sie den Export an, wenn eine Position keinen Steuercode hat, statt sie ohne Kategorie zu senden.

Korrigierte Rechnung prüfen

Vorher und nachher

Dies sind Ausschnitte, keine vollständigen Dokumente. Die vollständigen synthetischen Dokumente, aus denen sie stammen, sind unten verlinkt.

Ausschnitt der fehlerhaften Rechnung: Die Aufschlüsselung zum Nullsatz summiert 10.00, aber Position 2 hat ihren Kategoriecode verloren

<cac:TaxSubtotal>
  <cbc:TaxableAmount currencyID="GBP">10.00</cbc:TaxableAmount>
  <cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
  <cac:TaxCategory>
    <cbc:ID>Z</cbc:ID>
    <cbc:Percent>0</cbc:Percent>
    <!-- tax scheme omitted from this fragment -->
  </cac:TaxCategory>
</cac:TaxSubtotal>

<cac:InvoiceLine>
  <cbc:ID>2</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">10.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Example zero-rated item</cbc:Name>
    <cac:ClassifiedTaxCategory>
      <cbc:Percent>0</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:ClassifiedTaxCategory>
  </cac:Item>
  <!-- price omitted from this fragment -->
</cac:InvoiceLine>

Ausschnitt der korrigierten Rechnung: Position 2 ist wieder zum Nullsatz besteuert

<cac:InvoiceLine>
  <cbc:ID>2</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">10.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Example zero-rated item</cbc:Name>
    <cac:ClassifiedTaxCategory>
      <cbc:ID>Z</cbc:ID>
      <cbc:Percent>0</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:ClassifiedTaxCategory>
  </cac:Item>
  <!-- price omitted from this fragment -->
</cac:InvoiceLine>

Die korrigierte Rechnung hat <cbc:ID>Z</cbc:ID> am Anfang der cac:ClassifiedTaxCategory von Position 2; sonst unterscheidet sich nichts. Das fehlerhafte Dokument meldet außerdem BR-Z-08, das verlangt, dass die Bemessungsgrundlage der Aufschlüsselung zum Nullsatz den Beträgen der Positionen zum Nullsatz entspricht. Ohne Kategorie für Position 2 hat das Dokument keine Positionen zum Nullsatz, sodass der erwartete Wert 0.00 gegenüber den 10.00 in der Aufschlüsselung beträgt. BR-Z-01 bleibt stumm, weil es eine Aufschlüsselung zum Nullsatz ohne etwas zum Nullsatz dahinter nicht beanstandet. Die Wiederherstellung des Codes behebt beide Befunde.

Was der Validator gemeldet hat

Aufgezeichnet mit phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, der Engine hinter dem kostenlosen Validator, mit synthetischen Daten. Ein aufgezeichnetes Ergebnis ist ein Regressionsnachweis für diese Dokumente, keine Zertifizierung.

Wo die Regel gilt

  • Gilt für UBL Invoice und CreditNote. In einer Gutschrift ist die Position cac:CreditNoteLine; mit entferntem Code in ihrer einzigen Position, die zum Normalsatz besteuert war, meldete die Gutschrift im Versuch diese Regel mit BR-S-01 und BR-S-08.
  • Welche Begleitbefunde erscheinen, hängt von der Kategorie ab, die die Position verloren hat. Eine Position zum Normalsatz lässt die Aufschlüsselung zum Normalsatz ohne Grundlage zurück, was BR-S-01 und BR-S-08 beide erfassen; die Position zum Nullsatz hier bringt nur BR-Z-08 mit sich.
  • Gemeldet vom Prüfschritt EN 16931. Sobald ein Code vorhanden ist, prüft BR-CL-18, dass er ein zulässiger Kategoriecode ist.
  • Nachlässe und Zuschläge auf Dokumentenebene tragen ihre Kategorie in cac:AllowanceCharge/cac:TaxCategory, das diese Regel nicht liest; BR-32 deckt Nachlässe ab.

Umfang und Quelle

Geschrieben für Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, angewendet auf Invoice- und CreditNote-Dokumente in UBL 2.1. Andere Profile, Syntaxen und Releases können diese Kennung anders definieren. Version des Hinweiskatalogs 2026-09-24.1: Quelle geprüft am 2026-09-24, Erklärung zuletzt aktualisiert am 2026-09-24.

Die offizielle Definition von BR-CO-04 (auf Englisch) enthält den normativen Wortlaut und den Test. Diese Seite ist unsere Erklärung dazu, keine Kopie.

Die Erklärung ändert das Urteil der Engine nicht. Dass Sie diesen Befund beheben, heißt nicht, dass das Dokument jeden Prüfschritt besteht. Die Validierung bescheinigt keine rechtliche oder steuerliche Konformität und überträgt kein Dokument über Peppol.