Umsatzsteueraufschlüsselung für Kategorie M

Fehler BR-FXEXT-AG-01 Factur-X

Eine Rechnung, die eine Rechnungsposition (BG-25) enthält, bei der der „Untertyp der Rechnungsposition“ (BT-X-8) den Wert „DETAIL“ hat oder nicht angegeben ist, einen Abschlag auf Dokumentenebene (BG-20) oder einen Zuschlag oder eine Steuer auf Dokumentenebene (BG-21) oder Detailinformationen zu logistischen Servicegebühren (BG-X-42), bei denen der Code der Umsatzsteuerkategorie (BT-151, BT-95, BT-102 oder BT-X-273) „M“ („Steuer für Produktion, Dienstleistungen und Einfuhr in Ceuta und Melilla (IPSI)“) ist, muss in der Umsatzsteueraufschlüsselung (BG-23) mindestens einen Umsatzsteuerkategoriecode (BT-118) enthalten, der gleich „M“ („Steuer für Produktion, Dienstleistungen und Einfuhr in Ceuta und Melilla (IPSI)“) ist.

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

Enthält die Umsatzsteueraufschlüsselung in ApplicableHeaderTradeSettlement einen ApplicableTradeTax mit CategoryCode M, muss die Regel auch einen CategoryCode M in mindestens einem der geprüften ApplicableTradeTax, CategoryTradeTax oder AppliedTradeTax finden. Ein solcher Eintrag fehlt.

Was die Regel bedeutet

Der Code M bezeichnet die Steuerkategorie für Ceuta und Melilla. Die Umsatzsteueraufschlüsselung muss diese Kategorie konsistent mit den zugehörigen Steuerangaben ausweisen.

Bitte gleichen Sie die Umsatzsteueraufschlüsselung für `M` ab

Die Umsatzsteueraufschlüsselung enthält die Kategorie M, aber die geprüften Steuerangaben enthalten sie nicht. Sie können die Angaben in der Rechnung aufeinander abstimmen.

Was ist zu tun?
  1. Prüfen Sie die Steuerkategorie M in ApplicableTradeTax, CategoryTradeTax und AppliedTradeTax.
  2. Prüfen Sie die Zuordnung der Steuerangaben mit TaxCategoryCodes.
  3. Prüfen Sie, ob AddApplicableTradeTax(...) die Umsatzsteueraufschlüsselung passend abbildet.
  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)
  • AssociatedDocument.LineStatusReasonCode (BT-X-8)
  • FacturXInvoice.AddApplicableTradeTax(basisAmount, percent, taxAmount, typeCode, categoryCode, allowanceChargeBasisAmount, exemptionReasonCode, exemptionReason, lineTotalBasisAmount) (BG-23)
  • FacturXInvoice.AnyApplicableTradeTaxes() (BG-23)
  • FacturXInvoice.GetApplicableTradeTaxes() (BG-23)
Technische Details

Der Test besteht, wenn in keinem der geprüften Bereiche ein CategoryCode M vorkommt oder wenn ein ApplicableTradeTax mit CategoryCode M auf Dokumentenebene durch einen solchen Code in mindestens einem der geprüften Positions- oder Steuergruppenelemente ergänzt wird.

Wo die Regel greift

Die Regel gilt für die Umsatzsteueraufschlüsselung in ApplicableHeaderTradeSettlement und vergleicht sie mit ApplicableTradeTax auf Rechnungspositionen sowie mit CategoryTradeTax und AppliedTradeTax.

Originalmeldung aus dem Schematron
An Invoice that contains an Invoice line (BG-25) where the "Subtype of invoice line item" (BT-X-8) has the value "DETAIL" or is not specified, a Document level allowance (BG-20) or a Document level charge or tax (BG-21) or a Logistics Service Charge ( BG-X-42) where the VAT category code (BT-151, BT-95, BT-102, or BT-X-273) is “M” ("Ceuta and Mellita tax") shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with “M” ("Ceuta and Melilla tax").
Kontext (rule/@context)
/rsm:CrossIndustryInvoice
Prüfausdruck (assert/@test)
( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='M'])=0 and count(//ram:SpecifiedLineTradeSettlement[ not(ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode) or ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode = 'DETAIL' ]/ram:ApplicableTradeTax[ram:CategoryCode='M'])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode='M'])=0 and count(//ram:AppliedTradeTax[ram:CategoryCode='M'])=0 ) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='M'])>=1 and ( exists(//ram:SpecifiedLineTradeSettlement[ not(ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode) or ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode = 'DETAIL' ]/ram:ApplicableTradeTax[ram:CategoryCode='M']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='M']) or exists(//ram:AppliedTradeTax[ram:CategoryCode='M']) ) )