Zum Hauptinhalt springen
EN 16931 · USt-Kategorien

Fehler BR-E-10, BR-AE-10, BR-IC-10 und BR-G-10: der Befreiungsgrund der Umsatzsteuer

Jede Umsatzsteueraufschlüsselung einer E-Rechnung trägt eine Kategorie: S für den Regelsatz, E für befreit, AE für Reverse Charge, K für innergemeinschaftliche Lieferung, G für Export, O für außerhalb des Anwendungsbereichs, Z für den Nullsatz. Fünf dieser Kategorien verlangen die Angabe, warum keine Umsatzsteuer anfällt, zwei verbieten sie. Es ist die Regel Nummer 10 jeder Familie, und sie schlägt fehl, wenn die Kategorie nicht zur Odoo-Steuer passt.

FlexigoTech · Verantwortlich: Víctor Gómez · Aktualisiert am 4. November 2026

Das Wichtigste

Versionen
Odoo 17, 18, 19 und 20
Geprüft
im Quellcode des Moduls, Version 17.0 und 20.0 · in den Quellen am Ende
Lesezeit
4 Min.

Die sieben Regeln mit dem Wortlaut des EN-16931-Schematron (validation-1.3.17). Alle sind fatal:

RegelKategorieText
BR-E-10E, befreitA VAT breakdown (BG-23) with VAT Category code (BT-118) "Exempt from VAT" shall have a VAT exemption reason code (BT-121) or a VAT exemption reason text (BT-120).
BR-AE-10AE, Reverse ChargeA VAT breakdown (BG-23) with VAT Category code (BT-118) "Reverse charge" shall have a VAT exemption reason code (BT-121), meaning "Reverse charge" or the VAT exemption reason text (BT-120) "Reverse charge" (or the equivalent standard text in another language).
BR-IC-10K, innergemeinschaftlichA VAT breakdown (BG-23) with the VAT Category code (BT-118) "Intra-community supply" shall have a VAT exemption reason code (BT-121), meaning "Intra-community supply" or the VAT exemption reason text (BT-120) "Intra-community supply" (or the equivalent standard text in another language).
BR-G-10G, ExportA VAT breakdown (BG-23) with the VAT Category code (BT-118) "Export outside the EU" shall have a VAT exemption reason code (BT-121), meaning "Export outside the EU" or the VAT exemption reason text (BT-120) "Export outside the EU" (or the equivalent standard text in another language).
BR-O-10O, außerhalb des AnwendungsbereichsA VAT breakdown (BG-23) with VAT Category code (BT-118) " Not subject to VAT" shall have a VAT exemption reason code (BT-121), meaning " Not subject to VAT" or a VAT exemption reason text (BT-120) " Not subject to VAT" (or the equivalent standard text in another language).
BR-S-10S, RegelsatzA VAT breakdown (BG-23) with VAT Category code (BT-118) "Standard rate" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).
BR-Z-10Z, NullsatzA VAT breakdown (BG-23) with VAT Category code (BT-118) "Zero rated" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).

Der Grund kann als Code (BT-121, aus der VATEX-Liste) oder als Text (BT-120) angegeben werden. Für E genügt eines von beiden; für AE, K, G und O muss der Code oder der Text genau das bedeuten: „Reverse charge“, „Intra-community supply“ … Die übrigen Regeln jeder Familie (BR-E-08, BR-AE-08 und folgende) betreffen die Beträge; hier geht es nur um den Grund.

Übersicht der Regeln zum Befreiungsgrund nach EN 16931
Fünf Kategorien verlangen einen Grund (E, AE, K, G, O), zwei verbieten ihn (S, Z).

Wie Odoo die Kategorie bestimmt

Hier unterscheiden sich die Versionen:

  • Odoo 17 und 18: Standardmäßig hat die Steuer kein Kategoriefeld, und Odoo leitet die Kategorie ab: Bei einem spanischen Kunden mit Postleitzahl, die mit 35 oder 38 beginnt (Kanaren), L, und mit 51 oder 52 (Ceuta und Melilla), M; E, wenn die Steuer 0 % beträgt und Verkäufer und Kunde im selben Land sind; AE bei der Reverse-Charge-Selbstfakturierung eines belgischen Vertragspartners oder bei einer Selbstfaktura mit Reverse-Charge-Steuer; bei USt-IdNr. des Verkäufers und einer Steuer von 0 % K, wenn beide im EWR sind, und G, wenn nur einer es ist; sonst S, wenn die Steuer einen Satz hat, und E, wenn sie 0 % beträgt. Das Standardmodul account_edi_ubl_cii_tax_extension (Tax extension for UBL/CII), das nicht automatisch installiert wird, ergänzt an der Steuer Tax Category Code und Tax Exemption Reason Code: Ist die Kategorie gesetzt, verwendet Odoo sie statt sie abzuleiten.
  • Odoo 19: Jede Steuer hat Tax Category Code (AE, E, S, Z, G, O, K, L, M, B) und Tax Exemption Reason Code, mit der VATEX-Liste.
  • Odoo 20: Dieselben beiden Felder sowie Tax Exemption Reason, ein Freitext.
  • In allen vier Versionen: Bleibt eine E-Kategorie ohne Grund, schreibt Odoo den Text „Exempt from tax“, der BR-E-10 erfüllt.

Die typische Falle bei Odoo 17 und 18 ohne dieses Modul ist eine Steuer von 0 % für eine Leistung außerhalb des Umsatzsteuer-Anwendungsbereichs, die die Ableitung nie als O kennzeichnet, oder ein Inlandsverkauf mit Reverse Charge: Die Kategorie weicht von dem ab, was Ihr Steuerberater erwartet.

Mit unserem Modul für XRechnung und ZUGFeRD

Der Generator des veröffentlichten Moduls kennt nur zwei Kategorien, S und Z. In XRechnung UBL schreibt er S, wenn die Steuer einen Satz hat, und Z, wenn sie 0 % beträgt. In XRechnung CII, dem Standardformat, erscheint jede Zeile als S, auch bei einer Steuer von 0 %, und der KoSIT-Validator weist sie mit BR-S-05 zurück (wir haben das geprüft). Eine Rechnung mit Reverse Charge, innergemeinschaftlicher Lieferung, Export oder Befreiung wird nicht als AE, K, G oder E ausgegeben. Bei Odoo 18, 19 und 20 validiert das Modul mit dem FlexigoTech-Cloud-Abonnement das Ergebnis mit den KoSIT-Regeln und zeigt jede fehlgeschlagene Regel unter Validation Errors an. Für solche Rechnungen kennt heute der eigene Export von Odoo die Kategorien. Bei Odoo 17 validiert die veröffentlichte Version nicht.

Prüfprotokoll des XRechnung-Moduls in Odoo 20
Ausgehende Sendungen mit Format und Validierungsergebnis, eine fehlgeschlagen. Screenshot aus Odoo 20 mit Demodaten; die Ergebnisse sind Testergebnisse.

So beheben Sie es

  1. Ermitteln Sie die Kategorie in der USt-Aufschlüsselung des XML (BT-118) und vergleichen Sie sie mit dem tatsächlichen Geschäftsvorfall.
  2. Bei Odoo 19 und 20 öffnen Sie die Steuer und setzen Tax Category Code und, bei E, AE, K, G oder O, den Tax Exemption Reason Code.
  3. Bei Odoo 17 und 18 installieren Sie account_edi_ubl_cii_tax_extension und setzen an jeder Steuer die Kategorie und, wenn diese Kategorie einen Grund verlangt, den Grund. Ohne dieses Modul prüfen Sie Land, Postleitzahl, USt-IdNr. des Kunden und die Steuerposition: Daraus leitet Odoo die Kategorie ab.
  4. Ein Befreiungsgrund auf einer Zeile zum Regelsatz löst BR-S-10 aus: Entfernen Sie ihn von der Steuer.
  5. Erzeugen Sie die Datei erneut.

Weiterlesen

Fehler BR-CO-15 in der E-Rechnung: Gesamtbetrag mit USt ist nicht Netto plus UStBR-CO-15, BR-CO-14, BR-CO-16 und BR-CO-17 prüfen, ob die Summen der E-Rechnung stimmen. Was jede summiert und welche bei einem Cent Abweichung scheitern.Fehler BR-CO-09: USt-IdNr. des Verkäufers oder Kunden ohne LändercodeBR-CO-09 lehnt eine USt-IdNr. ohne Ländercode ab; BR-CO-26, BR-S-02, BR-AE-02 und BR-IC-02 verlangen die des Verkäufers oder Kunden. Odoo-Hinweis und Schreibweise.UBL-SR-48-Fehler: eine Rechnungszeile mit zwei Steuern oder ohne SteuerUBL-SR-48 und BR-CO-04 verlangen in jeder E-Rechnungszeile eine und nur eine USt-Kategorie. Die Meldung von Odoo 17, 18, 19 und 20, samt BR-25 und BR-16.
Geprüft im Quellcode des Moduls (Version 17.0 und 20.0) und in den verlinkten Quellen

Quellen