Umsatzsteuerbetrag der Kategorie S abstimmen

Fehler BR-FXEXT-S-09b Factur-X

[BR-FXEXT-S-09b] - Für jeden unterschiedlichen Wert des Kategoriespezifischen Umsatzsteuersatzes (BT-119), bei dem der Code der Umsatzsteuerkategorie (BT-118) gleich „S“ („Normalsatz“) ist, gilt: Absolutwert von (Kategoriespezifischer Steuerbetrag (BT-117) - Kategoriespezifischer Steuerbasisbetrag (BT-116) multipliziert mit dem Kategoriespezifischen Umsatzsteuersatz (BT-119)/100) <= 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)), wobei der Code der Umsatzsteuerkategorie (BT-151, BT-95, BT-102, BT-X-273) „Normalsatz“ (S) ist und der Umsatzsteuersatz (BT-152, BT-96, BT-103, BT-X-274) dem Kategoriespezifischen Umsatzsteuersatz (BT-119) entspricht, und nur für Rechnungspositionen, bei denen der „Untertyp der Rechnungsposition“ (EXT-FR-FE-163 / BT-X-8) den Wert „DETAIL“ hat oder nicht angegeben ist, oder dieselbe Regel, jedoch auch unter Berücksichtigung der Befreiungsgründe als Text (BT-120) und Code (BT-121) in BG-23 und der Befreiungsgründe für jede Rechnungsposition (BT-X-96 / BT-X-97), für Abschläge auf Dokumentenebene (BT-173 / BT-174), für Zuschläge auf Dokumentenebene (BT-175 / BT-176) und für Logistikdienstleistungszuschläge (BT-X-591 / BT-X-592). Eine der beiden Regeln muss eingehalten werden, wobei letztendlich nur die zweite eingehalten werden muss.

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

Der in ram:CalculatedAmount angegebene Umsatzsteuerbetrag weicht zu stark vom auf zwei Dezimalstellen gerundeten Ergebnis aus ram:BasisAmount multipliziert mit ram:RateApplicablePercent ab. Der Test erlaubt eine Toleranz von 0,01 je berücksichtigter Rechnungsposition, Abschlag, Zuschlag oder Logistikleistung; er lässt die Zählung mit oder ohne Abgleich der Befreiungsangaben zu.

Was die Regel bedeutet

Bei der Kategorie S wird die Umsatzsteuer aus der steuerpflichtigen Bemessungsgrundlage und dem zugehörigen Steuersatz berechnet. Der angegebene Umsatzsteuerbetrag muss diesem Ergebnis innerhalb der zulässigen Rundungstoleranz entsprechen.

Bitte gleichen Sie den Umsatzsteuerbetrag der Kategorie `S` ab

Der Umsatzsteuerbetrag der Kategorie S stimmt nicht ausreichend mit der Berechnung aus Bemessungsgrundlage und Steuersatz überein. Prüfen Sie außerdem, welche zugehörigen Beträge in die Toleranzberechnung eingehen.

Was ist zu tun?
  1. Berechnen Sie den erwarteten Umsatzsteuerbetrag aus ram:BasisAmount und ram:RateApplicablePercent und vergleichen Sie ihn mit ram:CalculatedAmount.
  2. Prüfen Sie TaxCategoryCodes, TradeLineItem.LineTotalAmount und AbstractTradeAllowanceCharge.ActualAmount für die Beträge, die in die Toleranz eingehen.
  3. Prüfen Sie, ob AssociatedDocument.LineStatusReasonCode beziehungsweise LineStatusReasonCodes DETAIL oder keinen Wert enthält und ob Kategorie, Steuersatz und gegebenenfalls Befreiungsangaben übereinstimmen.
  4. Erzeugen Sie die Rechnung neu und prüfen Sie sie erneut.
In FactoorSharp prüfen
  • TaxCategoryCodes (BT-151; BT-95; BT-102; BT-118)
  • AbstractTradeAllowanceCharge.ActualAmount (Document level allowance: BT-92; Document level charge: BT-99)
  • AssociatedDocument.LineStatusReasonCode (BT-X-8)
  • LineStatusReasonCodes (BT-X-8)
  • TradeLineItem.LineTotalAmount (BT-131)
Gut zu wissen

Für die Rundungstoleranz können die Beträge mit passenden Befreiungsangaben gezählt werden oder alle Beträge derselben Kategorie und desselben Steuersatzes.

Technische Details

Vergleicht ram:CalculatedAmount mit ram:BasisAmount multipliziert mit ram:RateApplicablePercent und auf zwei Dezimalstellen gerundet. Die Toleranz ist 0,01 multipliziert mit der Anzahl relevanter Einträge; der Test enthält zwei Zählweisen, mit und ohne Filterung nach Befreiungsangaben.

Wo die Regel greift

Die Regel gilt für ram:ApplicableTradeTax der Kategorie S in ram:ApplicableHeaderTradeSettlement und prüft die Berechnung des Umsatzsteuerbetrags aus Bemessungsgrundlage und Steuersatz.

Originalmeldung aus dem Schematron
[BR-FXEXT-S-09b] - For each different value of VAT rate (BT-119) where the VAT category code (BT-118) is equal to “S” ("Standard rated"), Absolute Value of (VAT  category  tax  amount  (BT-117) - VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119)/100) <= 0,01 * ((Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level allowance amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272)), where the VAT category code (BT-151, BT-95, BT-102, BT-X-273) is " Standard rated " (S), and the VAT rate (BT-152, BT-96, BT-103, BT-X-274) equals the VAT category rate (BT-119), and only for lines where the "Subtype of invoice line item" (EXT-FR-FE-163 / BT-X-8) has the value "DETAIL" or is not specified or the same rule but also taking into account the exemption reasons in Text (BT-120) and Code (BT-121) in BG-23 and the exemption reasons on each line (BT-X-96 / BT-X-97), on Document level Allowances (BT-173 / BT-174) and on Document Level Charges (BT-175 / BT-176) and on Service logistic charges (BT-X-591 / BT-X-592). One of the two rules must be followed, bearing in mind that ultimately only the second one will have to be followed.
Kontext (rule/@context)
//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='S']
Prüfausdruck (assert/@test)
( for $rate in xs:decimal(ram:RateApplicablePercent), $exempReasonText in normalize-space(ram:ExemptionReason), $exempReasonCode in normalize-space(ram:ExemptionReasonCode), $basisAmount in xs:decimal(ram:BasisAmount), $nbLineItems in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ ram:IncludedSupplyChainTradeLineItem[ ( not(ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode) or ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode = 'DETAIL' ) and ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = 'S' and ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/xs:decimal(ram:RateApplicablePercent) =$rate and normalize-space(ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ ram:ExemptionReasonCode) = $exempReasonCode and normalize-space(ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ ram:ExemptionReason) = $exempReasonText ])), $nbLineItemsini in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ ram:IncludedSupplyChainTradeLineItem[ ( not(ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode) or ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode = 'DETAIL' ) and ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = 'S' and ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/xs:decimal(ram:RateApplicablePercent) =$rate ])), $nbAllowancesOrCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/ rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedTradeAllowanceCharge[ ram:CategoryTradeTax/ram:CategoryCode='S' and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate and normalize-space(ram:CategoryTradeTax/ram:ExemptionReasonCode) = $exempReasonCode and normalize-space(ram:CategoryTradeTax/ram:ExemptionReason) = $exempReasonText ])), $nbAllowancesOrChargesini in xs:decimal(count(/rsm:CrossIndustryInvoice/ rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedTradeAllowanceCharge[ ram:CategoryTradeTax/ram:CategoryCode='S' and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate ])), $nblogisticCharge in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ ram:AppliedTradeTax/ram:CategoryCode='S' and ram:AppliedTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate and normalize-space(ram:AppliedTradeTax/ram:ExemptionReasonCode) = $exempReasonCode and normalize-space(ram:AppliedTradeTax/ram:ExemptionReason) = $exempReasonText ])), $nblogisticChargeini in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ ram:AppliedTradeTax/ram:CategoryCode='S' and ram:AppliedTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate ])), $vATAmountBT117 in xs:decimal(ram:CalculatedAmount), $calculatedBT117 in xs:decimal(round($basisAmount * $rate div 100 * 100) div 100) return (abs($vATAmountBT117 - $calculatedBT117) le 0.01 * ($nbLineItems + $nbAllowancesOrCharges + $nblogisticCharge)) or (abs($vATAmountBT117 - $calculatedBT117) le 0.01 * ($nbLineItemsini + $nbAllowancesOrChargesini + $nblogisticChargeini)) )