Von der Excel-Rechnung zur ZUGFeRD-Rechnung
Eine Excel-Tabelle liefert Positionen und Beträge, aber keine E-Rechnung. Für ZUGFeRD müssen die Werte als XML im Profil EN 16931 in ein PDF/A-3 eingebettet werden, und die Summen müssen den Rechenregeln der EN 16931 folgen. Die meisten Prüffehler entstehen dabei durch Rundung.
Was aus der Tabelle übernommen wird
Jede Zeile Ihrer Tabelle wird im XML zu einer Rechnungsposition (BG-25). Dazu gehören die Menge (BT-129), die Einheit (BT-130), der Nettopreis (BT-146), der Positionsbetrag netto (BT-131), die Bezeichnung (BT-153) sowie Steuerkategorie und Steuersatz (BT-151, BT-152). Die Einheit steht laut XRechnung-Spezifikation nicht als Freitext wie „Stk.“ im XML, sondern als Code aus den UN/ECE-Empfehlungen Nr. 20 und 21.
Nach dem BMF-Schreiben vom 15. Oktober 2026 (Rn. 10 bis 12) muss die Leistungsbeschreibung im strukturierten Teil so genau sein, dass sich Leistungsart, Umfang und Steuersatz daraus prüfen lassen. Eine Zeile „Leistungen laut Anlage“ genügt nicht. Ergänzende Details wie Stundennachweise dürfen in eine eingebettete Anlage.
Steuersätze richtig zuordnen
Positionen mit 19 % und 7 % tragen beide die Kategorie S („Standard rated“), unterscheiden sich aber im Satz. Für jede Kombination aus Kategorie und Satz bildet die Rechnung eine eigene Steueraufschlüsselung (BG-23) mit Bemessungsgrundlage (BT-116), Steuerbetrag (BT-117), Kategorie (BT-118) und Satz (BT-119). Steuerfreie Positionen brauchen eine andere Kategorie, etwa E („Exempt from VAT“), und nach BR-E-10 einen Befreiungsgrund als Text (BT-120) oder Code (BT-121). Stimmt die Bemessungsgrundlage eines Satzes nicht mit der Summe der zugehörigen Positionen überein, meldet die Prüfung BR-S-08.
<ram:ApplicableTradeTax>
<ram:CalculatedAmount>109.99</ram:CalculatedAmount>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:BasisAmount>578.89</ram:BasisAmount>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:ApplicableTradeTax>
<ram:CalculatedAmount>7.59</ram:CalculatedAmount>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:BasisAmount>108.39</ram:BasisAmount>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>7</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>Quelle: KoSIT XRechnung-Testsuite 2026-08-31, Datei standard/03.01a-INVOICE_uncefact.xml (Apache 2.0)
Rundung: wo Excel und EN 16931 auseinanderlaufen
Excel rechnet intern mit vielen Nachkommastellen und zeigt nur zwei an. Die EN 16931 erlaubt bei Beträgen höchstens zwei Nachkommastellen und prüft Summen auf den Cent genau. Die Steuer wird je Steuersatz aus der Bemessungsgrundlage berechnet, nicht als Summe der Steuer je Zeile. So rechnet die Testrechnung oben:
- 578,89 € × 19 % = 109,9891 €, gerundet 109,99 €.
- 108,39 € × 7 % = 7,5873 €, gerundet 7,59 €.
- Steuer gesamt (BT-110): 109,99 € + 7,59 € = 117,58 €.
- Summe netto (BT-109) 687,28 € plus Steuer 117,58 € ergibt 804,86 € brutto (BT-112).
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:LineTotalAmount>687.28</ram:LineTotalAmount>
<ram:TaxBasisTotalAmount>687.28</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="EUR">117.58</ram:TaxTotalAmount>
<ram:GrandTotalAmount>804.86</ram:GrandTotalAmount>
<ram:TotalPrepaidAmount>1030</ram:TotalPrepaidAmount>
<ram:DuePayableAmount>-225.14</ram:DuePayableAmount>Quelle: KoSIT XRechnung-Testsuite 2026-08-31, Datei standard/03.01a-INVOICE_uncefact.xml (Apache 2.0)
| Meldung | Was die Regel verlangt | Typische Ursache in Excel | Abhilfe |
|---|---|---|---|
| BR-CO-10 | Summe der Positionen (BT-106) = Summe aller BT-131 | Positionsbeträge ungerundet addiert, erst die Summe gerundet | jeden Positionsbetrag mit RUNDEN(…;2) auf zwei Stellen bringen und diese Werte addieren |
| BR-CO-15 | Brutto (BT-112) = Netto (BT-109) + Steuer (BT-110) | Bruttosumme aus Bruttozeilen addiert statt aus Netto und Steuer berechnet | Brutto immer als Netto plus Steuer berechnen |
| BR-CO-17 | Steuer je Satz = Bemessungsgrundlage × Satz, auf zwei Stellen gerundet | Steuer je Zeile berechnet und addiert | Steuer einmal je Steuersatz aus der Summe berechnen |
| BR-DEC-23 | Positionsbetrag (BT-131) mit höchstens zwei Nachkommastellen | Formelergebnis ohne Rundung übernommen | Werte gerundet exportieren |
Rechnen Sie mit Bruttopreisen, etwa bei preisgebundenen Büchern, kann die nettobasierte Rechnung der EN 16931 zu Differenzen führen. Für XRechnung und ZUGFeRD gibt es laut BMF-Schreiben vom 15. Oktober 2026 (Rn. 19) noch kein Bruttoformat. Bis zum 31. Dezember 2027 beanstandet die Verwaltung nicht, wenn der strukturierte Teil dann nur die Summen je Steuersatz enthält und die Einzelpositionen in einer eingebetteten, lesbaren Anlage stehen, auf die der strukturierte Teil hinweist.
Profil EN 16931 wählen
Die FeRD empfiehlt für EU-konforme Rechnungen das Profil EN 16931. BASIC ist für einfache Rechnungen zulässig, kann aber keine rechnungsbegründenden Unterlagen in das XML einbetten. MINIMUM und BASIC WL sind keine E-Rechnungen, weil sie keine Positionen enthalten. Mehr dazu unter ZUGFeRD-Profile.
Werkzeuge
Der Export „Als PDF speichern“ in Excel erzeugt ein PDF ohne eingebettetes XML und damit keine ZUGFeRD-Rechnung. Sie brauchen ein Programm, das aus Ihren Daten das XML schreibt und es in ein PDF/A-3 einbettet. Das übernimmt ein Rechnungs- oder Buchhaltungsprogramm mit ZUGFeRD-Ausgabe. Für Entwickler gibt es die Open-Source-Bibliothek Mustangproject (Apache 2.0); sie schreibt und prüft ZUGFeRD- und Factur-X-Dateien und wandelt PDF/A-1 in PDF/A-3 um. Die FeRD stellt zu jeder Version ein kostenfreies Infopaket mit Schemas, Beispielrechnungen und Codelisten bereit.
Danach prüfen
Laden Sie das fertige PDF bei ZUGFeRD prüfen hoch. Die Prüfung liest das eingebettete XML aus, rechnet die Summen nach und kontrolliert den PDF/A-Aufbau. Vergleichen Sie danach Bild und Daten: Seit 2025 ist bei Abweichungen das XML maßgeblich.
Darf ich die Excel-Datei zusätzlich mitschicken?
Als eingebettete Anlage ja, wenn die Pflichtangaben im XML stehen. Der strukturierte Teil muss die Leistung selbst so genau beschreiben, dass die Rechnung ihre Kontrollfunktion erfüllt (BMF-Schreiben vom 15.10.2026, Rn. 10 bis 12).
Warum meldet die Prüfung eine Differenz von einem Cent?
Meist wurden ungerundete Zwischenwerte addiert oder die Steuer je Zeile statt je Steuersatz berechnet. Prüfen Sie zuerst BR-CO-10 und BR-CO-15.
Muss jede Tabellenzeile als eigene Position ins XML?
Die Leistung muss im strukturierten Teil eindeutig beschrieben sein. Zeilen, die nur der internen Kalkulation dienen, gehören nicht hinein. Bei Bruttopreisrechnungen gilt bis Ende 2027 die beschriebene Erleichterung.
Quellen
- ZUGFeRD-FAQForum elektronische Rechnung Deutschland (FeRD) in der AWV · geprüft am 7. November 2026
- BMF-Schreiben vom 15. Oktober 2026: Einführung der obligatorischen elektronischen Rechnung bei Umsätzen zwischen inländischen Unternehmern ab dem 1. Januar 2025; Ergänzende RegelungenBundesministerium der Finanzen, 15. Oktober 2026 · geprüft am 7. November 2026
- Spezifikation Standard XRechnung 3.0.2 – CIUS und ExtensionKoSIT, 20. Juni 2024 · geprüft am 7. November 2026
- Validator-Konfiguration XRechnung 2026-08-31 (mit CEN-Schematron 1.3.16)KoSIT (GitHub itplr-kosit), 31. August 2026 · geprüft am 7. November 2026
- Mustangproject – Bibliothek und Kommandozeilenwerkzeug für ZUGFeRD, Factur-X und XRechnungMustangproject · geprüft am 7. November 2026