ITADN
ZUGFeRD/mustangproject

版本发布 8

2.23.0core-2.23.0
? · 2026-04-24

**Highlights** Apart from their validation we now also support writing subinvoice lines (#1073, thanks kschwank). Plus we merged some France-related pull requests, e.g. the conversion to french PDF (#1083), the configurable BT-23 business process ID for CII export (#1046) and of course validation which now also takes into account the first [AFNOR XP12-012](https://www.boutique.afnor.org/en-gb/standard/xp-z12012/invoice-message-formats-profiles-and-lifecycle-statuses-forming-the-minimum/fa300082/466440) schematron (#1089, thanks @meparis). **Event** A propos France: we cordially invite potential contributors on the day following the [JFE](https://jfe.fnfe-mpe.org/) , May 7th 2026, 16:00-17:00 CET, to an free online event to coordinate contributions regading the coming e-invoice obligation in France as of September: [Event details and application](https://forms.gle/Evq2uet7BxCQXnRK9) . **Changelog** On Mustang 2.23.0, the following fixes were applied - #993 Cash discount not parsed - #1029 Added a breaking change notice regarding the removal of hardcoded values in #729 - #1044 Correct version of org.apache.pdfbox:fontbox from 3.0.3 to 3.0.6. - #1049 Prevent exceptions in validation - #1038 Header allowances are aggregated incorrectly for non-XRechnung profiles - #1052 Remove parsing OriginatorDocumentReference.ID as date - #1055 Correct order of ApplicableTradeTax sub-elements. - #1072 Correct XPath-expressions for GrandTotal and TaxBasisTotalAmount. - #1075 Vulnerability in dependency PDFBox version 3.0.6 - #1076 XMP error during validation based on mustang version 2.22. (XMP Metadata: Could not parse XMP metadata (XML invalid)) - #1084 Fix xml description - #1082 Centralize and secure DocumentBuilder creation. - reduce possible exceptions in metrics action And altogether we are talking of the following new features - #1037 Compress attachments - #1046 Add configurable BT-23 business process ID for CII export - #1050 Add validator information to PDF report (name and version) - #1061 Add ability to mark an Invoice as a test invoice. - #1073 add hierarchical invoice positions in CII XML export for EXTENDED profile - #1083 PDF Visualizations in English and French - #1089 Add France schematron ruleset - added Extended-CTC-FR profile to selection for command line **FYI** I will try to renew my expired GPG key in the next maven central release and @langfr is now co-maintainer: thank you and congratulations. We are still set for Java 11 in this release but for #1067 fixing #1025 (a convert-to-UBL-issue), we will open a Java17 branch (thanks phax!). We're just not yet sure how to call the new version, this minor correction sounds to small for a "Mustangproject 3.0" release.

2.21.0core-2.21.0
? · 2025-12-18

Apart from the support for Factur-X 1.08 / ZUGFeRD 2.4 (#969) and the validation of it's subitem-with-subtotal-validation (#978) this version contains the following ## New features - #984 set default vat exemtion reason text on reverse charge - #983 Be able to easily reference an invoice in a credit memo - have a start of a primitive and incomplete list of human readable unit codes and the following ## Corrections - #952 Add optional Invoicer and Invoicee for Extended profile - #954 Parsing XML documents fails with ZUGFeRD visualizer due to secure processing not being functional - #947 replace fixed version number with new variable from root pom.xml - #979, #985 allow vat percent=null sometimes - #977 Update History.md - #961 / #962 Adding a tax ExemptionReasonCode to Product/TradeTax for the XML generation

2.17.0core-2.17.0
? · 2025-06-11

**Breaking changes** #764 Item allowances not to be multiplied by quantity (there are now product level quantities for that). This may affect invoice totals. **Corrections** - #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 **New features** (apart from #764 allow allowances/charges on item, product and document level, not only on product and document level) - add getCalculation on calculatedInvoice - Transactioncalculator getTaxDetails to include correct percentage, calculated amounts

core-2.16.4
? · 2025-04-22

Mustangproject version 2.16.4, released April 22nd, 2025, features 16 small corrections, two of which may be potentially security sensitive and fixes a small resource leak. There is a known issue ([#764](https://github.com/ZUGFeRD/mustangproject/issues/764)), which may be addressed in 2.17.0, potentially in May, maybe along with an update to support ZF 2.3.3 (i.e. [Codelist version 15](https://ec.europa.eu/digital-building-blocks/sites/display/DIGITAL/Registry+of+supporting+artefacts+to+implement+EN16931)): The question being if absolute, i.e. non-percentual, item based discounts/charges are not to be multiplied by the quantity, as they currently are in Mustang. If that is true I will need to correct not only the calculation, but also some tests, and you may see different invoice amounts in some cases. ### New features in 2.16.4 * #818 need to be able to specify filenames as exceptions from files validated recursively with validateExpectValid * #741 read position accountingReference * #809 invoice reader to support multiple charges per item * #812 fileattachment relation should have a default ### Fixes * #774 disable XML parsing entities (potentially security sensitive, potentially partially revoked after merge due to failing tests) * #778 Added XEE Protection features (potentially security sensitive, potentially partially revoked after merge due to failing tests) * #742/#753 “Adresszusatz 1” (LineTwo) showing up as “Postfach” in HTML visualization * #614, #770 Exemption reason text should not be reused * #728 Invoice setCorrection causes duplicate XML output * #776 Fix potential resource leaks in core file processing classes * #782/771 prevent NullPointerException on Product Description * #772 TradeParty Name should be optional for ShipToTradeParty * #775 not deleted tmp files * #802 fix: capital letter for ID in listID ### Refactorings * #759 Use the dedicated class instead of var type * #722 extend ValidationLogVisualizer to not use only file system

2.16.3core-2.16.3
? · 2025-03-03

This release 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

2.16.2core-2.16.2
? · 2025-02-05

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.1core-2.16.1
? · 2025-01-21

Mustang 2.16.1 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

2.16.0core-2.16.0
? · 2025-01-10

This version adds support to parse charges/allowances (#651), allows allow allowance and charge reasoncodes also on document level (#657), allows multiple invoice referenced documents (#631) and supports a PDF validation report output (using `--log-as-pdf`, it's currently not yet documented anywhere). Further fixes include - allow to add includedNotes with type - #356 print version of xml report - #645 Fix visualization of validation logs - #639 Fix invoice calculation if rounding amount is present - #633 Bump ch.qos.logback:logback-core from 1.2.13 to 1.5.13 - #626 Fix minor java issues - #622 Fix FOP config - #629 Visualizing xml - #630 Fix issue #296 (Validation-Error: Ungültiger Content wurde beginnend mit Element 'ram:DueDateDateTime' ) (duplicate of #565) - #658 prevent nullpointerexception - #648 Fix log visualization - #652 Discount VAT is not subtracted from duepayable - #620 Fix logback config - #653 ZF2EdgeTest: methods 'getPaymentMeansCode()' & 'getPaymentMeansInformation()' does not override super methods - #654 remove wrong test methods