The new ZUGFeRD version 2.3.3 is now available for XML Update Professional subscribers. We also introduced an improvement of line-based discounting for the ZUGFeRD format and the XRechnung format and an improvement of general invoice discounting for the ZUGFeRD format and the XRechnung format.
XSD - Updates
- New ZUGFeRD version 2.3.3
- Improvement of line-based discounting for the ZUGFeRD format and the XRechnung format
- Improvement of general invoice discounting for the ZUGFeRD format and the XRechnung format
Regarding point 1) New ZUGFeRD version 2.3.3
The new ZUGFeRD version 2.3.3 was released by the AWV in the middle of the second quarter of 2025. There were no functional changes in this version, but mainly BUG fixes were made to the sample files, so that there was or is no direct and acute need for action.
Regarding point 2) Improvement of line-based discounting for the ZUGFeRD format and the XRechnung format
Although there are no functional improvements with the new ZUGFeRD version, we have taken this as an opportunity to revise the discounting at the request of various partners.
The following nodes are affected:
- BT-146 Net price of the item = line amount divided by the quantity (The discounted total value is used directly here to determine the discounted net unit price) (P-S-I-LINE_NET-PRICE-CHARGE-AMOUNT).
- BG-27 Discounts at invoice item level = In future, this node will only be created if the creation condition returns a positive value (CHECK-P-S-I-LINE_DISCOUNT-TRUE/CHECK-P-S-CM-LINE_DISCOUNT-TRUE/CHECK-P-P-I-LINE_DISCOUNT-TRUE/CHECK-P-P-CM-LINE_DISCOUNT-TRUE)
- BG-27-1 Indicator for discount, value = Set to "false" for discounting (P-S-I-LINE_ALLOWANCE-CHARGE-INDICATOR/P-S-CM-LINE_ALLOWANCE-CHARGE-INDICATOR/P-P-I-LINE_ALLOWANCE-CHARGE-INDICATOR/P-P-CM-LINE_ALLOWANCE-CHARGE-INDICATOR)
- BT-138 Percentage discount at invoice item level = The line discount % is returned in this node. (P-S-I-LINE_ALLOWANCE-CALC-PERCENT/P-S-CM-LINE_ALLOWANCE-CALC-PERCENT/P-P-I-LINE_ALLOWANCE-CALC-PERCENT/P-P-CM-LINE_ALLOWANCE-CALC-PERCENT).
- BT-137 Base amount of the discount at invoice item level = The assessment basis for the line discount is calculated in this node. We use the line amount for this and add the line discount amount. (P-S-I-LINE-DISCOUNT-BASIS-NET-AMOUNT/P-S-CM-LINE-DISCOUNT-BASIS-NET-AMOUNT/P-P-I-LINE-DISCOUNT-BASIS-NET-AMOUNT/P-P-CM-LINE-DISCOUNT-BASIS-NET-AMOUNT)
- BT-136 Discount amount at invoice item level = The line discount amount is returned in this node. Our tests have shown that it is better to use data mapping if there are different discounts. For this reason, we filter the data mapping again to the correct line. (P-S-I-LINE_ALLOWANCE_DISCOUNT-AMOUNT/P-S-CM-LINE_ALLOWANCE_DISCOUNT-AMOUNT/P-P-I-LINE_ALLOWANCE_DISCOUNT-AMOUNT/P-P-CM-LINE_ALLOWANCE_DISCOUNT-AMOUNT)
- BT-139 Reason for the discount at invoice item level = This is a static value that is the same in all XSD schemas for a discount. (P-S-I-LINE_DISCOUNT-REASON/P-S-CM-LINE_DISCOUNT-REASON/P-P-I-LINE_DISCOUNT-REASON/P-P-CM-LINE_DISCOUNT-REASON)
- BT-131 Net amount of the invoice item = This node is filled with the line amount.(P-S-I-LINE_LINETOTALAMOUNT/P-S-CM-LINE_LINETOTALAMOUNT/P-P-I-LINE_LINETOTALAMOUNT/P-P-CM-LINE_LINETOTALAMOUNT)
Regarding point 3) Improvement of the general invoice discounting for the ZUGFeRD format and the XRechnung format
As at line level, we had to make many adjustments and changes at header level.
- BG-20 Discounts at document level = There are two special features for this node. 1. filtering by VAT percentage. (P-S-I-HEADER_GROUP_LINE_VAT/P-S-CM-HEADER_GROUP_LINE_VAT/P-P-I-HEADER_GROUP_LINE_VAT/P-P-CM-HEADER_GROUP_LINE_VAT) 2nd creation condition. As with the line level, this node is only created if there is a discount at document level - field: Invoice discount amount >0. (CHECK_P-S-I-HEADER_INVOICE-DISCOUNT/CHECK_P-S-CM-HEADER_INVOICE-DISCOUNT/CHECK_P-P-I-HEADER_INVOICE-DISCOUNT/CHECK_P-P-CM-HEADER_INVOICE-DISCOUNT)
- BG-20-1 Indicator for discount, value = Set to "false" for discounting (P-S-I-LINE_ALLOWANCE-CHARGE-INDICATOR/P-S-CM-LINE_ALLOWANCE-CHARGE-INDICATOR/P-P-I-LINE_ALLOWANCE-CHARGE-INDICATOR/P-P-CM-LINE_ALLOWANCE-CHARGE-INDICATOR)
- BT-93 Base amount of the discount at document level = By filtering on the VAT percentages, we go directly to the lines so that we can return the line amount (P-S-I-LINE_INVOICE-DISCOUNT-BASIS-AMOUNT/P-S-I-LINE_INVOICE-DISCOUNT-BASIS-AMOUNT/P-P-I-LINE_INVOICE-DISCOUNT-BASIS-AMOUNT/P-P-CM-LINE_INVOICE-DISCOUNT-BASIS-AMOUNT)
- BT-92 Amount of discount at document level = The invoice discount amount is returned in this node. (P-S-I-LINE_INVOICE-DISCOUNT/P-S-CM-LINE_INVOICE-DISCOUNT/P-P-I-LINE_INVOICE-DISCOUNT/P-P-CM-LINE_INVOICE-DISCOUNT)
- BT-97 Reason for the discount at document level = As in node BT-139, this is a static value.
- BT-95-0 Type of tax (code) = This is a static value "VAT". This node is used in all XSD schemas.
- BT-95 Code for the VAT category of the deduction at document level = In this node, we return the corresponding tax category from the VAT posting matrix setup. This is possible through data mapping by filtering through the two fields "VAT transaction posting group" and "VAT product posting group".
- BT-96 VAT rate for the discount at document level = The VAT percentage rate is returned in this node.
- BT-106 Sum of the net amounts of all invoice items = Due to the topic of discounting, we had to extend this standard node. We now work with a data mapping in which we have to jump from the header to the lines in order to calculate the sum of all amounts and invoice discount amounts from there. (P-S-I-HEADER_LINETOTALAMOUNT/P-S-CM-HEADER_LINETOTALAMOUNT/P-P-I-HEADER_LINETOTALAMOUNT/P-P-CM-HEADER_LINETOTALAMOUNT)
- BT-108 Sum of surcharges at document level = This field is currently still a static field and is filled with 0. In one of the next XSD setup files, there will be an addition for the BC standard.
- BT-107 Sum of discounts at document level = The "Invoice discount amount" field is used here to reflect the discount at document level. (P-S-I-HEADER_ALLOWANCE-TOTAL-AMOUNT/P-S-CM-HEADER_ALLOWANCE-TOTAL-AMOUNT/P-P-I-HEADER_ALLOWANCE-TOTAL-AMOUNT/P-P-CM-HEADER_ALLOWANCE-TOTAL-AMOUNT)
- BT-109 Total invoice amount without VAT = This node is filled with the net invoice amount - we use the "Amount" field for this. (P-S-I-HEADER_TAX-BASIS-TOTAL-AMOUNT/P-S-CM-HEADER_TAX-BASIS-TOTAL-AMOUNT/P-P-I-HEADER_TAX-BASIS-TOTAL-AMOUNT/P-P-CM-HEADER_TAX-BASIS-TOTAL-AMOUNT)
- BT-111 Total tax amount in booking currency = The tax is specified in this node. To do this, we take the "Amount incl. VAT" field and subtract it from the "Amount" field. (P-S-I-HEADER_CALCULATETAXTOTALVATAMOUNT/P-S-CM-HEADER_CALCULATETAXTOTALVATAMOUNT/P-P-I-HEADER_CALCULATETAXTOTALVATAMOUNT/P-P-CM-HEADER_CALCULATETAXTOTALVATAMOUNT)
- BT-112 Total invoice amount including VAT = This node is filled with the gross amount - field "Amount incl. VAT". (P-S-I-HEADER_GRANDTOTALAMOUNT/P-S-CM-HEADER_GRANDTOTALAMOUNT/P-P-I-HEADER_GRANDTOTALAMOUNT/P-P-CM-HEADER_GRANDTOTALAMOUNT)
- BT-115 Payment amount due = This node is filled with the gross amount - field "Amount incl. VAT". (P-S-I-HEADER_GRANDTOTALAMOUNT/P-S-CM-HEADER_GRANDTOTALAMOUNT/P-P-I-HEADER_GRANDTOTALAMOUNT/P-P-CM-HEADER_GRANDTOTALAMOUNT)
The same adjustments have been made for the XRechnung format with a small addition:
- BT-101 Percentage of surcharge at document level = In this node, the percentage of discounting at document level is required. Unfortunately, this was not so easy because we do not have a corresponding field for this in BC, which is why we were forced to create a data mapping by calculating this value. (P-S-I-LINE_INVOICE-DISCOUNT-PERCENTAGE/P-S-CM-LINE_INVOICE-DISCOUNT-PERCENTAGE/P-P-I-LINE_INVOICE-DISCOUNT-PERCENTAGE/P-P-CM-LINE_INVOICE-DISCOUNT-PERCENTAGE)