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.

Mustangserver 1.2

Mustangserver 1.2, available since January 8th, 2024, sported minor changes, the only differences being that /combineXML now supports XRechnung 3 as output and
/parse as well as /invoice2XML accordingly support email addresses of tradeparties, not only of their contacts: Already previously one could validate XRechnung 3.0.

This new version has now been set as default on Monday, 29 January 2024.

Mustang 2.10.0

The new version of Mustangproject, 2.10.0, released today, December 30th 2023, adds write support for XRechnung 3.0.1, which becomes mandatory for german B2G invoices as of February 2024 (issue #343). Users will need to add email addresses for also for tradeparties themselves, not only for their contacts.
Additionally two minor issues were fixed, concerning PDF/A3 input from inputstream and the commandline is now again capable opf producing Factur-X 1 files, closing issue #354.

Mustangserver 1.1

On Saturday, December 9th, 2023, during the planned maintenance window of Mustangserver we released version 1.1.
This release

  • Renames a parameter for consistency (invoice2XML’s parameter standard was renamed to format)
  • Improves exception handling and also returns exception messages where they may have been discarded in the past
  • The internally used header parameter Username which was previously listed optional has now been removed altogether from the interactive demo version. The parameter had been overwritten internally by the API management anyway but it was confusing for users who may have thought they had to enter something, which caused errors, anyway.
  • The endpoint CombineXML transparently now also accepts PDF/A-3 input files for Factur-X output. This is partly due to the fact that we’ve seen that PDF/A-3s created with the mustangserver-docs endpoint in some cases (heavy use of big graphics) could be up to 80% smaller in size compared to their PDF/A-1 counterparts, presumambly, due to compression algorithms introducted between those versions.

Additionally, during the maintenance we

  • updated our SSL certificates, which would otherwise have been due on December, 23rd
  • We now by default redirect to “devportal”, i.e. the API “market place”, when accessing api.usegroup.de. Previously the build-in auto-redirection was to “publisher” (part of the administration) which was unfortunate for users who had used self-sign-up and may have been confronted with spurious lack-of-privileges-messages.
  • We restricted access to Mustangserver-docs, the PDF/A-generating endpoint. Existing users still have access but new users, in particular those using self-sign-up, will have to specifically request access in the future if they require to test it, as it is a premium feature anyway.

Mustang 2.9.0

Mustangproject version 2.9.0 was released today, November 27th, 2023.
New features include

  • Previously one had to specify if the input was PDF/A-1 or PDF/A-3, now with #341 we have input PDF-A Version autodetection
  • It can now validate XRechnung 3.0.1 #347

and it comes with the following fixes

  • Missing closing tag in BankDetails when there’s no BIC number #339
  • PDF/A-3 input now also sets a default ZUGFeRD version

The following known issues remain:

  • the Xrechnung validation still only covers the CII version #337,
  • it does not yet write XR 3.0 #343 and
  • there are still known ZUGFeRD upstream issues with validation in particular affecting XRechnung #316