Steuerbemessungsgrundlage und Befreiungsgründe für S abstimmen

Warnung BR-FXEXT-S-08rev Factur-X

[BR-FXEXT-S-08rev] - In einer Umsatzsteueraufschlüsselung (BG-23) muss für jeden unterschiedlichen Wert des Umsatzsteuersatzes (BT-119), bei dem der Code der Umsatzsteuerkategorie (BT-118) gleich „S“ („Normalsatz“) ist, der Absolutwert von (Kategoriespezifischer Steuerbasisbetrag (BT-116) - ∑ Nettobeträge der Rechnungspositionen (BT-131) + Σ Beträge der Abschläge auf Dokumentenebene (BT-92) - Σ Beträge der Zuschläge auf Dokumentenebene (BT-99) - Σ Beträge der Servicegebühren (BT-X-272)) <= 0,01 * ((Anzahl der Nettobeträge der Rechnungspositionen (BT-131) + Anzahl der Beträge der Abschläge auf Dokumentenebene (BT-92) + Anzahl der Beträge der Zuschläge auf Dokumentenebene (BT-99) + Anzahl der Beträge der Servicegebühren (BT-X-272)) sein, wobei der Code der Umsatzsteuerkategorie (BT-151, BT-95, BT-102, BT-X-273) „Normalsatz“ (S) ist und gegebenenfalls der Umsatzsteuerbefreiungsgrund und -spezifikationscode (BT-195, BT-174, BT-176 und BT-X-592) sowie der Text des Umsatzsteuerbefreiungsgrundes (BT-194, BT-173, BT-175 und BT-X-591) mit dem Umsatzsteuerbefreiungsgrund und -spezifikationscode (BT-121) und dem Text des Umsatzsteuerbefreiungsgrundes (BT-120) der Umsatzsteuerkategorie identisch sind, jedoch nur für Rechnungspositionen, bei denen der „Untertyp der Rechnungsposition“ (BT-X-8) den Wert „DETAIL“ hat oder nicht angegeben ist.

Empfehlung: Die Rechnung bleibt gültig, sollte aber korrigiert werden, damit sie automatisch verarbeitet werden kann.
Was nicht stimmt

Der Betrag in ram:BasisAmount weicht um mehr als die zulässige Rundungstoleranz von den Beträgen ab, die sowohl den Steuersatz als auch den Befreiungstext und den Befreiungscode der Aufschlüsselung teilen. Die Summe umfasst Rechnungspositionen mit DETAIL oder ohne Statusgrund sowie die passenden Abschläge, Zuschläge und Logistikgebühren.

Was die Regel bedeutet

Die Steuerbemessungsgrundlage muss sich aus genau den Rechnungsbestandteilen zusammensetzen, deren Kategorie, Steuersatz und Befreiungsangaben der Umsatzsteueraufschlüsselung entsprechen. Dadurch werden Beträge mit unterschiedlichen Befreiungsgründen nicht gemeinsam derselben Grundlage zugerechnet.

Bitte gleichen Sie Bemessungsgrundlage und Befreiungsgründe für `S` ab

Der Steuerbemessungsbetrag für S passt nicht zu den Rechnungsbestandteilen mit denselben Befreiungsangaben. Sowohl der Befreiungstext als auch der Befreiungscode müssen bei den einbezogenen Beträgen zur Umsatzsteueraufschlüsselung passen.

Was ist zu tun?
  1. Vergleichen Sie ram:BasisAmount mit den Nettobeträgen der Rechnungspositionen, Abschläge, Zuschläge und Logistikgebühren, die denselben Steuersatz haben.
  2. Prüfen Sie, ob bei diesen Bestandteilen ram:ExemptionReason und ram:ExemptionReasonCode mit den Angaben der Umsatzsteueraufschlüsselung übereinstimmen.
  3. Berücksichtigen Sie bei Rechnungspositionen nur DETAIL oder einen nicht angegebenen Statusgrund.
  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)
Technische Details

Der Test gruppiert nach ram:RateApplicablePercent und verlangt eine Übereinstimmung von ram:ExemptionReason und ram:ExemptionReasonCode bei Rechnungspositionen, dokumentweiten Zu- oder Abschlägen und Logistikgebühren. Die gerundeten Summen werden mit ram:BasisAmount verglichen; die Toleranz beträgt 0,01 je einbezogenem Bestandteil.

Wo die Regel greift

Die Regel gilt für jede Umsatzsteueraufschlüsselung ram:ApplicableTradeTax auf Dokumentenebene mit dem Steuercode S und dem Steuertyp VAT. Rechnungspositionen, Abschläge, Zuschläge und Logistikgebühren werden dem Steuersatz und den Befreiungsgründen der Aufschlüsselung zugeordnet.

Originalmeldung aus dem Schematron
[BR-FXEXT-S-08rev] - In a VAT breakdown (BG-23), for each different value of VAT rate (BT-119), where VAT category code (BT-118) is equal to “S” ("Standard Rated"), Absolute Value of (VAT category taxable amount (BT-116) - ∑ Invoice line net amounts (BT-131) + Σ Document level allowance amounts (BT-92) - Σ Document level charge amounts (BT-99) - Σ Logistics Service fee amounts (BT-X-272)) <= 0,01 * ((Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level charge 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 where applicable the VAT exemption reason and specification code (BT-195, BT-174 and BT-176 and BT-X-592) and the Exemption reason text (BT-194, BT-173 and BT-175 and BT-X-591) are identical with the VAT category VAT exemption reason and specification code (BT-121) and VAT exemption reason text (BT-120), but only for lines where the "Subtype of invoice item" (BT-X-8) has the value "DETAIL" or is not specified.
Kontext (rule/@context)
//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='S'][upper-case(ram:TypeCode) = 'VAT']
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), $calculatedAmountBT131 in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/ rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem[ not(ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode) or ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode = 'DETAIL' ]/ram:SpecifiedLineTradeSettlement[ ram:ApplicableTradeTax/ram:CategoryCode = 'S' and ram:ApplicableTradeTax/xs:decimal(ram:RateApplicablePercent) =$rate and normalize-space(ram:ApplicableTradeTax/ram:ExemptionReasonCode) = $exempReasonCode and normalize-space(ram:ApplicableTradeTax/ram:ExemptionReason) = $exempReasonText ]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 100) div 100), $allowancesAmountBT92 in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/ rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedTradeAllowanceCharge[ ram:ChargeIndicator/udt:Indicator=false() and 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 ]/xs:decimal(ram:ActualAmount)) * 100) div 100), $chargesAmountBT99 in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/ rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedTradeAllowanceCharge[ ram:ChargeIndicator/udt:Indicator=true() and 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 ]/xs:decimal(ram:ActualAmount)) * 100) div 100), $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 ])), $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 ])), $logisticChargeAmount in xs:decimal(round(sum(/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 ]/xs:decimal(ram:AppliedAmount)) * 100) div 100), $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 ])) return abs($basisAmount - $calculatedAmountBT131 + $allowancesAmountBT92 - $chargesAmountBT99 - $logisticChargeAmount) le 0.01 * ($nbLineItems + $nbAllowancesOrCharges + $nblogisticCharge) )