Rechnungsbetrag einschließlich Umsatzsteuer abstimmen

Fehler BR-FXEXT-CO-15 Factur-X

Wenn der Rechnungsgesamtbetrag ohne Umsatzsteuer (BT-110), dessen Währung (BT-110-0) dem BT-5 entspricht, angegeben ist, dann gilt: Absolutwert von (Rechnungsgesamtbetrag einschließlich Umsatzsteuer (BT-112) - Rechnungsgesamtbetrag ohne Umsatzsteuer (BT-109) - Rechnungsgesamtbetrag ohne Umsatzsteuer (BT-110)) <= 0,01 * (Anzahl der Nettobeträge der Rechnungsposition (BT-131) + Anzahl der Beträge des Abschlags auf Dokumentenebene (BT-92) + Anzahl der Beträge des Zuschlags auf Dokumentenebene (BT-99) + Anzahl der Beträge der Servicegebühr (BT-X-272). Andernfalls entspricht der Rechnungsgesamtbetrag einschließlich Umsatzsteuer (BT-112) dem Rechnungsgesamtbetrag ohne Umsatzsteuer (BT-109).

Pflichtregel: Solange sie verletzt ist, ist die Rechnung ungültig und wird von Validatoren abgewiesen.
Was nicht stimmt

Wenn genau ein ram:TaxTotalAmount in der Rechnungswährung vorhanden ist, muss ram:GrandTotalAmount der Summe aus ram:TaxBasisTotalAmount und diesem Steuerbetrag entsprechen, innerhalb einer Toleranz von 0,01 je berücksichtigter Rechnungsposition, Abschlag oder Zuschlag. Gibt es nicht genau einen solchen Steuerbetrag, müssen ram:GrandTotalAmount und ram:TaxBasisTotalAmount gleich sein.

Was die Regel bedeutet

Der Rechnungsbetrag einschließlich Umsatzsteuer (BT-112) ergibt sich aus dem Betrag ohne Umsatzsteuer (BT-109) und dem Steuerbetrag in Rechnungswährung (BT-110). Ist nicht genau ein Steuerbetrag in Rechnungswährung vorhanden, verlangt die Regel die Gleichheit von BT-112 und BT-109.

Bitte stimmen Sie den Rechnungsbetrag einschließlich Umsatzsteuer ab

Der Rechnungsbetrag einschließlich Umsatzsteuer passt nicht zur Summe aus Betrag ohne Umsatzsteuer und Steuerbetrag in Rechnungswährung. Wenn nicht genau ein Steuerbetrag in Rechnungswährung vorhanden ist, müssen beide Rechnungsbeträge gleich sein.

Was ist zu tun?
  1. Vergleichen Sie ram:GrandTotalAmount mit ram:TaxBasisTotalAmount und dem Steuerbetrag in ram:TaxTotalAmount, dessen currencyID der Wert in ram:InvoiceCurrencyCode ist.
  2. Prüfen Sie die Rechnungswährung über Currency und die Beträge über GrandTotalAmount, TaxBasisAmount und TaxTotalAmount.
  3. Wenn nicht genau ein Steuerbetrag in Rechnungswährung vorhanden ist, gleichen Sie ram:GrandTotalAmount und ram:TaxBasisTotalAmount ab.
  4. Erzeugen Sie die Rechnung neu und prüfen Sie sie erneut.
In FactoorSharp prüfen
  • AbstractTradeAllowanceCharge.ActualAmount (Document level allowance: BT-92; Document level charge: BT-99)
  • FacturXInvoice.Currency (Invoice currency: BT-5)
  • FacturXInvoice.GrandTotalAmount (BT-112)
  • FacturXInvoice.TaxBasisAmount (BT-109)
  • FacturXInvoice.TaxTotalAmount (BT-110)
Technische Details

Der Test zählt ram:TaxTotalAmount mit currencyID gleich ram:InvoiceCurrencyCode. Bei genau einem Treffer prüft er, dass der absolute Unterschied zwischen ram:GrandTotalAmount und der Summe aus ram:TaxBasisTotalAmount und diesem Steuerbetrag innerhalb von 0,01 multipliziert mit der Anzahl der berücksichtigten Positionen, Abschläge und Zuschläge liegt. Bei jeder anderen Trefferzahl prüft er die Gleichheit von ram:GrandTotalAmount und ram:TaxBasisTotalAmount.

Wo die Regel greift

Gilt für ram:GrandTotalAmount und ram:TaxBasisTotalAmount in der monetären Zusammenfassung. Verglichen werden außerdem die Steuerbeträge in ram:TaxTotalAmount, deren currencyID der Rechnungwährung in ram:InvoiceCurrencyCode entspricht.

Originalmeldung aus dem Schematron
If Invoice Total VAT amount (BT-110) ,where currency (BT-110-0) is equal to BT-5, is present, then the Absolute Value of (Invoice total amount with VAT (BT-112) - Invoice total amount without VAT (BT-109) - Invoice total VAT amount (BT-110)) <= 0,01 * (Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level charges amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272). Else, Invoice total amount with VAT (BT-112) is equal to Invoice total amount without VAT (BT-109).
Kontext (rule/@context)
//ram:SpecifiedTradeSettlementHeaderMonetarySummation
Prüfausdruck (assert/@test)
for $Currency in ../ram:InvoiceCurrencyCode, $BT109 in xs:decimal(ram:TaxBasisTotalAmount), $BT110 in xs:decimal(ram:TaxTotalAmount[@currencyID=$Currency]), $BT112 in xs:decimal(ram:GrandTotalAmount), $nbTaxTotalAmountInvoiceCurrency in count (ram:TaxTotalAmount[@currencyID=$Currency] ), $nbLineItems in xs:decimal(count(../../ram:IncludedSupplyChainTradeLineItem[ not(ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode) or ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode = 'DETAIL' ])), $nbAllowanceItems in xs:decimal(count(../ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/ udt:Indicator='false'])), $nbChargeItems in xs:decimal(count(../ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/ udt:Indicator='true']) + count(../ram:SpecifiedLogisticsServiceCharge)), $tolerance in xs:decimal(0.01), $maxTolerance in $tolerance * ($nbLineItems + $nbAllowanceItems + $nbChargeItems), $diff in xs:decimal($BT112 - $BT110 - $BT109), $abs in xs:decimal(abs($diff)) return ( $abs le $maxTolerance and $nbTaxTotalAmountInvoiceCurrency eq 1 ) or ($BT109 eq $BT112 and $nbTaxTotalAmountInvoiceCurrency ne 1)