Todays (2025-08-12) “2.19.0” release of Mustangproject, the open-source e-invoicing library and command line tool, among many other corrections, upgrades validation to XRechnung 3.0.2 and downgrades PDF/A issues from errors to warnings.
Category: Uncategorized
Mustangserver 1.7.1
July 12th, 2025: We are proud to announce the immediate availability of the new version 1.7.1 of our e-invoice REST API, Mustangserver.
The release not only catches up wirh Mustangproject 2.18.0, but slightly exceeds it: one issue will only be part of the next Mustangproject release.
As mentioned in the Mustangproject announcement we now use the code already introduced in 2020 to also raise warnings in the validation of invoices which which were calculated incorrectly in a particular way. Among others, there was also a fix in the calculation of relative item allowances/charges.
With Mustangserver, you can read, write, convert and validate E-invoices. More information and the sign up for a four week evaluation period are available on the Mustangserver homepage.
Mustangproject now worth a million dollars?
The open source service provider OpenHub displays an automatic estimate how much work must have gone into the projects they list. Of course this is a very rough estimate (based on the lines of code and the basic COCOMO model) but it now states the effort that went into Mustangproject may now exceed one million dollars and with their default values may have been as much as 18 man years and $1,004,027 (on Saturday, July 5th, 2025).
The potential error margin may be quite high, but on the other hand this estimate does not include work on the website, various speeches, or contributions e.g. in the Factur-X/ZUGFeRD standardization committee.
Anyway, thanks to all contributors! And thanks for contributing this (automatic) estimate!
Mustangserver 1.7.0
On June 12th, 2025, the new version 1.7.0 of our e-invoice REST API, Mustangserver, was published.
It introduces centralized exception tracking, i.e. errors affecting customers now immediately alert our technical support. Previously those messages were stored in logfiles, which had to be evaluated either occasionally or periodically.
The release brings all features and improvements of Mustang 2.17.0, upgrades PHIVE and supports more validation formats and upgrades to PDFBox 3.0.5, fixing a minor with certain PDF files (issue 217).
2.17.0
Today, June 11th, 2025, we released version 2.17.0 of our open-source “swiss army knife” tool for e-invoices, Mustangproject. As usual, it will read, write, validate and convert european and german e-invoices, e.g. in Factur-X or XRechnung.
This new version now properly distinguishes between item allowances and charges on product, item and document level, previously only product and document level was possible and the product level was assigned at item level (our issue #764). This may affect invoice totals, please check. CalculatedInvoice received a “getCalculation”- and TransactionCalculator a “getTaxDetails”-getter.
Additionally, the following corrections were performed:
- #820/801/815 Fix invoiceImporter: empty NodeList, empty Strings
- #822 Wrapping Message Text in Validation Result PDF
- #843 Re-Initialize the HTML-template on language change
- #854 allow multiple item charges/allowances when visualizing to html
- #786 Fix Invoices with Category Code “O” #786
As usual, the software is avaiable for free as java library from Maven Central and as command-line tool for Windows, Linux and Mac from it’s website.
2.16.5
Today, May 22nd, 2025, we released version 2.16.5 of our open source e-invoicing toolkit Mustangproject.
New Features
This release supports Factur-X 1.07.3/ZUGFeRD 2.3.3 (#833) and
Corrections
improves UBL parsing (#816, #835). Further fixes include
- #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
Two reasons for the micro increase of the version number:
- ZUGFeRD 2.3.3 does not require updates on sending or receiving side, but the validation has been corrected and is now based on version 15 of the codelists.
- The work on correcting absolute item allowances (#764) progresses, but currently fails a roundtrip, i.e. either invoices are produced correctly or parsed correctly. This change can and will be properly tested and released in a later version, a 2.17.0 at the end of June fixing this (and changing calculation) sounds realistic.
Mustang.net-merged-into-Ghostscript.net-Webinar
Hello,
As documented (p35f) there is a a C# client for MustangServer, which you can use to read/write and validate e-invoices. While we do continue with Mustangserver, and the Java version of Mustangproject as usual, our former Mustang.net initiative has now been completely merged into Ghostscript.net.
We would like to invite you to a explanatory webinar in a online-only event on 15.05.2025, 15:00-16:00 CET. Please access the details and the application for a participation link, which we kindly ask to fill out by the end of Wednesday (May 14th).
If you want to try former Mustang.net-now-Ghostscript.net-features you can add Ghostscript.net via nuget to your project and use this snippet to get you started:
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());
Mustangserver 1.6.3
Today, March 7th, 2025 we published a a new version of our e-invoicing REST API, Mustangserver.
It brings the benefits of Mustangproject version 2.16.3, e.g. the possibility to specify item based charges and allowances also using JSON, and fixes a potential security as well as a maintenance issue.
Existing users already see the 1.6.3 option, new users can subscribe for a free 30 day evaluation period. Version 1.6.3 will become the new default version as of tomorrow.
2.16.3
Today, March 3rd, 2025, we released a new version of our open-source e-invoicing library and tool, Mustangproject. This version 2.16.3 mitigates a potential security issue (#685/#725), allows to write invoices using the invoice class without VAT ID (#745) and more.
Details:
- #558 ZUGFeRDInvoiceImporter does not read BankDetails.accountName
- #686 Item: add BillingSpecifiedPeriod
- #739 also parse invoiceperiod from ubl
- #745 be able to specify legalorganisation id without schema
- #747 correct profile detection
- #710 Validation Error due to empty elements
- #712 Correct bracket setting on condition for output of allowance reason.
- #725 Unable to perform XML-oriented attacks
- #685 Security Issue: XXE Vulnerability in ZUGFeRDInvoiceImporter (PR #725)
- #761 Allow to set item allowance/charges from JSON
Mustangserver 1.6.2
Today, February 27th, 2025 we published a hotfix to our e-invoicing REST API, Mustangserver, fixing an issue in the “detach” endpoint which may cause some invoices not to display embedded factur-x.xml files.