Steuerfreie Bemessungsgrundlage und Befreiungsgründe abstimmen

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

[BR-FXEXT-E-08rev] - In einer Umsatzsteueraufschlüsselung (BG-23), in der der Code der Umsatzsteuerkategorie (BT-118) gleich „E“ („Steuerbefreit“) ist, muss der Absolutbetrag von (Kategoriespezifischer Steuerbasisbetrag (BT-116) - ∑ Nettobeträge der Rechnungsposition (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 Rechnungsposition (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, wenn der Code der Umsatzsteuerkategorie (BT-151, BT-95, BT-102, BT-X-273) „Steuerbefreit“ (E) ist und, sofern zutreffend, der Umsatzsteuerbefreiungsgrund und der Code der Spezifizierung (BT-195, BT-174 und BT-176 und BT-X-592) sowie der Text des Befreiungsgrunds (BT-194, BT-173 und BT-175 und BT-X-591) mit dem Umsatzsteuerbefreiungsgrund und dem Code der Spezifizierung der Umsatzsteuerkategorie (BT-121) sowie dem Text des Umsatzsteuerbefreiungsgrunds (BT-120) 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 stimmt nicht innerhalb der zulässigen Rundungstoleranz mit den Beträgen der zugehörigen Rechnungspositionen, Abschläge, Zuschläge und Logistik-Servicegebühren überein, deren Steuersatz und Befreiungsgrundtext sowie -code zur Umsatzsteueraufschlüsselung passen. Berücksichtigt werden Rechnungspositionen mit ram:LineStatusReasonCode gleich DETAIL oder ohne dieses Element.

Was die Regel bedeutet

Die Steuerbemessungsgrundlage für E muss aus den Beträgen gebildet werden, die derselben steuerfreien Kategorie und, sofern angegeben, denselben Befreiungsgründen zugeordnet sind. Eine begrenzte Rundungsabweichung wird anhand der Anzahl der berücksichtigten Beträge zugelassen.

Bitte stimmen Sie die steuerfreie Bemessungsgrundlage und Befreiungsgründe ab

Die Bemessungsgrundlage der Umsatzsteueraufschlüsselung für E passt nicht ausreichend zu den zugehörigen Beträgen mit denselben Befreiungsgründen. Stimmen Sie die Beträge und die angegebenen Befreiungsgründe aufeinander ab.

Was ist zu tun?
  1. Prüfen Sie ram:BasisAmount in der Umsatzsteueraufschlüsselung mit ram:CategoryCode gleich E.
  2. Gleichen Sie den Betrag mit Rechnungspositionen, Abschlägen, Zuschlägen und Logistik-Servicegebühren mit passenden Steuersätzen und Befreiungsgründen ab.
  3. Prüfen Sie die Kategoriezuordnung über TaxCategoryCodes und die Positionsbeträge über TradeLineItem.LineTotalAmount.
  4. Prüfen Sie Dokumentenabschläge und -zuschläge über AbstractTradeAllowanceCharge.ActualAmount.
  5. Erzeugen Sie die Rechnung erneut und prüfen Sie sie nochmals.
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 summiert nur passende Beträge mit demselben Steuersatz und übereinstimmendem normalisiertem Befreiungsgrundtext und -code. Er vergleicht diese Summe mit ram:BasisAmount und erlaubt eine Abweichung von 0.01 je berücksichtigtem Eintrag. Rechnungspositionen ohne ram:LineStatusReasonCode oder mit dem Wert DETAIL werden berücksichtigt.

Wo die Regel greift

Die Regel gilt für eine Umsatzsteueraufschlüsselung ram:ApplicableTradeTax auf Dokumentenebene mit ram:CategoryCode gleich E und ram:TypeCode gleich VAT.

Originalmeldung aus dem Schematron
[BR-FXEXT-E-08rev] - In a VAT breakdown (BG-23) where VAT category code (BT-118) is equal to “E” ("Exempt from 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 "Exempt from VAT" (E), 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='E'][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 = 'E' 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='E' 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='E' 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 = 'E' 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='E' 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='E' 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='E' 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) )