Update: With the release of the Service Pack 25.002 List & Label now also supports ZUGFeRD Version 2.1, analogous to Version 2.0.
With the help of the ZUGFeRD standard, the electronic exchange of invoices between consumers, public administrations and companies can be greatly simplified, as the invoice data is made available in hybrid form. On the one hand the invoice data is provided as an unchangeable PDF document with the PDF/A-3 standard as a visual component, on the other hand as a structured XML file with the XML invoice data for further technical processing.
The specification for ZUGFeRD 2.0 was officially released for Germany in March 2019 and is based on the French Factur-X 1.0 standard, so that both implementations are technically identical and ensure a uniform standard for invoice exchange at European level.
Compared to the ZUGFeRD 1.0 standard, however, there is a decisive difference with regard to licensing. The committee decided to place the new standard under Apache 2.0 licensing, which could not be reconciled with the previously simplified deployment of List & Label.
Therefore, we decided to outsource the ZUGFeRD 2.0 support into a separate module. Thus, an application with List & Label does not have to be redistributed under the Apache 2.0 license, if no ZUGFeRD 2.0 is used. Of course, the module is available as both a 32- and 64-bit build.
The new modules c[m/x]LL25xl_zugferd2.dll are located in the directory “..\Miscellaneous\Optional Modules Under OSI Licenses\ZUGFeRD\”. There you will also find the Apache 2.0 licensing in the form of the file “license.txt”.
All you have to do is add these two modules (depending on the bitness of the application) to the deployment package of List & Label – which, by the way, can also be easily done with the Redistribution Assistant. Of course, you should read the Apache 2.0 license carefully before redistributing it.
What still needs to be provided by the application itself is the raw data of the invoice in XML format for integration into the PDF document. A PDF export with ZUGFeRD 2.0 could look like this:
// create export configuration ExportConfiguration exportConfiguration = new ExportConfiguration(LlExportTarget.Pdf, "Export.pdf", "invoice.lst"); // define ZUGFeRD 2.0 options LL.ExportOptions.Add(LlExportOption.PdfZUGFeRDVersion, "2.0"); LL.ExportOptions.Add(LlExportOption.PdfZUGFeRDConformanceLevel, "EXTENDED"); LL.ExportOptions.Add(LlExportOption.PdfZUGFeRDXmlPath, "ZUGFeRD-invoice.xml"); // start export LL.Export(exportConfiguration);
What is new here is the export option LlExportOption.PdfZUGFeRDVersion, with which you can specifically determine the ZUGFeRD version. List & Label can still meet the specification 1.0 and is therefore fully downward compatible. A small excerpt from the documentation:
Value | Meaning |
0 | The specified file ‘zugferd-invoice.xml’ (see also PDF.ZUGFeRDXmlPath) is checked against the ZUGFeRD 1.0 or 2.0 format. Afterwards, the format determined in that way is used. If the format cannot be determined, e.g. because the file ‘zugferd-invoice.xml’ does not yet exist at this time, ZUGFeRD 2.0 is assumed. |
1.0 | ZUGFeRD version 1.0 is forced. |
2.0 | ZUGFeRD version 2.0 is forced. |
Default | 0 |
Daniel has undergone training as a software developer at combit, where he currently leads the Customer Support department as a manager. His responsibilities extend beyond software development to include technical collaborations with business partners. He conducts workshops for developers and serves as a technical advisor to the sales and service team. Outside of work, Daniel is an avid cyclist, frequently seen navigating the trails around Lake Constance and the neighboring Alps on his mountain or road bike. Additionally, he dedicates time to practicing Chinese martial arts, including Wushu Kungfu and Taichi.