einvoicecheck
Menu

Rules / DE-R-018 · Markdown

Peppol BIS Billing 3.0 · rule

DE-R-018

Layer peppol·Checked against Peppol BIS Billing 3.0 2026.5

What does DE-R-018 mean? If both supplier and customer are located in Germany, information on cash discounts for prompt payment (Skonto) shall be provided within the element "Payment terms" BT-20 in the following way: First segment "SKONTO", second segment amount of days ("TAGE=N"), third segment percentage ("PROZENT=N"). Percentage must be separated by dot with two decimal places. In case the base value of the invoiced amount is not provided in BT-115 but as a partial amount, the base value shall be provided as fourth segment "BASISBETRAG=N" as semantic data type amount. Each entry shall start with a #, the segments must be separated by # and a row shall end with a #. A complete statement on cash discount for prompt payment shall end with a XML-conformant line break. All statements on cash discount for prompt payment shall be given in capital letters. Additional whitespaces (blanks, tabulators or line breaks) are not allowed. Other characters or texts than defined above are not allowed.

Why did my invoice fail DE-R-018?

On domestic German invoices, cash-discount (Skonto) terms must be encoded machine-readably inside Payment terms (BT-20) in a strict format: each statement starts and ends with #, with segments #SKONTO#TAGE=n#PROZENT=n.nn# (percentage with a dot and exactly two decimals), optionally followed by #BASISBETRAG=n# when the discount base is a partial amount rather than BT-115. Everything must be upper case, end with an XML-conformant line break, and contain no extra whitespace or other text. The rigid syntax exists so payment systems can parse Skonto terms automatically. In UBL BT-20 is cac:PaymentTerms/cbc:Note.

Official rule text

If both supplier and customer are located in Germany, information on cash discounts for prompt payment (Skonto) shall be provided within the element "Payment terms" BT-20 in the following way: First segment "SKONTO", second segment amount of days ("TAGE=N"), third segment percentage ("PROZENT=N"). Percentage must be separated by dot with two decimal places. In case the base value of the invoiced amount is not provided in BT-115 but as a partial amount, the base value shall be provided as fourth segment "BASISBETRAG=N" as semantic data type amount. Each entry shall start with a #, the segments must be separated by # and a row shall end with a #. A complete statement on cash discount for prompt payment shall end with a XML-conformant line break. All statements on cash discount for prompt payment shall be given in capital letters. Additional whitespaces (blanks, tabulators or line breaks) are not allowed. Other characters or texts than defined above are not allowed.

Common causes

How do I fix it?

<cac:PaymentTerms>
  <cbc:Note>#SKONTO#TAGE=14#PROZENT=2.00#
</cbc:Note>
</cac:PaymentTerms>

Related rules

DE-R-001 · DE-R-002 · DE-R-003 · DE-R-004 · DE-R-005 · DE-R-006 · DE-R-007 · DE-R-008

Check your invoice against this rule

Paste it into the live demo, or call POST /v1/validate. See the quickstart.