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:
|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.|
Daniel trained with combit as a programmer specialized in software development. He is now engaged in software development and fosters business cooperations. He conducts software trainings and supports the sales team as technical advisor. In his spare time he enjoys mountainbiking around Lake Constance and in the Swiss Alps closeby.