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))
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.