Steuerbemessungsgrundlage der Kategorie O abstimmen

Warnung BR-FXEXT-O-08ini Factur-X

[BR-FXEXT-O-08ini] - In einer Umsatzsteueraufschlüsselung (BG-23), in der der Code der Umsatzsteuerkategorie (BT-118) gleich „O“ („Nicht der Umsatzsteuer unterliegend“) ist, gilt: Absolutwert von (Kategoriespezifischer Steuerbasisbetrag (BT-116) - ∑ Nettobeträge der Rechnungsposition (BT-131) + Σ Beträge des Abschlags auf Dokumentenebene (BT-92) - Σ Beträge des Zuschlags auf Dokumentenebene (BT-99) - Σ Beträge der Servicegebühr (BT-x-272)) <= 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) „Nicht der Umsatzsteuer unterliegend“ (O) ist, 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 ram:BasisAmount weicht stärker als zulässig von der Summe der zugehörigen Beträge für Rechnungspositionen, Abschläge, Zuschläge und Logistikleistungen ab. Für den Abgleich werden Beträge der Kategorie O verwendet; Rechnungspositionen mit einem anderen ram:LineStatusReasonCode als DETAIL werden ausgeschlossen.

Was die Regel bedeutet

Die Bemessungsgrundlage für nicht der Umsatzsteuer unterliegende Beträge muss sich aus den Beträgen der Kategorie O ergeben. Die Regel lässt eine Rundungsabweichung von 0,01 je einbezogenem Betrag zu.

Bitte stimmen Sie die Bemessungsgrundlage der Kategorie `O` ab

Die Bemessungsgrundlage der Umsatzsteueraufschlüsselung O stimmt nicht ausreichend mit den zugehörigen Beträgen der Kategorie O überein. Prüfen Sie die Rechnungspositionen sowie die Abschläge, Zuschläge und Logistikbeträge auf Dokumentenebene.

Was ist zu tun?
  1. Vergleichen Sie ram:BasisAmount mit den Rechnungspositionsbeträgen, Abschlägen, Zuschlägen und Logistikbeträgen der Kategorie O.
  2. Prüfen Sie TaxCategoryCodes, TradeLineItem.LineTotalAmount und AbstractTradeAllowanceCharge.ActualAmount.
  3. Prüfen Sie, ob AssociatedDocument.LineStatusReasonCode beziehungsweise LineStatusReasonCodes DETAIL oder keinen Wert enthält.
  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

Summiert Beträge der Kategorie O ohne Filterung nach Befreiungsgründen und vergleicht die Summe mit ram:BasisAmount. Die zulässige Differenz beträgt 0,01 je einbezogenem Betrag.

Wo die Regel greift

Die Regel gilt für die Kategorie-O-Umsatzsteueraufschlüsselung ram:ApplicableTradeTax in ram:ApplicableHeaderTradeSettlement.

Originalmeldung aus dem Schematron
[BR-FXEXT-O-08ini] - In a VAT breakdown (BG-23) where VAT category code (BT-118) is equal to “O” ("Not subject to VAT"), 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 "Not subject to VAT" (O), 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='O'][upper-case(ram:TypeCode) = 'VAT']
Prüfausdruck (assert/@test)
( for $exempReasonText in normalize-space(ram:ExemptionReason), $exempReasonCode in normalize-space(ram:ExemptionReasonCode), $basisAmount in xs:decimal(ram:BasisAmount), $calculatedAmountBT131ini 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 = 'O']/ ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 100) div 100), $allowancesAmountBT92ini in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/ rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedTradeAllowanceCharge[ ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode='O' ]/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 normalize-space(ram:CategoryTradeTax/ram:ExemptionReasonCode) = $exempReasonCode and normalize-space(ram:CategoryTradeTax/ram:ExemptionReason) = $exempReasonText ]/xs:decimal(ram:ActualAmount)) * 100) div 100), $chargesAmountBT99ini in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/ rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedTradeAllowanceCharge[ ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode='O' ]/xs:decimal(ram:ActualAmount)) * 100) div 100), $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 = 'O' ])), $nbAllowancesOrChargesini in xs:decimal(count(/rsm:CrossIndustryInvoice/ rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedTradeAllowanceCharge[ram:CategoryTradeTax/ram:CategoryCode='O'])), $logisticChargeAmountini in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/ rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode='O']/ xs:decimal(ram:AppliedAmount)) * 100) div 100), $nblogisticChargeini in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ ram:CategoryCode='O'])) return abs($basisAmount - $calculatedAmountBT131ini + $allowancesAmountBT92ini - $chargesAmountBT99ini - $logisticChargeAmountini) le 0.01 * ($nbLineItemsini + $nbAllowancesOrChargesini + $nblogisticChargeini) )