Konto
Polski

BR-DE-18: Wiersze skonta (Skonto) w warunkach płatności mają błędny format

Reguła XRechnung · Błąd · UBL, CII

StandardXRechnung 3.0.2 (KoSIT, niemiecka CIUS normy EN 16931)WagaBłąd: faktura zostaje odrzuconaSkładniaUBL, CIIPojęcia biznesowe
  • BT-20 Payment terms
  • BT-115 Amount due for payment
DotyczyXRechnung w składni UBL lub CII, w tym PDF ZUGFeRD / Factur-X z profilem XRECHNUNG. Faktury dla niemieckich instytucji publicznych muszą ją spełniać.

Oficjalna treść reguły

[BR-DE-18] Cash discount (Skonto) lines in … must match this regular expression: … . The information on the granting of a cash discount must be transmitted in the element "Payment terms" (BT-20) as follows: the first segment must state "SKONTO", the second "TAGE=n", the third "PROZENT=n". Percentages must be given without a sign and with two decimal places separated by a point. If the amount to be calculated is not based on BT-115, "Amount due for payment", but only on a part of the amount due of the invoice, the base value for calculating the cash discount must be given as a fourth segment "BASISBETRAG=n" in accordance with the semantic data type Amount. Each entry begins with a #, the segments are separated by a # and a line ends with a #. A complete cash discount statement must be followed by an XML-conformant line break. All information on the granting of a cash discount must be given in upper case. Additional whitespace (spaces, tabs or line breaks) is not permitted. Characters or text other than those specified above are not permitted.

Tekst normatywny jest w języku angielskim i cytowany bez zmian.

Dlaczego pojawia się ten błąd

XRechnung definiuje czytelny maszynowo format warunków skonta w tekście warunków płatności (BT-20): każde skonto to jeden wiersz w postaci #SKONTO#TAGE=n#PROZENT=n.nn# z opcjonalnym czwartym segmentem #BASISBETRAG=n.nn#, zakończony znakiem nowego wiersza. Reguła dzieli cac:PaymentTerms/cbc:Note (UBL) lub ram:SpecifiedTradePaymentTerms/ram:Description (CII) na wiersze, sprawdza każdy wiersz zaczynający się od # względem oficjalnego wyrażenia regularnego i wymaga znaku nowego wiersza po ostatnim kompletnym wpisie skonta. Błąd pojawia się przy małych literach, brakujących miejscach dziesiętnych (PROZENT=2), przecinku dziesiętnym, spacjach wokół znaku = lub braku końcowego znaku nowego wiersza; często powodują go ręcznie wpisane warunki lub szablony, które opisują skonto prozą zaczynającą się od #.

Jak to naprawić

Zapisz każde skonto w osobnym wierszu dokładnie jako #SKONTO#TAGE=14#PROZENT=2.00#, a po nim znak nowego wiersza (CRLF jest akceptowany); dodaj #BASISBETRAG=1000.00# jako czwarty segment tylko wtedy, gdy skonto dotyczy części kwoty do zapłaty. Używaj wielkich liter, kropki i dokładnie dwóch miejsc po przecinku dla wartości procentowej, bez spacji i tabulatorów, i nie umieszczaj w tych wierszach niczego innego. Dowolny tekst warunków jest dozwolony w tej samej uwadze w wierszach, które nie zaczynają się od #. Upewnij się, że uwaga kończy się znakiem nowego wiersza po ostatnim wierszu skonta, a nie bezpośrednio znacznikiem zamykającym.

Przykład (poprawny)

<cac:PaymentTerms>
  <cbc:Note>Zahlbar innerhalb von 30 Tagen.
#SKONTO#TAGE=14#PROZENT=2.00#
#SKONTO#TAGE=7#PROZENT=3.00#
</cbc:Note>
</cac:PaymentTerms>

Co sprawdza walidator

Sprawdzany element (kontekst):

UBL

/ubl:Invoice | /cn:CreditNote

Test (XPath):

every $line in             cac:PaymentTerms/cbc:Note[1]/tokenize(. , '(\r?\n)')[starts-with( normalize-space(.) , '#')]              satisfies matches ( normalize-space ($line), $XR-SKONTO-REGEX)                                  and                                 matches( cac:PaymentTerms/cbc:Note[1]/tokenize(. ,  '#.+#')[last()], '^\s*\n' )

CII

/rsm:CrossIndustryInvoice

Test (XPath):

every $line                        in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description[1]/tokenize(. , '(\r?\n)')[starts-with( normalize-space(.) , '#')]                        satisfies matches ( normalize-space ($line), $XR-SKONTO-REGEX ) and                     matches( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description[1]/tokenize(. ,  '#.+#')[last()], '^\s*\n' )

Sprawdź swoją fakturę

Upuść plik XML lub PDF w walidatorze; każda naruszona reguła ma link do swojej strony tutaj. Bezpłatnie, bez konta, plik nie jest zapisywany.

Sprawdź swoją fakturę →

To samo sprawdzenie przez API:

curl -F file=@invoice.xml https://einvoicechecker.com/v1/validate

Powiązane reguły

Najczęstsze pytania

Co oznacza BR-DE-18?

BR-DE-18 to reguła xrechnung: Cash discount (Skonto) lines in … must match this regular expression: … . The information on the granting of a cash discount must be transmitted in the element "Payment terms" (BT-20) as follows: the first segment must state "SKONTO", the second "TAGE=n", the third "PROZENT=n". Percentages must be given without a sign and with two decimal places separated by a point. If the amount to be calculated is not based on BT-115, "Amount due for payment", but only on a part of the amount due of the invoice, the base value for calculating the cash discount must be given as a fourth segment "BASISBETRAG=n" in accordance with the semantic data type Amount. Each entry begins with a #, the segments are separated by a # and a line ends with a #. A complete cash discount statement must be followed by an XML-conformant line break. All information on the granting of a cash discount must be given in upper case. Additional whitespace (spaces, tabs or line breaks) is not permitted. Characters or text other than those specified above are not permitted.

Czy moja faktura zostanie odrzucona z powodu BR-DE-18?

Tak. BR-DE-18 ma status „krytyczny”; walidatory (KSeF, punkty dostępowe Peppol, KoSIT) odrzucają fakturę do czasu poprawienia błędu.

Jakich formatów dotyczy BR-DE-18?

XRechnung w składni UBL lub CII, w tym PDF ZUGFeRD / Factur-X z profilem XRECHNUNG. Faktury dla niemieckich instytucji publicznych muszą ją spełniać. Składnia: UBL i CII.

Źródło: XRechnung 3.0.2, schematron 2.6.0 (KoSIT, September 2026). Katalog wygenerowany z oficjalnych zestawów reguł dnia 2026-10-15.