Fehler-Codes

BR-CO-16: Zahlbetrag (BT-115)

Schweregrad: fatal · Syntax: CII, UBL

Offizielle Meldung

Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).

Was bedeutet das?

Die Meldung setzt BT-115 = BT-112 − BT-113 + BT-114. Die UBL-Assertion unterscheidet, ob PrepaidAmount und PayableRoundingAmount vorhanden sind, und rundet die Differenzen auf zwei Nachkommastellen. Fehlen beide, muss PayableAmount gleich TaxInclusiveAmount sein. Offizielle Aussage: Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).

Typische Ursache

Anzahlungen oder Rundung stehen in der Buchhaltung, aber BT-113 oder BT-114 fehlt in der XML, oder das Vorzeichen der Rundung ist gedreht.

So beheben Sie es

Rechnen Sie die genannten BT-Felder in derselben Währung und setzen Sie die Kopfbeträge auf das Ergebnis der Assertion. Die Prüfung hilft Ihnen, die Differenz zu finden.

UBL

<cbc:TaxInclusiveAmount currencyID="EUR">119.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">119.00</cbc:PayableAmount>

CII

<ram:GrandTotalAmount>119.00</ram:GrandTotalAmount>
<ram:DuePayableAmount>119.00</ram:DuePayableAmount>

Business Term

BT-115, BT-112, BT-113, BT-114

Verwandte Regeln

Kontext und Prüfbedingung

UBL cac:LegalMonetaryTotal

CII //ram:SpecifiedTradeSettlementHeaderMonetarySummation

UBL

(exists(cbc:PrepaidAmount) and not(exists(cbc:PayableRoundingAmount)) and (xs:decimal(cbc:PayableAmount) = (round((xs:decimal(cbc:TaxInclusiveAmount) - xs:decimal(cbc:PrepaidAmount)) * 10 * 10) div 100))) or (not(exists(cbc:PrepaidAmount)) and not(exists(cbc:PayableRoundingAmount)) and xs:decimal(cbc:PayableAmount) = xs:decimal(cbc:TaxInclusiveAmount)) or (exists(cbc:PrepaidAmount) and exists(cbc:PayableRoundingAmount) and ((round((xs:decimal(cbc:PayableAmount) - xs:decimal(cbc:PayableRoundingAmount)) * 10 * 10) div 100) = (round((xs:decimal(cbc:TaxInclusiveAmount) - xs:decimal(cbc:PrepaidAmount)) * 10 * 10) div 100))) or (not(exists(cbc:PrepaidAmount)) and exists(cbc:PayableRoundingAmount) and ((round((xs:decimal(cbc:PayableAmount) - xs:decimal(cbc:PayableRoundingAmount)) * 10 * 10) div 100) = xs:decimal(cbc:TaxInclusiveAmount)))

CII

(xs:decimal(ram:DuePayableAmount[1]) = xs:decimal(ram:GrandTotalAmount[1]) - xs:decimal(ram:TotalPrepaidAmount[1]) + xs:decimal(ram:RoundingAmount[1])) or ((xs:decimal(ram:DuePayableAmount[1]) = xs:decimal(ram:GrandTotalAmount[1]) + xs:decimal(ram:RoundingAmount[1])) and not(ram:TotalPrepaidAmount)) or ((xs:decimal(ram:DuePayableAmount[1]) = xs:decimal(ram:GrandTotalAmount[1]) - xs:decimal(ram:TotalPrepaidAmount[1])) and not(ram:RoundingAmount)) or ((xs:decimal(ram:DuePayableAmount[1]) = xs:decimal(ram:GrandTotalAmount[1])) and not(ram:TotalPrepaidAmount) and not(ram:RoundingAmount))

Datei jetzt kostenlos prüfen

curl -F "file=@rechnung.xml" https://checkxrechnung.com/v1/validate

Fragen

Was prüft BR-CO-16 genau?

Die Meldung setzt BT-115 = BT-112 − BT-113 + BT-114. Die UBL-Assertion unterscheidet, ob PrepaidAmount und PayableRoundingAmount vorhanden sind, und rundet die Differenzen auf zwei Nachkommastellen. Fehlen beide, muss PayableAmount gleich TaxInclusiveAmount sein. Offizielle Aussage: Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).

Wie behebe ich BR-CO-16?

Rechnen Sie die genannten BT-Felder in derselben Währung und setzen Sie die Kopfbeträge auf das Ergebnis der Assertion. Die Prüfung hilft Ihnen, die Differenz zu finden.

Heißt eine bestandene Prüfung von BR-CO-16, dass ein Portal die Rechnung annimmt?

Nein. Die Seite hilft Ihnen, diese eine Schematron-Aussage zu verstehen. Ein Bestehen hier ist keine Aussage über Steuerrecht, Portalannahme oder Bank-Overlays.