Was jede Regel sagt
Alle vier sind im Schematron von EN 16931 (validation-1.3.17) fatal:
- UBL-SR-48
- «Invoice lines shall have one and only one classified tax category.» Eine UBL-Syntaxregel: eine Zeile, eine Kategorie.
- BR-CO-04
- «Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).» Die andere Seite: keine Zeile ohne Kategorie.
- BR-25
- «Each Invoice line (BG-25) shall contain the Item name (BT-153).» Jede Zeile mit Bezeichnung.
- BR-16
- «An Invoice shall have at least one Invoice line (BG-25)» Mindestens eine Zeile.

Die Meldung von Odoo
Odoo wartet nicht auf den Validator. Vor der Erzeugung des UBL durchläuft es die Zeilen und stoppt, wenn eine nicht genau eine Steuer hat, mit: «Each invoice line shall have one and only one tax.» Das geschieht in allen vier Versionen, mit einer Nuance:
- Odoo 17: zählt die Steuern der Zeile ohne die Steuern mit festem Betrag, etwa Ökosteuern; es muss eine übrig bleiben.
- Odoo 18, 19 und 20: zählt die Steuerkategorien, die in die Zeile der Datei geschrieben werden; es muss eine geben.
Im selben Schritt prüft es BR-25: Eine Zeile ohne Produkt und ohne Beschreibung stoppt mit «Each invoice line should have a product or a label.»
Die Fälle, die es auslösen
| Fall in Odoo | Was zu tun ist |
|---|---|
| Zeile ohne Steuer, zum Beispiel ein weiterberechneter Aufwand | Setzen Sie die passende Steuer, auch wenn sie 0 % oder befreit ist. |
| Zwei USt-Steuern in derselben Zeile | Behalten Sie eine: Bei zwei verschiedenen Sätzen teilen Sie die Zeile. |
| USt plus Zuschlag oder Einbehalt in der Zeile | Prüfen Sie, ob diese zweite Steuer in der E-Rechnung als Steuer oder anders zu erfassen ist; das hängt von Ihrem Land ab. |
| Textzeile ohne Produkt oder Beschreibung | Schreiben Sie die Beschreibung oder wandeln Sie sie in eine Notiz um. |
Abschnitte und Notizen in Odoo zählen nicht als Zeilen und lösen daher die Meldung nicht aus.
Mit unserem Modul XRechnung und ZUGFeRD
Das Modul erzeugt das XML mit eigenem Code und führt die Prüfung von Odoo nicht aus: Eine Zeile ohne Steuer oder mit zwei gelangt so in die Datei. Wir haben es mit dem Validator von KoSIT geprüft:
- Zeile ohne Steuer: Sie geht ohne USt-Kategorie hinaus. In XRechnung UBL ergibt das UBL-SR-48, BR-CO-04 und BR-Z-08; in XRechnung CII, dem Standardformat des Moduls, BR-CO-04, BR-Z-01 und BR-Z-08.
- Zeile mit zwei Steuern: In UBL wird nur die erste prozentuale Steuer geschrieben, die Gesamtsumme mit USt enthält aber beide, und BR-CO-15 schlägt an. In CII stehen beide in der Zeile, und die USt-Gesamtsumme stimmt nicht mit der Aufschlüsselung überein, BR-CO-14 schlägt an.
- Zeile mit einer 0-%-Steuer: In UBL geht sie als Z hinaus, und KoSIT akzeptiert sie. In CII geht sie als S hinaus, und KoSIT meldet BR-S-05 sowie BR-Z-01 und BR-Z-08.
Prüfen Sie die Steuern jeder Zeile, bevor Sie erzeugen.

In Odoo 18, 19 und 20 wird mit dem Abonnement FlexigoTech Cloud jede XRechnung und jede ZUGFeRD EN 16931 gegen die Regeln von KoSIT validiert, und die fehlschlagenden Regeln bleiben unter Validation Errors stehen. In Odoo 17 validiert die veröffentlichte Version nicht: Diese Dateien gehen ohne Warnung hinaus.
Schritte
- Lesen Sie die Meldung: Sie zeigt, ob es um die Steuer oder den Zeilennamen geht.
- Öffnen Sie die Rechnung im Entwurf und prüfen Sie die Steuerspalte Zeile für Zeile.
- Korrigieren Sie, buchen Sie und erzeugen Sie die Datei erneut.
Weiterlesen
Geprüft im Quellcode des Moduls (Version 17.0 und 20.0) und in den verlinkten Quellen
Quellen
- Quellcode des Moduls: flexigo_germany_xrechnung 20.0 (446f2f68): lib/generators/ubl_generator.py
- Quellcode des Moduls: flexigo_germany_xrechnung 20.0 (446f2f68): lib/generators/cii_generator.py
- Quellcode des Moduls: flexigo_germany_xrechnung 20.0 (446f2f68): models/res_company.py
- github.com/odoo/odoo/blob/6f00fdadb875342de2d14a179f25431f93cd63c9/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/4d2d4b5895db70596863df941d9a1f0beeb117f8/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/6f00fdadb875342de2d14a179f25431f93cd63c9/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/4d2d4b5895db70596863df941d9a1f0beeb117f8/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/account_edi_ubl_
- Quellcode des Moduls: flexigo_germany_xrechnung 20.0 (446f2f68): models/xrechnung_cloud.py
- Quellcode des Moduls: flexigo_germany_xrechnung 17.0 (ad05de8f): __manifest__.py
- github.com/ConnectingEurope/eInvoicing-EN16931/releases/tag/validation-1.3.17
