Mustangproject 2.15.0

Mustangproject is a tool to write, validate and parse Factur-X/ZUGFeRD and (CII)XRechnung e-invoices. It is a (permissive) open source cross platform command line tool and a Java library. The command line tool e.g. allows to extract and combine PDF and XML from/to Factur-X as well as validate e-invoices, convert XML to HTML or migrate from ZUGFeRD v1 to v2. The library additionally allows to generate the XML to be embedded either by implementing interfaces or actively creating objects.

Tags invoice metadata accounting java-library java e-billing e-invoice
License APL
State stable

Recent Releases

2.15.018 Nov 2024 19:07 minor feature: This release fixes some errors and supports Factur-X/ZUGFeRD 2.3.2 (#531). It uses its UBL compatible InvoiceImporter as basis for the ZUGFeRDimporter convenience methods (#435). It additionally fixes a PDF/A validation issue #538, converts UBL and CII to validated PDF/A #523, now also supports validation warnings #532 and also validates UBL credit notes #555.
2.14.214 Oct 2024 11:49 minor feature: Fixes - also parse BICs in InvoiceImporter not only IBANs - #509 CLI currently does not write a logfile - #505 crash after invoking ZUGFeRD2PullProvider - #506 Fix POM missing dependencies
2.14.106 Oct 2024 08:17 minor feature: Fixes #481 also be able to convert XRechnung/UBL to PDF not only CII #494 Quantity/Price Decimal Places #391 Runden bei Negativwerten #491/501 non terminating decimal expansion upgraded en16931 cen schematron to 1.3.12 #499/500 PDF layout corrections
2.14.023 Sep 2024 17:24 minor feature: ZUGFeRD 2.3.0 support (fixing multiple validation issues). Fixes #467 Fix test using wrong file #468 Fix validator dependencies #482 Fix current validation errors #423 can no longer add attachments via cli #465 cli version should also be able to combine PDF/A-3 source #472 Fix logging implementation missing in CLI #471 Fix LegalOrganisation schemeId #473 Fix UnsupportedOperationException in buildNotes New Features #456 Provide a way to set uriUniversalCommunicationId on the TradeParty using JSON deserialization #461 UBL import contacts #463 add support for BT-33, i.e. Tradeparty description #463 #469 Enable EN16931 schema validation for XRechnung #476 Add DesignatedProductClassification for SpecifiedTradeProduct #487 update to zugferd 2.3.0
2.13.029 Aug 2024 09:05 minor feature: Allows access to 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)
2.12.029 Jun 2024 03:25 major bugfix: Support pdf export/visualization to PDF, thanks to Heavenfighter #387 allow embedd fonts from jar-file for pdf creation #388. : ClassCastException: ZUGFeRDExporterFromA3. Jakarta support #372. Upgrade to PDFBox 3 #373. #397. #392 CLI: action combine: --ignorefileextension to ignore PDF/A input file errors dosen't work. For CLI combine, fx is now default.
2.11.017 May 2024 00:05 major bugfix: 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 constructur 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)
1.3.1207 May 2024 11:25 minor bugfix: Codelists v11 #357 Fonts removed #358. Xrechnungimporter to read from filename, inputstream. Invoice's getSender/getRecipient() now return tradeparty no IZUGFeRDExportableTradeParty. (first) IBAN is now parsed into sender's getBankDetails. Zugferdimporter to accept xml files. UBL importer to also parse contacts. Https://github.com/ZUGFeRD/mustangproject/pull/369. Upgrade ph-schematron from.
1.3.1101 Feb 2024 21:25 minor bugfix: Codelists v11 #357
2.10.023 Dec 2023 07:25 major bugfix: - Also accept pdf/a3 from inputstream. Factur-x 1 from commandline. Support XR.
2.9.026 Nov 2023 08:05 major bugfix: Missing closing tag in BankDetails when there's no BIC number #339 Have a way to merge to PDF file without knowing if it is A-1 or A-3 #341 Be able to validate XR 3.0 #347
2.8.015 Aug 2023 03:15 minor feature: - As preparation for domestic B2B e-invoicing potentially becoming mandatory in Germany as of 2026 (background: https://bit.ly/47CRz4G) UBL support for the InvoiceImporter was added. - command line option to switch off file logging, disable-file-logging .
2.7.316 Jun 2023 11:36 minor bugfix: Fixes: - Adds SpecifiedTradeProduct/SellerAssignedID, SellerOrderReferencedDocument/ram:IssuerAssignedID and BuyerOrderReferencedDocument/ram:IssuerAssignedID to the invoiceparser (#328)
2.7.209 Jun 2023 14:14 minor bugfix: Fixes: - #322 support basis quantity in item class, invoice importer - #327 expose validation results and location item (thanks to jpep-in)
2.7.125 May 2023 18:11 minor bugfix: Fixes: #317 (support conversion towards peppol #282) #313 Update CII2UBL library #315 invoiceimporter constructor for InputStream be able to extract data into existing invoice objects
2.7.017 Apr 2023 12:27 minor feature: Mustang has now learned from Quba and - can now convert Factur-X/XRechnung CII to HTML with different output languages (EN, FR, previously only DE) - this now also works with UBL input (invoice, credit memo) - it also revolves codelists, instead of e.g. type "380" you will see "380 (commercial invoice)"
2.6.206 Apr 2023 07:50 minor bugfix: New Features - corrected Linux build: It was always running and embeddable but now Mustang als builds on Linux. Which also fixes it's Github action, which allows automatic tests on pull requests - Better EN16931 validation by upgrading CEN schematron to v1.3.9 - be able to write and validate XRechnung 2.3 (mandatory as of August) Corrections for B2G in France, e.g. - (be able to) define when VAT collection become applicable #309
2.6.113 Feb 2023 19:42 minor bugfix: New Features - allow prepaid amount in invoice class - allow Bank credentials without BIC Corrections for small profiles, e.g. - allow minimum profile without delivery date "Systemic corrections" - return error code not only on validation but also on recursive directory validation - toolchain.xml now only required on `mvn release:release` not already on `mvn package` - upgraded dependencies jackson-databind from 2.13.4.1 to 2.14.2 and xmlunit-assertj from 2.9.0 to 2.9.1
2.6.023 Dec 2022 13:05 minor feature: Mustang 2.6.0 "Joyeux Noël", released December 23rd, 2022, supports trade parties without neccesarily providing a postal address, as allowed e.g. in France. It also improves the "Minimum" profile (also popular in France) by e.g. automatically hiding invoice lines, applicabletradetax, linetotalamount, paymentreference etc. if active. Due date and delivery dates are also no longer mandatory for credit notes. An issue in the deployment has been fixed (#297), Svante provided the hope of server based tests and weclapp-dev thankfully contributed the fix to another null pointer exception. Together with the fact that attempts to use the minimum profile would previously usually also be accompanied by nullpointers, one could almost say that this version comes with 20 less nullpointer exceptions :-)
2.5.723 Dec 2022 13:04 minor bugfix: Mustangproject version 2.5.7, released November 7th, 2022, works again in Java 1.8 and improves the validator (EN16931 checks are now also run on "Basic" profile) as well as the importer: ZF1 invoices can now be imported in the invoiceimporter and some getters were added to the ordinary importer.
2.5.622 Sep 2022 14:19 minor bugfix: Mustangproject version 2.5.7, released November 7th, 2022, works again in Java 1.8 and improves the validator (EN16931 checks are now also run on "Basic" profile) as well as the importer: ZF1 invoices can now be imported in the invoiceimporter and some getters were added to the ordinary importer.
2.5.519 Sep 2022 15:10 minor bugfix: Update of a library for the validation of invoices (ph-schematron).
2.5.401 Sep 2022 10:18 minor bugfix: Allow to simultaneously specify IDs and global IDs and improvements of the Invoiceimporter.
2.5.315 Aug 2022 07:51 minor bugfix: Support for global IDs on products and trade parties.
2.5.209 Jul 2022 13:32 minor bugfix: Support to also validate XRechnung 2.2.
2.5.112 May 2022 13:11 minor bugfix: Support for XRechnung 2.2 and experimental support for despatch advices (1lieferschein and CIDA).
2.5.007 Apr 2022 15:56 major feature: Mustang 2.5.0 adds support for Factur-X 1.0.6.0/ZUGFeRD 2.2, fixing various issues e.g. in the validation of electronic invoices. Additionally, it adds support for the german railway industry (issue #253) and improves french B2G invoices vis á vis Chorus Pro, allowing to specify legalorganisation ID and scheme ID.
2.4.013 Jan 2022 11:30 major feature: With version 2.4.0, Mustang now also supports Order-X. So far, Mustangproject could read, write and validate XRechnung(CII) and Factur-X/ZUGFeRD invoices as well as validate Order-X (https://www.mustangproject.org/order-x/) files. Now it can also read and write those orders. If ERP vendors use the Mustang library to create electronic orders, they can now also use it to compare invoices to their respective referenced orders: if the order has already been pre-processed and the fulfillment of the services has been registered, the arrival of a matching invoice referring to the order can now automatically trigger automatic payment and booking. Additionally some minor issues (https://raw.githubusercontent.com/ZUGFeRD/mustangproject/master/History.md) have been fixed and the XRechnung has been updated to version 2.1.1 required for german B2G invoices as of February 1st, 2022.
2.3.321 Dec 2021 16:24 minor feature: - updated logback from 1.2.3 to 1.2.9 https://github.com/ZUGFeRD/mustangproject/security/dependabot/validator/pom.xml/ch.qos.logback:logback-core/open: - Neither 2021-12-13 nor 2021-12-20 of https://github.com/mergebase/log4j-detector complained so far but Github's Dependabot recommended a update
2.3.216 Dec 2021 13:20 minor feature: Apart from the fact that the invoice class can now be persisted e.g. using Jackson, whitespace removal has been reconfigured to leave newlines in place, which may be required for XRechnung's cash discount.
2.3.125 Oct 2021 17:53 minor feature: New features: - Added document type PARTIAL_BILLING and additional fields specifiedProcuringProject #252 - Added possibility to have multiple referenced documents per line item, also in parser - ZugferdInvoideImporter to be able to read XML, not only PDF Fixes: - ignore whitespace around numbers in invoiceimporter - better namespace prefix agnostics in importers
2.3.004 Oct 2021 10:53 minor feature: XRechnung 2.1.1 validation is now possible and a PDF issue (#249) has been fixed
2.2.126 Aug 2021 17:23 minor bugfix: BT-132 can now be written which was the last missing required attribute to write XRechnungen to the Deutsche Bahn AG
2.2.020 May 2021 16:46 minor feature: As of version 2.2 also orders in the Order-X standard can be validated.
2.1.109 Feb 2021 13:35 minor bugfix: Fixes - seller order referenced document - allow recipient contact in XRechnung - remove outdated dependency - allow XRechnung without street - only deploy library and validator to maven central, not core nor cli - a invoice correction should reference the original invoice via invoiceReferencedDocument, not buyerOrderReferencedDocument - upgraded CEN Schematron validation (codes 24) to v1.3.4 - added unit tests for ubl conversion and visualization
2.1.019 Jan 2021 12:53 minor bugfix: Fixes - fixed a charge/allowance rounding error #212 - Corrected intra community supply tax exemption category code - removal of Tradeparty.getZip New features - support CII to UBL conversion
2.0.306 Dec 2020 11:27 minor bugfix: Fixes - #201 correct embedded files in XRechnung - don't write "null" as paymentDescription if no Bank account is specified - generic and unitcode/categorycode improvements (thanks to weclapp-dev) PR #207 New features - support credit notes (additionally to corrected invoices) - transaction calculator getGrandTotal now public, allowing to compare XML grant total with own calculations - programmatically switch to XRechnung 2.0 if invoked after 2021-01-01
2.0.226 Nov 2020 09:00 minor bugfix: Corrections: - A correction RE file attachments in XRechnung (#197) - another category code correction New features: - reverse charge is now supported at all and - intra community supply is now also supported in the invoice class
2.0.122 Nov 2020 08:45 major bugfix: - corrected VAT calculation on prices with 2 decimals - the guideline ID for XRechnung has been added (#172) - zero-rated goods are now supported as well as delivery period on item level and the specification of account (holder) names - corrected handling of input PDF/A-3 files - corrected profile handling of fax-, tax-numbers
2.0.012 Nov 2020 16:01 major feature: - now includes a validator - availability via Maven Central - apart from implementing interfaces invoices can now also be constructed using fluent setters - support for corrected invoices - support for absolute and relative charges and allowances on document and item level - experimental visualization feature, i.e. convert of XML to HTML
1.7.814 Jun 2020 16:26 major feature: #159 ZF2 gross price corrections
1.7.424 Aug 2019 15:35 minor bugfix: Additional Java 11 support, ZF2 XML entity corrections
1.7.301 Aug 2019 18:12 minor bugfix: Windows build works again, Javadoc completed
1.7.209 Jul 2019 16:14 minor bugfix: Now supporting BuyerReference, SellerContact and Seller legal registration identifier, parsed invoices may now contain alias-like filename structures (different entries in the names dictionary, issue #98)
1.7.128 May 2019 12:54 minor bugfix: Correction of the EN16931 profile name in ZUGFeRD 2
1.7.005 May 2019 12:56 major feature: Now supports ZUGFeRD 2.0 final.
1.6.004 Feb 2019 04:31 major feature: Factur-X support: now exporting "fully valid" EN16931 Factur-X: just set version to 2 and profile to EN16931. Corrected EN 16931 XMP Schema Extension header. Now provides access to XMP metadata via ZUGFeRDImporter getXMP() function. Also closes issues #64 and #69.
1.5.522 Oct 2018 18:07 minor bugfix: Issues #66 Commandline: provide a way to set input parameters and #68 Combine with ZUGFeRD v2: NullPointerException Fixes #63 PDF/A3 conversion not valid.
1.5.430 Aug 2018 14:21 minor bugfix: Fail more gracefully when the extractor runs over an error (issue #62). One can now also use the importer to read UTF-8 XML without byte order marks (by using ZUGFeRDimporter.getUTF8).
1.5.320 Jul 2018 12:59 minor bugfix: Fixed a nullpointerexception the importer raised on some input (issue #60) files and the library available via maven again (#61). It's now also possible to skip parse() and go from zi.extract to e.g. zi.getAmount() in the importer.
1.5.030 Nov 2017 20:05 major feature: Mustangproject is doing it's homework and now supports the latest developments around ZUGFeRD 2.0/"Factur-X" in it's recently published version Mustangproject 1.5. Both ZUGFeRD 2.0 and Mustangproject are therefore on it's way to support the European Standard on e-invoicing EN16931 released by the CEN to facilitate directive 2014/44/EU. Additionally several bugs were fixed and the integrated ZUGFeRD tool has been enhanced. It now e.g. also allows as the migration of ZUGFeRD 1.0 XML to the current ZUGFeRD 2.0 (public review version). For further details please refer to the changelog.
1.4.011 May 2017 14:08 major feature: Now supports ZUGFeRD "extended" profile, PDFBox 2.0 and a all-in-one JAR file including dependencies. Moved repo to github.com/ZUGFeRD/mustangproject
1.3.101 Jun 2016 08:36 minor bugfix: Moved repo to github.com/jstaerk/mustangproject, fixed PDF/A-3 validation issue (#12)
1.3.015 Mar 2016 16:23 minor feature: Bugfixes, source file validation
1.2.015 Oct 2015 13:52 minor feature: Improved ZUGFeRD compliance
1.1.215 Jun 2015 18:00 minor feature: Improved XML and PDF compliance
1.1.131 Mar 2015 17:01 minor feature: Maven repository and the possibility to embed custom XML
1.130 Jul 2014 08:32 minor feature: ZUGFeRD 1.0 support