Zum Inhalt springen

Ironfang Finance - Regelreferenz

PEPPOL-EN16931-P0104: In der Aufschlüsselung mit dem Ausfuhrcode VATEX-EU-G die Kategorie G verwenden

VATEX-EU-G bezeichnet eine Ausfuhr außerhalb der EU, und Peppol akzeptiert den Code nur in einer Steuerkategorie mit der ID G. Die aufgezeichnete Ausfuhr war als steuerbefreit, E, codiert.

Peppol BIS BillingFehler: Das Dokument ist ungültigUmsatzsteuerCodelisten

Auf dieser Seite

Die kurze Antwort

PEPPOL-EN16931-P0104 schlägt für jede cac:TaxCategory fehl, die VATEX-EU-G trägt, deren cbc:ID aber nicht G ist. Der Code besagt, dass die Lieferung eine Ausfuhr außerhalb der EU ist, und EN 16931 gibt Ausfuhren eine eigene Kategorie, G, getrennt von steuerbefreiten Lieferungen und solchen zum Nullsatz. Verlassen die Waren die EU, setzen Sie die Kategorie auf G; verlassen sie die EU nicht, ist der Ausfuhrcode falsch.

Im aufgezeichneten Beispiel behält eine Rechnung an einen Käufer in New York den Ausfuhrcode und den Text Export outside the EU, stellt aber ihre Aufschlüsselung und ihre Position in die Kategorie E. Der Prüfschritt EN 16931 akzeptiert das, weil eine steuerbefreite Aufschlüsselung mit Grund vollständig ist; nur der Peppol-Prüfschritt erkennt, dass der Grund der Kategorie widerspricht.

Was die Regel prüft

Die Regel wählt eine cac:TaxCategory über ihren Befreiungsgrund-Code in Großbuchstaben aus und lässt sie nur bestehen, wenn die Kategorie ohne Randleerzeichen G ist. Im Versuch wurde vatex-eu-g in der steuerbefreiten Aufschlüsselung genauso gemeldet wie der Code in Großbuchstaben.

Der Code selbst wird nicht gekürzt. Im Versuch bestand VATEX-EU-G mit einem Leerzeichen davor oder danach in derselben steuerbefreiten Aufschlüsselung jeden Prüfschritt: BR-CL-22 entfernt die Randleerzeichen und akzeptiert den Wert, und diese Regel erkennt ihn nicht mehr. Die Auffüllung verdeckt den Widerspruch, ohne ihn zu beheben.

Andere falsche Kategorien scheitern auf dieselbe Weise, jeweils mit ihren eigenen Regeln dazu. Im Versuch meldete eine Aufschlüsselung zum Nullsatz mit VATEX-EU-G diese Regel und BR-Z-10, das dort keinen Befreiungsgrund zulässt, und eine nicht steuerbare Aufschlüsselung mit dem Code meldete nur diese Regel.

Die Prüfung liest weder die Anschrift des Käufers noch die Lieferanschrift, daher kann die Regel nicht erkennen, ob die Waren die EU wirklich verlassen haben. Sie hält nur Code und Kategorie aneinander fest.

BegriffBedeutungUBL-Element
BT-121Code für den Grund der Umsatzsteuerbefreiungcac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode
BT-118Code der Umsatzsteuerkategoriecac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID
BT-151Code der Umsatzsteuerkategorie des in Rechnung gestellten Artikelscac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID

Wie es in einer Integration dazu kommt

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

  • Verkäufe außerhalb der EU werden als steuerbefreit gebucht, weil keine Umsatzsteuer berechnet wird, während der Befreiungscode aus einem separaten Ausfuhrkennzeichen stammt.
  • Im britischen Umsatzsteuerrecht sind Warenausfuhren zum Nullsatz besteuert, daher werden sie auf Z abgebildet, und die Ausfuhrkategorie G aus EN 16931 wird nie verwendet.
  • Pro Kunde ist ein einziger Befreiungscode eingerichtet, sodass ein Kunde im Ausland VATEX-EU-G in jeder Aufschlüsselung erhält, auch bei Dienstleistungen, die anders besteuert werden.

So korrigieren Sie das Dokument

  1. Prüfen Sie, ob die Lieferung eine Ausfuhr von Waren ist, die die EU verlassen, mit den Nachweisen, die Ihr Umsatzsteuerrecht verlangt. Diese Entscheidung, nicht das Fehlen von Umsatzsteuer, bestimmt die Kategorie.
  2. Ist es eine Ausfuhr, setzen Sie cbc:ID in der Aufschlüsselung und in jeder Position, jedem Nachlass und jedem Zuschlag, die sie abdeckt, auf G, mit dem Satz 0, und behalten Sie VATEX-EU-G. Das korrigierte Beispiel brauchte keine weitere Änderung: Die Umsatzsteuer-Identifikationsnummer des Verkäufers war für BR-G-02 bereits vorhanden.
  3. Ist es keine Ausfuhr, behalten Sie die tatsächliche Kategorie und ersetzen Sie VATEX-EU-G durch den Code für diese Behandlung, oder entfernen Sie den Code und geben Sie einen Begründungstext an, wie es BR-E-10 bei einer steuerbefreiten Aufschlüsselung erlaubt. Bei einer Aufschlüsselung zum Nullsatz oder zum Normalsatz entfernen Sie den Code und geben auch keinen Begründungstext an: BR-Z-10 und BR-S-10 lassen keines von beiden zu.
  4. Leiten Sie Kategorie und Befreiungscode aus einer einzigen Steuerfindung ab, damit eine spätere Änderung am einen den anderen nicht zurücklässt.

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: eine Ausfuhr, in der Aufschlüsselung und in der Position als steuerbefreit, E, codiert

<cac:TaxSubtotal>
  <cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
  <cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
  <cac:TaxCategory>
    <cbc:ID>E</cbc:ID>
    <cbc:Percent>0</cbc:Percent>
    <cbc:TaxExemptionReasonCode>VATEX-EU-G</cbc:TaxExemptionReasonCode>
    <cbc:TaxExemptionReason>Export outside the EU</cbc:TaxExemptionReason>
    <cac:TaxScheme>
      <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
  </cac:TaxCategory>
</cac:TaxSubtotal>
<!-- totals and the start of the invoice line omitted from this fragment -->
<cac:ClassifiedTaxCategory>
  <cbc:ID>E</cbc:ID>
  <cbc:Percent>0</cbc:Percent>
  <cac:TaxScheme>
    <cbc:ID>VAT</cbc:ID>
  </cac:TaxScheme>
</cac:ClassifiedTaxCategory>

Ausschnitt der korrigierten Rechnung: Die Ausfuhr hat an beiden Stellen die Kategorie G

<cac:TaxSubtotal>
  <cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
  <cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
  <cac:TaxCategory>
    <cbc:ID>G</cbc:ID>
    <cbc:Percent>0</cbc:Percent>
    <cbc:TaxExemptionReasonCode>VATEX-EU-G</cbc:TaxExemptionReasonCode>
    <cbc:TaxExemptionReason>Export outside the EU</cbc:TaxExemptionReason>
    <cac:TaxScheme>
      <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
  </cac:TaxCategory>
</cac:TaxSubtotal>
<!-- totals and the start of the invoice line omitted from this fragment -->
<cac:ClassifiedTaxCategory>
  <cbc:ID>G</cbc:ID>
  <cbc:Percent>0</cbc:Percent>
  <cac:TaxScheme>
    <cbc:ID>VAT</cbc:ID>
  </cac:TaxScheme>
</cac:ClassifiedTaxCategory>

Die fehlerhafte Rechnung hat E, wo die korrigierte G hat, in der Aufschlüsselung und in der Kategorie der Position; der Code VATEX-EU-G, der Begründungstext, der Käufer in den Vereinigten Staaten und die Beträge sind in beiden gleich. Das fehlerhafte Dokument meldet nur diese Peppol-Regel, da eine steuerbefreite Aufschlüsselung mit Grund und einem Steuersatz von null jede Regel von EN 16931 erfüllt.

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. Eine steuerbefreite Gutschrift mit VATEX-EU-G meldete im Versuch diese Regel.
  • Nachlässe und Zuschläge auf Dokumentenebene tragen ebenfalls eine cac:TaxCategory, daher wird ein Code dort auf dieselbe Weise geprüft. Die Kategorie einer Position ist eine cac:ClassifiedTaxCategory, die diese Regel nicht liest.
  • Eine Regel von Peppol BIS Billing im Peppol-Prüfschritt. Im Prüfschritt EN 16931 bestätigt BR-CL-22 nur, dass VATEX-EU-G ein gelisteter Code ist.

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-28.1: Quelle geprüft am 2026-09-28, Erklärung zuletzt aktualisiert am 2026-09-28.

Die offizielle Definition von PEPPOL-EN16931-P0104 (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.