Im heutigen (12.08.2025) “2.19.0”-Release von Mustangproject, der open-source E-Rechnungs-Bibliothek und Kommandozeilentool, wird neben vielen anderen Korrekturen die Validierung der XRechnung auf Version 3.0.2 angehoben und PDF/A-Probleme von Fehlern auf Warnungen herabgestuft.
Category: Unkategorisiert
FrOSCon 2025: 17.08.
Der englische Vortrag auf der FrOSCon 2018 in Siegburg bei Bonn ist ja schon etwas her und sogar der diesjährige Vortrag auf der FOSDEM in Brüssel (auf Englisch) ist nicht mehr ganz aktuell.
Am Sonntag, 17.08.2025 um 11:15 folgt daher der nächste E-Rechnungs-Vortrag auf der übrigens kostenfreien FrOSCon 2025, diesmal auf deutsch: Danke an dieser Stelle an die FrOSCon.
In diesem Post werden spätestens am 16.08. die Quellen und Folien (Mustang und Quba werden am Rande erwähnt werden) und im weiteren Verlauf nach der Veranstaltung auch der Link zum Video veröffentlicht.
[Update am 16.08.]
Slides.
[Update am 18.08.]
Das Video befindet sich auf https://media.ccc.de/v/froscon2025-3244-pflichtupload_staats-cloud_e-rechnung_stufen_2_3_und_4.
Text-Quellen:
- [1]
- https://www.batch.co.uk/web/images/PDFs/EU-report.pdf
- [2]
- https://eur-lex.europa.eu/legal-content/DE/TXT/HTML/?uri=CELEX:32014L0055
- [3]
- https://www.oecd.org/tax/forum-on-tax-administration/publications-and-products/Italy-Electronic-invoicing-May-2021.pdf
- [4]
- Richtlinie (EU) 2025/516 https://eur-lex.europa.eu/legal-content/DE/TXT/PDF/?uri=OJ:L_202500516
- [5]
- https://www.recht.bund.de/bgbl/1/2024/108/VO.html Art 23 S. 23ff
- [6]
- https://www.dinmedia.de/de/norm/din-en-16931-1/327729047
- [7]
- https://www.dinmedia.de/de/vornorm/din-cen-ts-16931-2/274991011
- [8]
- https://xeinkauf.de/app/uploads/2024/07/302-XRechnung-2024-06-20.pdf
- [9]
- https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Steuerarten/Umsatzsteuer/Umsatzsteuer-Anwendungserlass/2025-06-25-ENTWURF-einfuehrung-oblig-e-rechnung.pdf?__blob=publicationFile&v=4
- [10]
- https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Steuerarten/Umsatzsteuer/2024-10-15-
einfuehrung-e-rechnung.html - [11]
- https://quba-viewer.org/
- [12]
- openparliament.tv https://de.openparliament.tv/media/DE-0200129018?q=verpflichtende+elektronische+Rechnung&t=114. / Protokoll https://dserver.bundestag.de/btp/20/20129.pdf#P.16135
- [13]
- https://www.bundesfinanzministerium.de/Monatsberichte/2022/09/Inhalte/Kapitel-3-Analysen/3-4-umsatzsteuerbetrug-elektronisches-meldesystem-pdf.pdf?__blob=publicationFile&v=5
- [14]
- https://www.fakturama.info/
- [15]
- Verordnung (EU) 2025/517 https://eur-lex.europa.eu/legal-content/DE/TXT/PDF/?uri=OJ:L_202500517&qid=1750929799829
- [16]
- https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Weitere_Steuerthemen/Abgabenordnung/AO-Anwendungserlass/2024-03-11-aenderung-gobd.html
- [17]
- https://dserver.bundestag.de/btd/20/127/2012742.pdf
- [18]
- https://www.mustangproject.org/
- [19]
- Durchführungsverordnung (EU) 2025/518 https://eur-lex.europa.eu/legal-content/DE/TXT/PDF/?uri=OJ:L_202500518
- [20]
- https://ec.europa.eu/digital-building-blocks/sites/display/DIGITAL/Registry+of+supporting+artefacts+to+implement+EN16931
- [21]
- https://www.ferd-net.de/download-zugferd ZF Spezifikation 2.3.3, S. 21, Prinzip 4, Identität obliegt dem Aussteller
- [22]
- https://eur-lex.europa.eu/legal-content/DE/TXT/HTML/?uri=CELEX:52022PC0701
- [23]
- Stellungnahme der acht Spitzenverbände der Deutschen Wirtschaft zum Referententwurf https://www.bundesfinanzministerium.de/Content/DE/Gesetzestexte/Gesetze_Gesetzesvorhaben/Abteilungen/Abteilung_IV/20_Legislaturperiode/2023-09-08-WtChancenG/0-Gesetz.html
- [24]
- Kollmann https://www.pagero.com/downloads/documents/compliance/Next_Generation_Model-Decentralised_CTC_and_Exchange_v1.pdf
- [25]
- https://peppol.org/wp-content/uploads/2022/08/The-Netherlands-Peppol-Authority-Specific-Requirements.pdf
- [26]
- https://peppol.org/learn-more/country-profiles/germany/
- [27]
- https://www.it-planungsrat.de/fileadmin/beschluesse/2022/Beschluss2022-31_Evaluation_Peppol.pdf s. 4
- [28]
- https://www.eespa.eu/news-events/news-item/2022/08/03/A-NEXT-GENERATION-MODEL-FOR-ELECTRONIC-TAX-REPORTING-AND-INVOICING-DCTCE-v20
- [29]
- PDPs Plateforme de Dématérialisation Partenaire https://sharedserviceslink.com/blog/pdp-providers-list-for-e-invoicing-compliance-in-france-
- [30]
- PPF Portail Public de Facturation https://www.heropay.eu/en/blog/ppf-electronic-invoicing
- [31]
- SecNumCloud https://www.openbee.com/en/news/secnumcloud-e-invoicing/
- [32]
- https://zugferd.org/
Bildquellen:
- [a]
- ChatGPT
- [b]
- ChatGPT
- [c]
- McConnell 1996, Illustration zu Code&fix, in Rapid Development: Taming Wild Software Schedules
- [d]
- Spiegel, https://www.spiegel.de/fotostrecke/schilderwald-kurios-vor-tarzangebruell-wird-gewarnt-fotostrecke-530.html
Mustangserver 1.7.1
12.07.2025: Wir sind stolz, die sofortige Verfügbarkeit der neuen Version 1.7.1 unserer E-Rechnungs-REST-API Mustangserver bekannt zu geben.
Die Veröffentlichung bringt nicht nur alle Verbesserungen von Mustangproject 2.18.0, sondern übertrifft es leicht: Eine Korrektur wird erst Teil der nächsten Mustangproject-Version sein.
Wie in der Mustangproject-Ankündigung erwähnt, nutzen wir bereits 2020 eingeführten Code, um auch Warnungen bei der Validierung von Rechnungen auszulösen, die in einer bestimmten Weise falsch berechnet wurden. Unter anderem gab es auch eine Korrektur bei der Berechnung der relativen Artikelzuschläge/-zuschläge.
Mustangerver kann E-Rechnungen erstellen, lesen, konvertieren und validieren. Weitere Informationen und ein kostenloser vierwöchiger Testzeitraum sind auf der Mustangserver-Homepage erhältlich.
2.18.0
Am 14.07.2025 haben wir Version 2.18.0 unseres plattformunabhängigen open-source e-Rechnungsprojekts “Mustangproject” veröffentlicht.
Seit November 2020 werfen wir ja bereits Fehlermeldungen beim Import falsch gerechneter Rechnungen.
Trotz unserer abgelehnten Anfrage im Juni 2023 diese spezielle Prüfung in den Standard aufzunehmen, werfen wir jetzt auch beim Validieren eine Warnung wenn bei einer Position Menge * Einzelpreis (bezogen auf die Basismenge zuzüglich Zuschlage abzüglich Rabatte, gerundet auf zwei Nachkommastellen) falsch ist.
Diese Prüfung können wir jetzt durchführen nachdem wir mit issue 887 die prozentuale Berechnung von Positionsrabatten korrigiert haben. Im import werden die entsprechenden Arithmeticexceptions (nicht mehr “Arithmetricexceptions”) jetzt auch nicht mehr vorzeitig abgefangen, sodass sie durch die Anwendung behandelt werden können.
Zusätzlich danken wir allen Beitragenden für die folgenden Korrekturen:
- BT-90 CreditorReferenceID lesen können
- #871 schema validierung ignoriert external entities nicht
- #868 version korrigiert in History.md
- #729 Aktualisierungen betreffs SpecifiedTradeSettlementHeaderMonetarySummation und SpecifiedTradeSettlementPaymentMeans
- #863 LineCalculator wirft Nullpointer NPE wenn Produkt null ist (seit 2.17.0)
- #731 Falscher Übersetzungsschlüssel bei Visualisierung von XML in PDF(xr:Business_process_type)
- #865 sevdesk als erkanntes Autorenprogramm hinzugefügt
- #849 Rechenfehler ingnorieren beim extrahieren von XML aus PDF
- #856 Faxnumber des Ansprechpartners lesen.
- #850/#843 Korrektur bei Sprachwechsel bei HTML-Ausgabe
- #855 Leere Elemente in XML-Ausgabe unterdrücken
- #874 PDNameTreeNodes überspringen falls Names null oder leer sind
- #830 Ungültiges generiertes XML: vat-category-code der Positionen mit !=0%
- #726 IBAN geht bei Umwandlung von CII nach UBL verloren
- #885 JSON-Duplikate der Attribute betreffend Positions-Rabatte und Zuschläge
Mustangproject jetzt eine Million Dollar wert?
Der Open-Source-Dienstleister OpenHub zeigt eine automatische Schätzung, wie viel Arbeit in die von ihm gelisteten Projekte geflossen sein müssen. Dies ist natürlich eine sehr grobe Schätzung (basierend auf der Anzahl Codezeilen und dem Basic COCOMO-Modell), aber mittlerweile überschreitet der angenommene Aufwand, der in Mustangproject geflossen ist, eine Million Dollar. Am heutigen, Samstag, 5. Juli 2025, mit den OpenHub Standardwerten von 18 Mannjahre und 1.004.027 Dollar ausgegangen.
Selbst bei Annahme eines sehr breiten Fehlerbereichs sind in dieser Schätzung die Arbeit an der Website, diverse Reden und Veröffentlichungen und Beiträge zum Beispiel zur Factur-X/ZUGFeRD-Standardisierung nicht enthalten.
Trotzdem vielen Dank an alle Mitwirkenden! Und vielen Dank für den Beitrag der (automatischen) Schätzung!
Mustangserver 1.7.0
Am 12.06.2025 wurde die neue Version 1.7.0 unseres e-Rechnungs-Servers, Mustangserver, veröffentlicht.
Sie führt zentrales “Exception tracking” ein, das heißt, dass der Support bei Fehlern direkt alarmiert wird. Bisher wurden diese Fehler nur protokolliert, was eine Nachauswertung erforderlich machte.
Weiterhin bringt dieses Release alle Erweiterungen und Verbesserungen von Mustang 2.17.0, aktualisiert den Validierer PHIVE, unterstützt mehr Validierungsprofile, und korrigiert einen kleinen Fehler mit bestimmten PDF-Dateien(issue 217).
2.17.0
Am heutigen 11.06.2025 haben wir Version 2.17.0 unseres open-source “Schweizer Armeemesser” Tools für e-Rechnungen, Mustangproject, veröffentlicht. Wie üblich liest, schreibt, validiert und konvertiert es europäische und deutsche e-Rechnungen beispielsweise im Factur-X- oder XRechnungs-Format.
Die neue Version unterscheidet jetzt korrekt zwischen Zuschlägen und Rabatten auf Produkt-, Positions- und Dokumentenebene, vormals war das nur auf Produkt und Dokumentebene möglich (unser Fehler #764). Dies kann einzelne Berechnungen korrigieren, bitte prüfen Sie gegebenenfalls Ihre Implementierung. Zusätzlich haben die Klassem CalculatedInvoice und TransactionCalculator jetzt “getter”, namenlich “getCalculation” beziehungsweise “getTaxDetails” erhalten.
Weiterhin wurden folgenden Korrekturen vorgenommen:
- #820/801/815 invoiceImporter korrigiert: leere NodeList, leere Strings
- #822 Nachrichtenumbruch im Validierungsergebnis-PDF
- #843 Nach Sprachwechsel HTML-Vorlage neu initialisieren
- #854 mehrere Positionszuschläge/Rabatte erlauben bei der Umwandlung in HTML
- #786 Korrektur vn Rechnungen mit USt-Kategorie “O”
Wie üblich ist die Software als Java-Bibliothek über Maven Central und als Kommandozeilentool kostenlos für Windows, Linux und Mac auf ihrer Webseite verfügbar.
2.16.5
Am heutigen 22.05.2025 haben wir eine neue Version 2.16.5 unserer open source e-Rechnungssoftware Mustangproject veröffentlicht.
Neue Features
Diese Version unetstützt Factur-X 1.07.3/ZUGFeRD 2.3.3 (#833) und
Korrekturen
verbesserte das Parsen von UBL-Dateien (#816, #835). Weitere Korrekturen beinhalten
- #819 correct generateXSLTFromSchematron profile
- #458 Its not possible to add multiple PaymentTerms when using the extended profile
- #788 Invoice taxes aren’t acessible
- #790 Crash upon importing an invoice with empty name.
- upgrade from PDFBOX 3.0.2 to 3.0.5
- #817 added ZUGFeRD.PDF-csharp to list of PDF creators
- #811 Fix typo in xpath when extracting buyer trade party address
Zwei Gründe, warum sich das nur auf die Micro-Versionsnummer ausgewirkt hat:
- ZUGFeRD 2.3.3 erfordert weder beim schreiben noch beim lesen Änderungen, aber die Validierung wurde leicht korrigiert und basiert jetzt auf Version 15 der Codelisten.
- Die Arbeit an der Korrektur von Absoluten Positionszuschlägen (#764) geht voran, funktioniert aber noch nicht gleichzeitig in beide Richtungen, das heißt Rechnungen werden entweder korrekt erzeugt oder korrekt gelesen. Diese Änderung sollte korrigiert und intensiv getestet werden und wird in einer späteren Version, möglicherweise einer 2.17.0, möglicherweise Ende Juni umgesetzt.
Mustang.net-nach-Ghostscript.net-portiert-Webinar
Hallo,
Wie dokumentiert (p35f) gibt es bereits einen C#-client für Mustangserver, den Sie verweden können um e-Rechnungen zu lesen, zu schreiben und zu validieren. Während wir an Mustangserver und natürlich der Java-Version von Mustangproject weiterarbeiten, haben wir unseren Mustang.net-Ansatz jetzt komplett in Ghostscript.net einfließen lassen.
Ein klärendes Webinar dazu findet (in englisch) statt am 15.05.2025, 15:00-16:00 CET. Weitere Details sowie Bewerbung um einen Teilnahmelink, füllen Sie bitte bis Mittwochabend, dem 14.05. aus.
Falls Sie Mustang.net-jetzt-Ghostscript.net einfach nur antesten wollen fügen Sie Ghostscript.net via nuget Ihrem Projekt hinzu und benutzen Sie beispielsweise folgenden Code:
using Ghostscript.NET.PDFA3Converter.ZUGFeRD;
Invoice i = (new Invoice()).setDueDate(DateTime.Now).setIssueDate(DateTime.Now).setDeliveryDate(DateTime.Now).setSender((new TradeParty("Test company", "Test Street 1", "55232", "Test City", "DE")).addTaxID("DE4711").addVATID("DE0815").setContact(new Contact("Hans Test", "+49123456789", "te...@example.org")).addBankDetails(new BankDetails("DE12500105170648489890", "COBADEFXXX"))).setRecipient(new TradeParty("Franz Mueller", "Test Street 12", "55232", "Entenhausen", "DE")).setReferenceNumber("991-01484-64").setNumber("123").addItem(new Item(new Product("Test product", "", "H87", 19m), 1.0m, 1.0m));
ZUGFeRD2PullProvider zf2p = new ZUGFeRD2PullProvider();
zf2p.generateXML(i);
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
string outfilename = "c:\\your\\dir\\gs-factur-x.xml";
File.WriteAllBytes(outfilename, zf2p.getXML());
2.16.4
Die am 22.04.2025 veröffentlichte Mustangproject Version 2.16.4 bringt 16 kleine Korrekturen, zwei davon möglicherweise Sicherheitsrelevant, und eine von den 16 korrigiert leicht zu hohen Ressourcenverbrauch, i.e. nicht gelöschte Dateien.
Ein weiterer Punkt, (#764),
wird in 2.17.0, möglicherweise im Mai angegangen, vielleicht mit dem Release das auch ZUGFeRD 2.3.3 (i.e. Codelistenversion 15) unterstützen wird: Absolute, nicht prozentuale, positionsbasierte Zuschläge/Abschläge dürfen wohl nicht mit der Menge multipliziert werden, wie sie es derzeit in Mustang getan werden. Falls das wahr ist muss ich (Jochen) nicht nur die Berechnung sondern auch einige Tests korrigieren, und einige wenige Rechnungen werden unterschiedliche Endbeträge erzeugen.
Neue Funktionen in 2.16.4
- #818 Möglichkeit der Angabe von Dateinamen-Ausnahmen beim rekursiven Validieren mit validateExpectValid
- #741 read accountingReference lesen
- #809 mehrere Zuschläge/Abschläge pro Position berücksichtigen
- #812 Dateianhang bekommen eine Standard-Anhangsart (ohnehin nur für PDF-Dateianhänge verwendet)
Korrekturen
- #774 XML Entities parsing deaktiviert (möglicherweise sicherheitsrelevant, teilweise rückgebaut wegen fehlschlagender Tests)
- #778 XML External Entity Schutzfunktion hinzugefügt (möglicherweise sicherheitsrelevant, teilweise rückgebaut wegen fehlschlagender Tests)
- #742/#753 “Adresszusatz 1” (LineTwo) zeigt “Postfach” in HTML
- #614, #770 Exemption reason sollte nicht wiederholt werden
- #728 setCorrection erzeugt doppelte XML-Ausgabe
- #776 Mögliches Ressourcenleck in Dateiverarbeitenden Klassen
- #782/771 NullPointerException vermeiden bei Product Description
- #772 TradeParty Name sollte optional sein für ShipToTradeParty
- #775 ungelöschte Temporärdateien
- #802 fix: Großgeschriebenes D für ID in listID
Umstrukturierungen
- #759 Klasse statt var Typ verwenden
- #722 ValidationLogVisualizer erweitern, sodass er nicht zwingend das Dateisystem benutzt