Reference
Markdown exportBR-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
Where BR-DE-18 is checked
Click a stage to see what it checks, or type a rule ID to light up the stage that reports it.
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
National rules (CIUS)
- 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.
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
<cac:PaymentTerms>
<cbc:Note>#SKONTO#TAGE=14#PROZENT=2.00#</cbc:Note>
</cac:PaymentTerms><cac:PaymentTerms>
<cbc:Note>2% Skonto bei Zahlung innerhalb von 14 Tagen, rein netto nach 30 Tagen</cbc:Note>
</cac:PaymentTerms>