Skip to main content

BR-DE-18 Cash discount lines in payment terms must follow the XRechnung syntax

Under German commercial invoicing practices, early payment discounts (Skonto) are widely granted (e.g. "2% cash discount if paid within 14 days, net within 30 days"). Because the underlying European standard EN 16931 lacks dedicated structured XML fields for cash discounts at the invoice level, XRechnung standardizes the text format of payment terms (BT-20) using structured hashtags: #SKONTO#TAGE={days}#PROZENT={percentage}#. Public accounting software and automated ERP payment workflows parse these hashtags to calculate discount deadlines and net payable amounts automatically.

Problem Description

ERROR

German XRechnung rule (KoSIT, BR-DE) · XRechnung 3.0

Interactive pipeline

Click a stage to see what it checks, or type a rule ID to light up the stage that reports it.

Try:

BR-DE-18 XRechnung rule (Germany)

Reported in stage 3: National rules (CIUS).

Level error: the report recommends rejecting the invoice.

Stage 3 · What it checks

  • The specification identifier in BT-24 selects the rule set, for example XRechnung 3.0 or Peppol BIS Billing 3.0.
  • XRechnung adds the German BR-DE rules: buyer reference (BT-10), seller contact, payment instructions.
  • Peppol adds PEPPOL-EN16931 and country rules. XRechnung applies some PEPPOL-EN16931 rules too.

Example codes

Typical fix

Fill the fields the rule set requires in your master data, such as the Leitweg-ID in BT-10 or the seller contact.

A validator checks an e-invoice in stages. First the file must be well-formed XML that matches the UBL or CII schema (XSD). Then the EN 16931 business rules run: BR core rules, BR-CO calculations, BR-CL code lists, BR-DEC decimals and VAT-category rules such as BR-S. Next come the national or network rules that BT-24 selects: BR-DE for XRechnung, PEPPOL-EN16931 for Peppol BIS Billing. The report lists every failed rule: one error means reject, warnings alone still mean accept. BR-DE-18: XRechnung rule (Germany), reported in the stage “National rules (CIUS)”. Rule sets: KoSIT validator 1.6.3 with the XRechnung configuration of 31 Aug 2026 (EN 16931 artefacts 1.3.16), Peppol BIS Billing 3.0.21.

Context and Significance

BR-DE-18 is a fatal rule in the KoSIT configuration for XRechnung 3.0.2. It checks only the lines of BT-20 that start with "#": each must follow the Skonto format, and the last one must end with a line break. Payment terms in plain text without "#" do not trigger it.

Solution

In your ERP invoice export settings, format early discount terms in BT-20 according to the XRechnung hashtag convention: #SKONTO#TAGE=14#PROZENT=2.00#. For multi-tiered cash discounts, provide multiple lines such as #SKONTO#TAGE=10#PROZENT=3.00# #SKONTO#TAGE=20#PROZENT=2.00#. In UBL 2.1 syntax, populate <cac:PaymentTerms><cbc:Note>#SKONTO#TAGE=14#PROZENT=2.00#</cbc:Note></cac:PaymentTerms>. In UN/CEFACT CII syntax, populate <ram:SpecifiedTradePaymentTerms><ram:Description>#SKONTO#TAGE=14#PROZENT=2.00#</ram:Description></ram:SpecifiedTradePaymentTerms>. Free-text descriptions may be appended after the hashtag expressions.

Quick actions

Valid Examples

  • BT-20 = "#SKONTO#TAGE=14#PROZENT=2.00#"
  • BT-20 = "#SKONTO#TAGE=10#PROZENT=3.00# #SKONTO#TAGE=20#PROZENT=1.50# Zahlbar rein netto innerhalb von 30 Tagen."

Invalid Examples

  • BT-20 = "2% Skonto bei Zahlung innerhalb von 14 Tagen" (Unstructured plain German text without #SKONTO# tags)
  • BT-20 = "#SKONTO#TAGE:14#PROZENT:2%#" (Malformed hashtag syntax using colons and percent sign inside value)

Code Examples

Valid XML
<cac:PaymentTerms>
  <cbc:Note>#SKONTO#TAGE=14#PROZENT=2.00#</cbc:Note>
</cac:PaymentTerms>
Invalid XML
<cac:PaymentTerms>
  <cbc:Note>2% Skonto bei Zahlung innerhalb von 14 Tagen, rein netto nach 30 Tagen</cbc:Note>
</cac:PaymentTerms>

Affected Fields

Validation Tools