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.

Mustangserver 1.6.1

Today, February 6th, 2025 we released a new Version of our Software-as-a-Service e-procurement REST API, Mustangserver, fixing minor details like the in rare cases potential incomplete list of invoice attachments.

2.16.2

Mustangproject 2.16.2 was released today, February 5th, 2025 and features only minor fixes regarding (among others) PDF and invoice attachments, in detail:

  • #705 specifiedLogisticsCharge is not imported
  • #707 invoiceimporter may fail if certain values are not set
  • #708 embedded files cannot be determined
  • #709 ZUGFeRDInvoiceImporter ignored “first” embedded file in list of pdf attachments
  • #607 Enable flexible PaymentReference and a DocumentName.
  • #649 Reuse toPDF method to work without any dependencies to the file system
  • #650 Add net.sf.offo:fop-hyph
  • #665 Fix #632: Return ubl_creditnote as Standard for CreditNotes
  • #684 Optimize validation-report to pdf functionality
  • #703 Fill TaxExemptionReason during InvoiceImport.
  • #701 Ensure Base64 decoding can handle newlines when decoding a FileAttachment
  • #691 Fix current check failures.

2.16.1

Mustang 2.16.1, released today, January 21st, 2025, features some small corrections like

  • #678 some ubl creditnote attributes are not parsed
  • #679 validation of a XR does not ignore whitespace
  • #681 IBAN assigned to invoice sender not recipient on direct debit
  • #689 incorrect element order when both charge reason and reasoncode are specified
  • be able to set detailedDeliveryPeriodFrom, detailedDeliveryPeriodTo via JSON
  • updated verapdf from 1.26.1 to 1.26.2
  • cashDiscount JSON now corrently ignores values for cii and xr methods