Factur-X / ZUGFeRD
Package: BILLING
1. General
ZUGFeRD is a cross-industry data format for the electronic exchange of invoice data, developed by the Forum for Electronic Invoicing Germany (FeRD) - with the support of the Federal Ministry for Economic Affairs and Energy. The ZUGFeRD data format is based on Directive 2014/55/EU of 16 April 2014 on electronic invoicing in public procurement and on the EN16931 standard published on 28 June 2017.
As a hybrid data format, ZUGFeRD integrates structured invoice data in XML format within a PDF document (PDF/A-3). This means that invoices are generally sent as a PDF document, which represents the visual component of the invoice. At the same time, a content-identical duplicate of the same invoice (XML) is sent along inside the PDF.
The X-Rechnung is a data exchange standard for electronic invoices, developed and provided by the "Coordination Office for IT Standards" (KoSIT). The X-Rechnung is a purely structured data format, i.e., the contents of an invoice are specified and can be automatically processed electronically.
A PDF file in ZUGFeRD format opened with the program Adobe Acrobat Reader can be recognised by the "paperclip" icon in the displayed PDF file. For further information, see the article in the DATEV Help Center.
Before using the ZUGFeRD integration, the configuration of the so-called "nodes" in the field assignment must be carried out.
The respective type-specific codes can be found in code tables, which are available in the file EN16931_code_lists_value… (EN16931 code lists values v16 - used from 2025-11-15).
It is advantageous to download the code tables before configuring the integration, in order to be able to carry out a swift configuration.
For the configuration points described below where these code tables are required, the code tables are referred to again.
In addition to the code table "EN16931 code lists values", an overview of the "BT fields - OZG-RE" is also available on the website of the Procurement Office of the BMI (Federal Ministry of the Interior and Community): Overview of the BT fields - OZG-RE.
The visual representation as well as the data representation of a hybrid invoice constitute identical duplicates of the same invoice within the meaning of Section 14 (4) UStG (Section 14c 1. UStAE). Ensuring this is the responsibility of the user. Currently supported versions: Zugferd/Factur-X - 2.2/1.0.06 | X-Rechnung - 2.3.1
2. Configuration
Essential for using the integration is - in addition to configuring the so-called "nodes" (field assignment) - the complete filling in of the company information.
2.1. Selecting the invoice standard
After opening the settings item "ZUGFeRD" in the company information, the settings are divided into three tabs:
- ZUGFeRD → Configuration of the ZUGFeRD invoice standard
- X-Rechnung → Configuration of the X-Rechnung invoice standard
- Codes & Units → Configuration of the tax codes and units of measure
In the tabs ZUGFeRD and X-Rechnung, the configuration of the respective invoice standard is carried out.
In the tab Codes & Units, the configuration of the tax codes, invoice types, units of measure and payment methods takes place.
2.2. Field assignments
2.2.1. General
Nodes that are marked as mandatory fields (*) must be assigned!
When assigning mandatory fields for ZugFerd/X-Rechnung invoices, the value "Deactivate node" is not available!
Created user fields with the matching field types in the respective modules are also available as a selection option.
Correct configuration of the field assignments is the responsibility of the user. brainX GmbH accepts no liability for misconfigurations and their effects.
2.2.2. Special nodes
For certain nodes, any number of values can be added or removed. After clicking the button "Add node", a new assignment row is added, which can be used for a further assignment.
To remove an assignment, either the action icon "Delete" (icon "bin") can be clicked, or the field assignment can be set by selecting "--Node deactivated--" in the picklist.
Field assignment - special nodes
For these nodes there is also an additional input field for the code/fixed value of the node. Basic additional information is available on mouseover of the information icons (icon "exclamation mark").
The respective type-specific codes can be found in code tables, which are available in the file EN16931_code_lists_value… (EN16931 code lists values v16 - used from 2025-11-15).
2.3. ZUGFeRD
After opening the settings item "ZUGFeRD - ZUGFeRD tab" in the company information, it appears as follows:
ZUGFeRD - ZUGFeRD tab
In the "ZUGFeRD" tab, the configuration is divided into the following blocks:
- General
- ZUGFeRD functions (switch) → Activation of the ZUGFeRD functions
- Export as (picklist) → Determines which user account the company information for the export is drawn from. Note: For the automation "Send email", the tenant of the user "Admin" is used by default. If "person responsible for the record" is selected instead, their tenant is used.
- Cancel process on error (switch) → If this switch is active, the export is cancelled in the event of an error (missing XML part). In addition, the automation action "Send email" is prevented for the affected record, provided it would generate and send a ZUGFeRD invoice.
- Warnings in log file (switch) → If only ZUGFeRD/X-Rechnung warnings are generated during an export, this option determines whether the user should receive a notification or whether the warnings should be written to a log file.
- Invoices → Configuration of the XML nodes for the Invoices module
- Cancellations → Configuration of the XML nodes for the Cancellations module
- Credits → Configuration of the XML nodes for the Credits module
- Incoming Invoices → Configuration of the XML nodes for the Incoming Invoices module
2.4. X-Rechnung
After opening the settings item "ZUGFeRD - X-Rechnung tab" in the company information, it appears as follows:
ZUGFeRD - X-Rechnung tab
In the "X-Rechnung" tab, the configuration is divided into the following blocks:
- General
- X-Rechnung functions (switch) → Activation of the X-Rechnung functions
- Export as (picklist) → Determines which user account the company information for the export is drawn from. Note: For the automation "Send email", the tenant of the user "Admin" is used by default. If "person responsible for the record" is selected instead, their tenant is used.
- Invoices → Configuration of the XML nodes for the Invoices module
- Cancellations → Configuration of the XML nodes for the Cancellations module
- Credits → Configuration of the XML nodes for the Credits module
- Incoming Invoices → Configuration of the XML nodes for the Incoming Invoices module
2.5. Codes & Units
After opening the settings item "ZUGFeRD - Codes & Units tab" in the company information, it appears as follows:
ZUGFeRD - Codes & Units tab
In the "Codes & Units" tab, the configuration is divided into the following blocks:
- Tax code → Configuration of the taxes and tax codes
- Invoice type → Configuration of the codes per invoice type
- Units of measure → Configuration of the unit-specific codes
- Payment method → Configuration of the codes for the values of the field "Type of payment"
2.5.1. Tax code
This area is used to configure the taxes present in brainX with their matching tax codes of the ZUGFeRD standard according to UNTDID 5305.
The codes defined here specify which VAT category is used for the taxes used in the XML.
The available taxes dynamically adjust to the taxes from the settings item Currencies & Taxes - Tax rates.
If a new tax is added in the settings item Currencies & Taxes - Tax rates, a corresponding configuration must be carried out in the settings item "Tax code"!
Codes & Units - Tax code
The following fields and picklist values are available in the "Tax code" area:
- VAT → selectable tax codes according to UNTDID 5305
- VAT Reverse Charge
- Tax-exempt
- Free export item, tax not charged
- VAT exemption for intra-community supplies of goods and services in the EEA
- Canary Islands general indirect tax
- Tax on production, services and imports in Ceuta and Melilla
- Standard rate (pre-selected by default)
- Zero-rated goods
- VAT reason for tax exemption → If a tax rate of 0% is present in the tax settings, one of the picklist values available by default can be selected in an invoice in the "ZUGFeRD/X-Rechnung" block in the field "Reason for tax exemption" (picklist). The value from the field "VAT reason for tax exemption" (picklist) is automatically transmitted when exporting as a ZUGFeRD document, if the tax type of the invoice is "individual" and the VAT is 0%.
- No VAT shown
- Reverse charge
- Intra-community supply
- Export outside the EU
- Not subject to VAT
- VAT reduced → selectable tax codes according to UNTDID 5305
- VAT Reverse Charge
- Tax-exempt
- Free export item, tax not charged
- VAT exemption for intra-community supplies of goods and services in the EEA
- Canary Islands general indirect tax
- Tax on production, services and imports in Ceuta and Melilla
- Standard rate (pre-selected by default)
- Zero-rated goods
- VAT reduced reason for tax exemption → Picklist for the reason for tax exemption with reduced VAT.
- No VAT shown
- Reverse charge
- Intra-community supply
- Export outside the EU
- Not subject to VAT
2.5.2. Invoice type
This area is used to configure the company-specific codes for the type of invoice according to the UNTDID 1001 standard for the different invoice types available in brainX.
The configuration is carried out separately for each export module (Invoices, Cancellations, Credits, Incoming Invoices) – different invoice type codes can thus be stored for each module.
Depending on the type of invoice types sent by the company, the appropriate code must be defined here.
Codes & Units - Invoice type
The code tables for the type of invoice according to UNTDID 1001 are available in the file EN16931_code_lists_value… (EN16931 code lists values v16 - used from 2025-11-15).
2.5.3. Units of measure
In this area, the unit-specific codes are configured according to the UN/ECE Recommendation N°20 and UN/ECE Recommendation N°21 defined in the ZUGFeRD standard.
Codes & Units - Units of measure
The code tables for the units of measure are available in the file EN16931_code_lists_value… (EN16931 code lists values v16 - used from 2025-11-15).
The available units are based on the picklists for quantities/units present in the Products and Services modules. These are determined dynamically and can be reduced or extended.
If, after the initial configuration, additional picklist values for units of measure are added in the module administration, these must be linked to the corresponding codes in the ZUGFeRD settings. Otherwise, the correct functioning of the ZUGFeRD integration is not guaranteed.
2.5.4. Payment method
In this area, the values of the "Type of payment" picklist are linked to the codes defined in the UNTDID 4461 standard. The picklist values are adjusted dynamically and can be created or deleted in the module administration.
Codes & Units - Payment method
The code tables for the payment methods are available in the file EN16931_code_lists_value… (EN16931 code lists values v16 - used from 2025-11-15).
If, after the initial configuration, additional picklist values for units of measure are added in the module administration, these must be linked to the corresponding codes in the ZUGFeRD settings. Otherwise, the correct functioning of the ZUGFeRD integration is not guaranteed.
3. Usage
3.1. Export
An export is only possible for the modules Invoices, Cancellations and Credits.
3.1.1. Exporting a record
In order to have the option of carrying out an export within a record, the export for the invoice standard must have been activated in the ZUGFeRD settings.
See also the section Field assignments.
3.1.1.1. ZUGFeRD Export
The export as a ZUGFeRD document requires a corresponding PDF template.
A standard template for the export and the default assignment is provided in the PDF template module upon activation of the "ZUGFeRD" integration. This standard template can be individualised accordingly if required.
3.1.1.1.1. Creating/modifying a PDF template
The visual representation as well as the data representation of a hybrid invoice constitute identical duplicates of the same invoice within the meaning of Section 14 (4) UStG (Section 14c 1. UStAE). Ensuring this is the responsibility of the user.
To enable this, the invoice-relevant placeholders in the PDF template must match the settings of the field assignments.
A validation of the placeholders used does not(!) take place when the template is saved. However, a basic check of the placeholders, their contents and the completeness of the mandatory placeholders does take place when a document is exported. This check serves to determine whether a ZUGFeRD document could be created correctly and outputs corresponding notification messages.
It is not checked whether the content inserted at the placeholders corresponds to a correct invoice. This is the responsibility of the user. brainX GmbH accepts no liability for an incorrectly created PDF template!
Mandatory placeholders, which must at least be present for a successful export, are listed in the field assignment (see table below) and marked with an asterisk (*).
ZUGFeRD tab - Mandatory nodes
| XML node | Placeholder module | Placeholder field name |
|---|---|---|
| Invoice item* | Main module - item group | Item group block start |
| Invoice item* | Main module - item group | Item group block end |
| Identifier of the invoice item* | Main module - item group field | Item group position |
| Item name* | Main module - item group field | Item group product name |
| Item number of the seller | Main module - item group field | Products product number / Service service no. |
| Net price of the item* | Main module - item group field | Item group unit price after discount |
| Gross price of the item | Main module - item group field | Item group list price |
| Invoiced quantity* | Main module - item group field | Item group quantity |
| Code of the unit of measure of the invoiced quantity* | Main module - item group field | Products unit of measure / Service unit |
| VAT information at the invoice item level* | Main module - item group field | Item group tax rate |
| Net amount of the invoice item* | Main module - item group field | Item group total after discount |
| Buyer's booking reference for the invoice item | Main module - item group field | Item group cost centre |
| Name of the seller* | Company information | Organization |
| Country code of the seller address* | Company information | Country code |
| Postal code of the seller address | Company information | Postal code |
| City of the seller address | Company information | City |
| Line 1 of the seller address | Company information | Address |
| Contact point of the seller | Company information | Managing director |
| Tax number of the seller | Company information | VAT ID |
| Identifier of the payment account* (certain payment methods) | Company information | IBAN |
| Identifier of the payment service provider* | Company information | BIC |
| VAT breakdown* | Main module field | VAT values incl. currency |
| Charges and allowances at the document level | Main module - advance payment invoices | Advance payment invoices block start |
| Charges and allowances at the document level | Main module - advance payment invoices | Advance payment invoices block end |
| Amount of the charge or allowance at the document level* (if charges and allowances at the document level are present) | Main module - advance payment invoices field | Net |
| Code for the VAT category of the charge or allowance at the document level* (if charges and allowances at the document level are present) | Main module - advance payment invoices field | VAT |
Mandatory fields are marked with *. Conditions for special cases where a node is a mandatory field follow thereafter.
To enable a PDF template for the ZUGFeRD export, the checkbox "ZUGFeRD PDF template" must be set in the template.
3.1.1.1.2. Export ZUGFeRD document
The creation of a ZUGFeRD document for a single record is coupled to the normal PDF export.
After activating the "ZUGFeRD" integration, the switch "Export as ZUGFeRD document" is accordingly available in the popup of the export options during the PDF export.
Popup PDF Export - Export as ZUGFeRD document
When the switch is activated, the options for an export "without header", "without footer" and "Overwritable template" are deactivated, as these are not compatible with a ZUGFeRD export. The option "Use as booking document" remains possible.
The selection of the PDF templates to be used is also reduced to the PDF templates marked as ZUGFeRD templates. The restrictions of the export options as a booking document also apply here.
Once the PDF export has been carried out and the ZUGFeRD document has been successfully created, a content duplicate of the same invoice (XML) is present within the PDF document. This XML portion contains the same invoice-relevant contents - provided the template is correct - as the PDF portion.
In the event of problems with the creation of the ZUGFeRD document using the selected template from the record, the user is informed via notification.
Should the creation of the XML portion fail, the PDF portion is nevertheless output.
If an export is to be cancelled in the event of an error, this can be configured in the ZUGFeRD settings (field (switch) "Cancel process on error", see section ZUGFeRD settings).
3.1.1.2. X-Rechnung Export
In contrast to the ZUGFeRD export, the X-Rechnung export does not require a special template, as only an XML file is created there.
Decisive for the content of the XML file are the field assignments in the settings of the "ZUGFeRD" integration, as well as the content of the record and the other data sources (company information or reference modules).
XML nodes that are mandatory are marked with an asterisk (*).
X-Rechnung tab - Mandatory nodes
3.1.1.2.1. Export X-Rechnung document
After activating the "X-Rechnung" integration, the action "Export as X-Rechnung" is additionally displayed in the detail view of records in the modules Invoices, Cancellations and Credits.
After clicking the action "Export as X-Rechnung", a corresponding popup window opens, just as with the PDF export.
Popup Export X-Rechnung - Export as XML file
In this popup, the name of the file to be exported can be defined. In addition, it is possible to specify whether the created file should be saved and referenced as a booking document. As with the PDF exports, the actions (for the respective type of export) are restricted upon corresponding selection, as referencing must be possible.
The following export options are generally available for the X-Rechnung export:
- Button "Export"
- Standard → normal export (only available if the switch "Use as booking document" is not active)
- Export with reference → additionally references the file in addition to the download
- Export as reference → references the file without download
- Button "Email"
- Standard → the export file is attached to an email (only available if the switch "Use as booking document" is not active)
- Email with reference → the export file is sent by email and saved as a reference to the record
In addition to the export options mentioned, it is also possible to send an X-Rechnung using the action Send email in an automation.
In the action Send email, the option "Link X-Rechnung" merely needs to be selected using the action icon "Add attachment", in order to send an email with an X-Rechnung as an attachment to the email.
In the event of problems with the creation of the XML file, the user is informed via notification.
In contrast to the ZUGFeRD export (PDF export), no file is created in the event of an error with the X-Rechnung export.
3.1.2. Exporting multiple records
In the list view in the modules Invoices, Cancellations and Credits, the new action in the list view of the modules for the export is displayed upon activation of the export and the selection of at least one invoice standard in the settings.
The action "Export ZUGFeRD/X-Rechnung" requires at least one selected record for the export. After the selection and clicking the action, the corresponding popup window opens.
Popup Export ZUGFeRD/X-Rechnung
In this popup there is the option to switch between the activated invoice standards. For the ZUGFeRD standard, a PDF template can additionally be selected via a picklist.
For both export formats there is the option of export with and without reference. In both cases, a ZIP archive with the successful exports is compiled and offered for download.
3.2. Import
Data in the standardised XML format can be imported via the Incoming Invoices module.
With the activation of the "ZUGFeRD" integration, the new action "Import ZUGFeRD/X-Rechnung" is displayed in the list view of the Incoming Invoices module. This action is used to import ZUGFeRD/X-Rechnung files.
After clicking the action "Import ZUGFeRD/X-Rechnung", a popup with an upload field opens.
Popup Import ZUGFeRD/X-Rechnung
Using the uploader, one or more documents (PDF file with XML attachment or XML files) of both standards can be selected and uploaded by clicking the button "Import".
For each successfully read file, a record is created in the Incoming Invoices module. The titles of the imported records in the Incoming Invoices module correspond to the title of the original file.
In the event of problems with the import, the user is informed via notification.
Users also receive a message if the amount read from the XML file does not match the value determined via the internal item calculation. This can be caused, for example, by rounding errors or incorrect data. Here too, the user receives a corresponding notification, so that the data can be checked for correctness and, if necessary, further steps (e.g. correction of the XML file) can be initiated.
4. Practical examples
1 - Sending invoices as a ZUGFeRD document to business customers
Initial situation: A company wants to send invoices to business customers as a hybrid PDF that is both human-readable and machine-processable.
Procedure: The ZUGFeRD integration is activated and the field assignments are configured. When exporting an invoice as a PDF, the switch Export as ZUGFeRD document is activated and a PDF template marked as a ZUGFeRD template is selected. In addition to the readable invoice, the generated PDF automatically contains an embedded XML part with identical invoice data.
Result: The customer receives a standard-compliant ZUGFeRD invoice that can be both printed out and automatically read into their accounting software - without additional manual effort.
2 - Transmitting X-Rechnungen to public contracting authorities
Initial situation: A company provides services for public contracting authorities and is legally obliged to submit invoices as an X-Rechnung in XML format.
Procedure: The X-Rechnung integration is activated and the field assignments are fully configured. In the detail view of the respective invoice, the action Export as X-Rechnung is carried out. The generated XML file can be transmitted directly by email or via the contracting authority's corresponding input portal. Alternatively, the sending can be fully automated via an automation with the action Send email.
Result: The invoice fulfils the legal requirements for electronic invoicing to public contracting authorities and is transmitted directly from brainX without manual conversion.
3 - Automatically importing incoming invoices from vendors
Initial situation: A company receives incoming invoices from vendors in ZUGFeRD or X-Rechnung format and wants to transfer these into brainX without manual data entry.
Procedure: In the list view of the Incoming Invoices module, the action Import ZUGFeRD/X-Rechnung is called up. The received PDF or XML files are uploaded. For each successfully read file, a record is automatically created in the Incoming Invoices module.
Result: Incoming invoices are captured in brainX with just a few clicks - without manual entry of the invoice data. Discrepancies between the XML amount and the internal item calculation are automatically reported via notification.
4 - Batch export of multiple invoices as ZUGFeRD/X-Rechnung
Initial situation: A company wants to export and archive several invoices in bulk at the end of the month as standard-compliant electronic invoices.
Procedure: In the list view of the Invoices module, all desired records are selected. Via the action Export ZUGFeRD/X-Rechnung, the desired standard and the PDF template are selected. brainX creates a ZIP archive with all successful exports, which is made available for download.
Result: All invoices of the month are available as standard-compliant electronic invoices in a ZIP archive - ready for archiving or forwarding to the tax advisor.
5. Frequently asked questions
What is the difference between ZUGFeRD and X-Rechnung?
ZUGFeRD is a hybrid format - the invoice is sent as a PDF with embedded XML. It is thus both human-readable and machine-processable. The X-Rechnung, on the other hand, is a purely structured XML data format without a PDF portion. It is designed exclusively for automatic electronic processing and is prescribed in particular for invoicing to public contracting authorities.
Does the X-Rechnung export require a special PDF template?
No, the X-Rechnung export produces only an XML file and therefore does not require a PDF template. For the ZUGFeRD export, on the other hand, a PDF template marked as a ZUGFeRD template is mandatory, as the document contains a readable PDF portion.
What happens if the XML part fails during the ZUGFeRD export?
If the creation of the XML portion fails, the PDF portion is nevertheless output by default. If the export is to be completely cancelled in the event of an error - e.g. to ensure that no incomplete document is sent - this can be configured in the ZUGFeRD settings via the switch Cancel process on error.
What prerequisites must be fulfilled before first use?
Before first use, the field assignments (nodes) for the respective invoice standard must be configured. In addition, the company information must be filled in completely. In the Codes & Units tab, tax codes, invoice types, units of measure and payment methods must be configured. The required codes are available in the code table EN16931 code lists values.
Is there anything to consider after adding new units of measure or payment methods?
Yes, if new picklist values for units of measure or payment methods are added in the module administration after the initial configuration, these must be linked to the corresponding codes in the ZUGFeRD settings under Codes & Units. Otherwise, the correct functioning of the integration is not guaranteed.
For which modules is the ZUGFeRD/X-Rechnung export available?
The export is only possible for the modules Invoices, Cancellations and Credits. The Incoming Invoices module supports the import of ZUGFeRD and X-Rechnung files, but not the export.