Steuerbemessungsgrundlage und Befreiungsgründe für Z abstimmen

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

[BR-FXEXT-Z-08rev] - In einer Umsatzsteueraufschlüsselung (BG-23), bei der der Code der Umsatzsteuerkategorie (BT-118) gleich „Z“ („Nullsatz“) ist, muss 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) „Nullsatz“ (Z) 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. So werden Beträge mit unterschiedlichen Befreiungsgründen nicht derselben Grundlage zugeordnet.

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

Der Steuerbemessungsbetrag für Z 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)
  • TradeLineItem.LineTotalAmount (BT-131)
  • TradeLineItem.TaxCategoryCode (BT-151)
  • TradeLineItem.TaxType (BT-151-0)
Technische Details

Der Test gruppiert nach ram:RateApplicablePercent und verlangt die Ü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 Z 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-Z-08rev] - In a VAT breakdown (BG-23) where VAT category code (BT-118) is equal to “Z” ("Zero 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 "Zero Rated" (Z).
Kontext (rule/@context)
//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='Z'][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 = 'Z' 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='Z' 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='Z' 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 = 'Z' 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='Z' 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='Z' 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='Z' 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) )