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, an identical duplicate of the same invoice (XML) is sent along within 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 processed automatically and electronically.
A PDF file in ZUGFeRD format opened with the program Adobe Acrobat Reader can be identified by the "paperclip" icon in the displayed PDF file. For more information, see the article in the DATEV Help Center.
Before using the ZUGFeRD integration, it is mandatory to configure the so-called "nodes" in the field mapping.
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 the configuration quickly.
At the configuration points described below where these code tables are required, the code tables will be 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 and 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 mapping) - the complete filling in of the company information.
2.1. Selecting the invoice standard
After opening the "ZUGFeRD" settings item 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 ZUGFeRD and X-Rechnung tabs, the configuration of the respective invoice standard is carried out.
In the Codes & Units tab, the tax codes, invoice types, units of measure and payment methods are configured.
2.2. Field mappings
2.2.1. General
Nodes that are marked as mandatory fields (*) must be mapped!
When mapping mandatory fields for ZugFerd/X-Rechnung invoices, the value "Deactivate node" is not available!
Created user fields with the appropriate field types in the respective modules are also available as a selection option.
Correct configuration of the field mappings is the responsibility of the user. brainX GmbH assumes no liability for misconfigurations and their consequences.
2.2.2. Special nodes
For certain nodes, any number of values can be added or removed. After clicking the "Add node" button, a new assignment row is added, which can be used for a further assignment.
To remove an assignment, either the "Delete" action icon (the "rubbish bin" icon) can be clicked, or the field assignment can be set to "--Node deactivated--" in the picklist.
Field mapping - special nodes
For these nodes there is an additional input field for the code/fixed value of the node. Basic additional information is available on mouseover of the information icons (the "exclamation mark" icon).
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 "ZUGFeRD - ZUGFeRD tab" settings item 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 (toggle) → Activation of the ZUGFeRD functions
- Export as (picklist) → Determines which user account the company information for the export is drawn from. Note: With the "Send email" automation, the client of the "Admin" user is used by default. If "record owner" is selected instead, their client is used.
- Abort process on error (toggle) → If this toggle is active, the export is aborted in the event of an error (missing XML part). In addition, the "Send email" automation action is suppressed for the affected record if it would generate and send a ZUGFeRD invoice.
- Warnings in log file (toggle) → 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 "ZUGFeRD - X-Rechnung tab" settings item 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 (toggle) → Activation of the X-Rechnung functions
- Export as (picklist) → Determines which user account the company information for the export is drawn from. Note: With the "Send email" automation, the client of the "Admin" user is used by default. If "record owner" is selected instead, their client 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 "ZUGFeRD - Codes & Units tab" settings item 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 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 "Payment method" field
2.5.1. Tax code
This area is used to configure the taxes present in brainX with their appropriate tax codes of the ZUGFeRD standard according to UNTDID 5305.
The codes defined here specify which VAT category is used for the taxes applied in the XML.
The available taxes dynamically adapt to the taxes from the Currencies & Taxes - Tax rates settings item.
When a new tax is added in the Currencies & Taxes - Tax rates settings item, a corresponding configuration must be carried out in the "Tax code" settings item!
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
- Exempt from tax
- Free export item, tax not charged
- VAT exemption for intra-community supply of goods and services in the EEA
- Canary Islands general indirect tax
- Tax on production, services and imports in Ceuta and Melilla
- Standard rate (preselected 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 "Reason for tax exemption" field (picklist). The value from the "VAT reason for tax exemption" field (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 stated
- 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
- Exempt from tax
- Free export item, tax not charged
- VAT exemption for intra-community supply of goods and services in the EEA
- Canary Islands general indirect tax
- Tax on production, services and imports in Ceuta and Melilla
- Standard rate (preselected by default)
- Zero rated goods
- VAT reduced reason for tax exemption → Picklist for the reason for tax exemption in the case of reduced VAT
- No VAT stated
- 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 per export module (Invoices, Cancellations, Credits, Incoming Invoices) – different invoice type codes can therefore 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 further picklist values for units of measure are added in module management after the initial configuration, they must be linked with 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 "Payment method" picklist are linked with the codes defined in the UNTDID 4461 standard. The picklist values are adjusted dynamically and can be created or deleted in module management.
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 further picklist values for units of measure are added in module management after the initial configuration, they must be linked with 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 Invoices, Cancellations and Credits modules.
3.1.1. Exporting a record
In order to be able to carry out an export within a record, the export must have been activated for the invoice standard in the ZUGFeRD settings.
See also the Field mappings section for this.
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 standard assignment is provided in the PDF template module when the "ZUGFeRD" integration is activated. This standard template can be customised accordingly if required.
3.1.1.1.1. Creating/modifying a PDF template
The visual representation and 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 make this possible, the invoice-relevant placeholders in the PDF template must match the settings of the field mappings.
A validation of the placeholders used does not(!) take place when saving the template. A basic check of the placeholders, their contents and the completeness of the mandatory placeholders does, however, take place when a document is exported. This check serves to determine whether a ZUGFeRD document could be created correctly and issues corresponding notes accordingly.
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 assumes no liability for an incorrectly created PDF template!
Mandatory placeholders that must at least be present for a successful export are listed in the field assignment (see the following table) and marked with an asterisk (*).
ZUGFeRD tab - mandatory nodes
| XML node | Placeholder module | Placeholder field name |
|---|---|---|
| Invoice line* | Main module line item group | Line item group block start |
| Invoice line* | Main module line item group | Line item group block end |
| Invoice line identifier* | Main module line item group field | Line item group position |
| Item name* | Main module line item group field | Line item group product name |
| Item seller's identifier | Main module line item group field | Products product number / Service service number |
| Item net price* | Main module line item group field | Line item group unit price after discount |
| Item gross price | Main module line item group field | Line item group list price |
| Invoiced quantity* | Main module line item group field | Line item group quantity |
| Code of the unit of measure of the invoiced quantity* | Main module line item group field | Products unit of measure / Service unit |
| VAT information at invoice line level* | Main module line item group field | Line item group tax rate |
| Net amount of the invoice line* | Main module line item group field | Line item group total after discount |
| Buyer's accounting reference for the invoice line | Main module line item group field | Line item group cost centre |
| Seller's name* | Company information | Organization |
| Country code of the seller's address* | Company information | Country code |
| Postal code of the seller's address | Company information | Postal code |
| City of the seller's address | Company information | City |
| Line 1 of the seller's address | Company information | Address |
| Seller's contact point | Company information | Managing director |
| Seller's tax number | Company information | VAT ID |
| Payment account identifier* (Certain payment methods) | Company information | IBAN |
| Payment service provider identifier* | Company information | BIC |
| VAT breakdown* | Main module field | VAT values incl. currency |
| Document-level allowances and charges | Main module down payment invoices | Down payment invoices block start |
| Document-level allowances and charges | Main module down payment invoices | Down payment invoices block end |
| Amount of the document-level allowance or charge* (if document-level allowances and charges are present) | Main module down payment invoices field | Net |
| Code for the VAT category of the document-level allowance or charge* (if document-level allowances and charges are present) | Main module down payment invoices field | VAT |
Mandatory fields are marked with *. Conditions for special cases in which a node is a mandatory field follow thereafter.
To release a PDF template for the ZUGFeRD export, the "ZUGFeRD PDF template" checkbox must be ticked in the template.
3.1.1.1.2. Exporting a 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 "Export as ZUGFeRD document" toggle is accordingly available in the export options popup during the PDF export.
PDF export popup - Export as ZUGFeRD document
When the toggle 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 "Use as accounting document" option remains possible.
The selection of the PDF templates to be used is likewise reduced to the PDF templates marked as ZUGFeRD templates. The restrictions on the export options as an accounting document also apply here.
Once the PDF export has been carried out and the ZUGFeRD document has been created successfully, an identical duplicate of the same invoice (XML) is present within the PDF document. This XML part contains the same invoice-relevant content - provided the template is correct - as the PDF part.
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 part fail, the PDF part is still output anyway.
If an export should be aborted in the event of an error, this can be configured in the ZUGFeRD settings (field (toggle) "Abort process on error", see the ZUGFeRD settings section).
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.
The content of the XML file is determined by the field mappings 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. Exporting an X-Rechnung document
After activating the "X-Rechnung" integration, the "Export as X-Rechnung" action is additionally displayed in the detail view of records in the Invoices, Cancellations and Credits modules.
After clicking the "Export as X-Rechnung" action, a corresponding popup window opens, just as with the PDF export.
Export X-Rechnung popup - Export as XML file
In this popup, the name of the file to be exported can be defined. In addition, it can be specified whether the created file should be saved and referenced as an accounting document. As with the PDF exports, the actions (for the respective type of export) are restricted if the corresponding selection is made, as a referencing must be possible.
The following export options are generally available for the X-Rechnung export:
- "Export" button
- Standard → normal export (only available if the "Use as accounting document" toggle is not active)
- Export with reference → additionally references the file in addition to the download
- Export as reference → references the file without a download
- "Email" button
- Standard → the export file is attached to an email (only available if the "Use as accounting document" toggle 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 Send email action in an automation.
In the Send email action, all you need to do here is select the "Link X-Rechnung" option using the "Add attachment" action icon 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 during the X-Rechnung export.
3.1.2. Exporting multiple records
In the list view of the Invoices, Cancellations and Credits modules, the new action in the list view of the modules for the export is displayed once the export is activated and at least one invoice standard is selected in the settings.
The "Export ZUGFeRD/X-Rechnung" action requires at least one selected record for the export. After the selection and clicking the action, the corresponding popup window opens.
Export ZUGFeRD/X-Rechnung popup
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 exporting with and without a 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 "Import ZUGFeRD/X-Rechnung" action is displayed in the list view of the Incoming Invoices module. This action is used to import ZUGFeRD/X-Rechnung files.
After clicking the "Import ZUGFeRD/X-Rechnung" action, a popup with an upload field opens.
Import ZUGFeRD/X-Rechnung popup
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 "Import" button.
A record is created in the Incoming Invoices module for each successfully read file. The titles of the imported records in the Incoming Invoices module correspond to the title of the source 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 line 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 mappings are configured. When exporting an invoice as a PDF, the Export as ZUGFeRD document toggle 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 any additional manual effort.
2 - Transmitting X-Rechnungen to public sector customers
Initial situation: A company provides services for public sector customers and is legally obliged to submit invoices as an X-Rechnung in XML format.
Procedure: The X-Rechnung integration is activated and the field mappings are fully configured. In the detail view of the respective invoice, the Export as X-Rechnung action is carried out. The generated XML file can be transmitted directly by email or via the corresponding submission portal of the customer. Alternatively, the sending can be fully automated via an automation with the Send email action.
Result: The invoice meets the legal requirements for electronic invoicing to public sector customers 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 them into brainX without manual data entry.
Procedure: In the list view of the Incoming Invoices module, the Import ZUGFeRD/X-Rechnung action is called up. The received PDF or XML files are uploaded. A record is automatically created in the Incoming Invoices module for each successfully read file.
Result: Incoming invoices are recorded in brainX with just a few clicks - without manual entry of the invoice data. Discrepancies between the XML amount and the internal line item calculation are automatically reported via notification.
4 - Batch export of multiple invoices as ZUGFeRD/X-Rechnung
Initial situation: At the end of the month, a company wants to export and archive several invoices in bulk as standard-compliant electronic invoices.
Procedure: In the list view of the Invoices module, all desired records are selected. Via the Export ZUGFeRD/X-Rechnung action, 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 for 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 therefore both human-readable and machine-processable. The X-Rechnung, on the other hand, is a purely structured XML data format without a PDF part. It is designed exclusively for automatic electronic further processing and is prescribed in particular for invoicing to public sector customers.
Does the X-Rechnung export require a special PDF template?
No, the X-Rechnung export generates only an XML file and therefore does not require a PDF template. For the ZUGFeRD export, however, a PDF template marked as a ZUGFeRD template is mandatory, as the document contains a readable PDF part.
What happens if the XML part fails during the ZUGFeRD export?
If the creation of the XML part fails, the PDF part is output anyway by default. If the export should be completely aborted in the event of an error - for example to ensure that no incomplete document is sent - this can be configured in the ZUGFeRD settings via the Abort process on error toggle.
Which prerequisites must be met before first use?
Before first use, the field mappings (nodes) for the respective invoice standard must be configured; this is mandatory. In addition, the company information must be completely filled in. 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 EN16931 code lists values code table.
Is there anything to note after adding new units of measure or payment methods?
Yes, if new picklist values for units of measure or payment methods are added in module management after the initial configuration, they must be linked with 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 Invoices, Cancellations and Credits modules. The Incoming Invoices module supports the import of ZUGFeRD and X-Rechnung files, but no export.