ZUGFeRD-LogoWith the next release, conzept 16 supports the latest version – namely 2.1 – of the ZUGFeRD specification. ZUGFeRD (Zentraler User Guide des Forums elektronische Rechnung Deutschland) defines standard formats for electronic invoices.

A ZUGFeRD-compliant electronic invoice corresponds to an invoice in PDF/A-3 format with XML attachment and XMP metadata. The actual PDF describes a visual representation of the invoice, i.e. one that can be used by humans. The XML attachment, on the other hand, describes a standardized representation of the invoice, i.e. one that can be used by machines. Various profiles can be selected that define the level of detail of the information contained.

Bereits seit der Version 5.8.06 bietet CONZEPT 16 die Möglichkeit elektronische Rechnungen nach der ZUGFeRD-Spezifikation zu erstellen, wie im Artikel ZUGFeRD mit CONZEPT 16 erläutert.

While in Germany the FeRD (Forum elektronische Rechnung Deutschland) maintains the ZUGFeRD specification for electronic invoices for Germany, in France the FNFE-MPE (Forum National de la Facture Electronique et des Marchés Publics Electroniques) is responsible for maintaining the Factur-X specification for electronic invoices in France.

With the publication of ZUGFeRD 2.1 and Factur-X 1.0 on March 24, 2020, ZUGFeRD was aligned with Factur-X so that ZUGFeRD 2.1 is technically identical to Factur-X 1.0.

This means that the following versions of ZUGFeRD are available:

  • ZUGFeRD 1.0: Details and info package
  • ZUGFeRD 2.0.1: Details and info package
  • ZUGFeRD 2.1 (alias Factur-X 1.0): Details and info package

From a technical standpoint, the versions differ in the following features:

  • Name of the XML attachment The file name of the XML attachment varies depending on the version:
    • ZUGFeRD 1.0: ZUGFeRD-invoice.xml
    • ZUGFeRD 2.0: zugferd-invoice.xml
    • ZUGFeRD 2.1: factur-x.xml
  • Structure of the XML attachment Some elements of the XML structure have different names or positions, have been added or removed or are only permitted in a more detailed profile.
  • XMP metadata Among other things, the metadata defines the version and profile of the selected specification.

To ensure the correctness of the XML structure, it is advisable to take a look at the respective specification. The individual elements and any dependencies are described there in detail. The info packages also contain XML schemas that can be used to validate the XML data. However, it should be noted that not every error can be detected! However, in order to check conformity in its entirety, various tools are available that check not only the XML attachment but also the entire PDF document for conformity with the specification:

  • ZUGFeRD Validation.Portal and ZF/FX Validation These online portals each provide a service that can be used to validate PDF documents after registration. However, the former only supports the version 1.0 specification.
  • ZUGFeRD validator: This Java program can be used without registration to validate PDF documents of all ZUGFeRD versions on any Java-enabled computer.

When inserting the XML attachment to the PDF document in conzept 16, pay attention to the name belonging to the ZUGFeRD version:

// PDF according to ZUGFeRD 1.0
tPDF->PdfAttachFile('ZUGFeRD-invoice.xml', _PdfAttachAssociateZUGFeRD);
// PDF according to ZUGFeRD ZUGFeRD 2.0
tPDF->PdfAttachFile('zugferd-invoice.xml', _PdfAttachAssociateZUGFeRD);
// PDF according to ZUGFeRD ZUGFeRD 2.1
tPDF->PdfAttachFile('factur-x.xml', _PdfAttachAssociateZUGFeRD);

conzept 16 automatically embeds the XMP metadata matching the selected specification when the PDF document is saved. With the upcoming conzept 16 version, it will also be possible to determine the version of the specification in addition to the profile:

// Create PDF according to ZUGFeRD 1.0 with Basic profile
tPDF->PdfClose('Rechnung.pdf', _PdfModePdfZUGFeRD10 | _PdfModePdfZUGFeRDBasic);
// PDF nach ZUGFeRD 2.0 mit Profil Comfort erzeugen
tPDF->PdfClose('Rechnung.pdf', _PdfModePdfZUGFeRD20 | _PdfModePdfZUGFeRDComfort);
// PDF nach ZUGFeRD 2.1 mit Profil Extended erzeugen
tPDF->PdfClose('Rechnung.pdf', _PdfModePdfZUGFeRD21 | _PdfModePdfZUGFeRDExtended);

The CodeLibrary already contains an example called ZUGFeRD_Basic, which we will update to ZUGFeRD 2.1 at the same time as the release.

Do you already use electronic invoices in your company? Do you use ZUGFeRD or another solution? Let us know what experiences you have had. If you are interested, we will be happy to provide you with a pre-release version with which you can test the extensions. Simply contact our Support.

Leave a Reply

Your email address will not be published. Required fields are marked *

Leave the field below empty!

Get your Trial Version now!

Test yeet free of charge

Deine Trial Version - jetzt anfordern!

Teste yeet - unverbindlich und kostenfrei



Subscribe to our newsletter

WordPress Cookie Notice by Real Cookie Banner