Mustangserver 1.4.0

On September 2nd we released Mustangserver 1.4.0 which now features the possibility to extract files embedded in invoices, and allows to convert invoices not only to HTML but also to PDF.

Mustangserver is the REST API which provides functionality from the Mustangproject library, which it is based on, and more. Since Mustangproject has been upgraded to 2.13 in the background, some fixes, like an improved conversion of UBL to HTML, or the removal of due date as de facto required field, are now also taking affect, additionally to the fixes immediately applied to Mustangserver: two fixes concerning article description as well as an improved manual, which now also features instructions how to use Mustangserver in conjunction with C#.

Mustangserver 1.4.0 can already be specifically selected and will become default for operations without specified versions at the next planned maintenance on 28 September.

Mustang/Quba Q&A

On September 4th, 5th, 6th and 9th we will conduct four public, free-of-charge, 60min online Q&A sessions regarding our open-source e-invoicing tools Quba-Viewer, Mustang, Mustangserver and Mustang.net, repectively. Please indicate your availability by September 2nd.

Mustang 2.13.0

Today, on August 28th, 2024, we published Mustang 2.13.0, which, among others, allows to access embedded files in invoices.

Fixes

  • Avoid NullPointerException if dueDate is not set. #441
  • Fix build warnings from editing and building. #415
  • ZUGFeRDVisualizer.toPDF(): generate PDF/A-3b. #400
  • No interface for required field CreditorReferenceID #436 and
  • filename of embedded file was not xrechnung.xml when using profile xrechnung #452
  • allow legalorganisation to have a tradingbusinessname #447
  • JSon deserialization does not work with BankDetails #455
  • Fix ClassCastException in CLI (Main.java). #451

Refactorings

  • refactor(ZUGFeRDVisualizer): improve PDF visualization performance #438
  • product creation without description now possible empty description

New features

  • Item Attributes and Country of Origin missing on Product. #420
  • X-Rechnung direct-debit missing mandatory field BT-90 #370. (langfr)
  • support reasoncodes #431
  • Enhance Charges/Allowances with reasonCode. #432
  • changed additional references by line from String to List and implemented it on Item #454
  • allow access to invoice attachments via ZUGFeRDInvoiceImporter zii.getFileAttachmentsPDF()
    and XML (zii.getFileAttachmentsXML)

Mustangserver 1.3.1

On July 23rd we released Mustangserver 1.3.1 with a improved documentation and better “Phive”-validation, i.e. Phive now also validates XRechnung 3.0.2 and FatturaPA, the number of supported format/version combinations (“VES-IDs”) has increated from 144 to 173.

Of course Mustangproject has been upgraded to 2.12 in the background, some smaller features were added and PDF/A-3 has now, additionally to PDF/A-1, become acceptable input.

Mustangserver 1.3.1 can be specifically selected and will become default for operations without specified versions at the next planned maintenance on 28 September. On the subsequent planned maintenance some three month later the pre-predecessor, Mustangserver 1.2.0, will likely be phased out.

Mustang 2.12.0

Today, on July 20th, 2024, we published Mustang 2.12.0. Due to dependencies, this is the first Mustang to require at least Java 11 (previously Java 8).

Fixes

  • set profile to XRechnung if XR is imported #395
  • #397 Build succeeds but file is unusable on alpine/docker
  • Fix #389: ClassCastException: ZUGFeRDExporterFromA3
  • ZF extended no longer requires deliverydate #411
  • ubl visualization: no longer require ubl namespace prefix #416
  • #392 CLI: action combine: –ignorefileextension to ignore PDF/A input file errors dosen’t work
  • Return all BankDetails from parsed CII xml: #408.

Refactorings

  • Jakarta XML support #372
  • Upgrade to PDFBox 3 #373
  • Requires Java 11 due to PH-Schematron 8
  • for CLI combine, fx is now default
  • logback (#402) and java.util.logging (#407) removed in favor of slf4j #402
  • Powershell compatibility: added –no-additional-attachments command line option for better batch processing:
    In cmd also –attachments “” worked but in powershell it was hard to figure out that one had to use –attachments ‘””‘

New features

  • support pdf export/visualization to PDF, thanks to Heavenfighter #387 allow embedd fonts from jar-file for pdf creation #388
  • Be able to validate XRechnung/UBL files #337

Postscriptum, July 22nd 8pm CET: While the change to Java 11 had been announced the need for the “shaded” classifier to include dependencies when deploying from Maven Central came surprisingly. Please let me know if you have an idea where that came from, I dont see changes that should have made that neccessary.

Mustang 2.11.0

Yesterday, May 22nd 2024 we released version 2.11 of our cross platform e-invoicing library/validator/tool Mustangproject.

Refactorings/Updates

  • EN16931 validation 1.3.12 codelists v11 #357
  • Fonts removed #358
  • invoice’s getSender/getRecipient() now return tradeparty no IZUGFeRDExportableTradeParty
  • #314 ZUGFeRDInvoiceImporter additional constructor

Issues/Improvements

  • InvoiceImporter UBL to also parse contacts and other UBL improvements
  • (first) IBAN is now parsed into sender’s getBankDetails
  • Gross price removed if equal net https://github.com/ZUGFeRD/mustangproject/pull/369 / surrendered to XRechnung 3
  • compromises, e.g. no longer put gross amount if it does not deviate from net

New features

  • ZUGFeRDImporter to also accept xml files (previously that needed to be run through XMLImporter)
  • Xrechnungimporter to also read from filename, inputstream
  • Support inputstreams https://github.com/ZUGFeRD/mustangproject/pull/379
  • be able to programmatically access validation messages https://github.com/ZUGFeRD/mustangproject/pull/382
  • added cash discount write support (new class, previously only possible for XRechnung, not ZF Extended, using a manually encoded setPaymentTermDescription)

Germany introduces mandatory B2B e-invoices 2025-2028

On Friday, 2024-03-22, the german Federal Council (Bundesrat) passed the law on statutory domestic B2B e-invoicing which will ban paper and PDF invoices without Factur-X between german companies as of 2028. Background

We took this as an occasion to relaunch the (inofficial) https://ZUGFeRD.org/ page, which still lists open source tools but now also features a navigation and has a (english) FAQ you can contribute to.

Mustangserver 1.3

Today, march 24th, 2024, we released a set of changes to both our infrastructure and our Mustangserver server application.

Updates to the infrastructure

  • There are now minimum Service Level Agreements (SLAs) in our contract.
    In the basic configuration we only guarantee 99% availability but we can talk if you need more. We now also have more scalable prices.
    The amount of operations per month when we still consider someone a “standard” customer has been increased five-fold.
  • Authentication using API keys: API keys are easier to use than our standard oauth2 authentication and they can be restricted by time, referrer or IP address. This was possible before but we now resolved the last issues and added it to our documentation.
  • There is now end-to-end-monitoring on both APIs, Mustangserver and Mustangserver-docs. Previously we monitored the OS and the process only, but not it’s responses, which in very rare cases would give us false negatives. Now we periodically perform a full round trip including actual operations on the api manager and the server process.
  • Load balancing is now tested and enabled: We tested the already existing load balancer, now we really “armed” it.

Application updates

Among others,

  • we updated the Phive validator to now also validate e.g. german XRechnung 3.0.1
    (for CII this was previously possible using Mustangservers internal /validate validation),
  • we updated the documentation e.g. on the visualization, i.e. on xmltohtml
  • we made it easier to log messages in a massively parallel scenario and
  • we added a endpoint “combine”, which adds a invoice object as JSON directly to
    a PDF/A file. Previously there was only combineXML, which required the JSON to be converted
    to XML in a previous step.

B2B Situation in Germany

The mediation council has suggested yesterday to introduce mandatory domestic B2B e-invoicing in Germany two years later than originally anticipated, with an obligation to read as of 2025 and write as of 2026. The german parliament may confirm this compromise on 2024-02-23 and the federal council should then ratify on 22.03.2024.

Update on 24.02.2024: I was corrected that the deadline remains 2025/2026, in the original version of this post on Thursday, 22 February I had incorrectly interpreted a requested two year delay to 2027/2028.