BR-01
fatalTechnischer Test (XPath)
normalize-space(rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID) != ''Schlagen Sie jede E-Rechnung-Validierungsregel anhand ihrer ID nach – was sie prüft, der technische Test, welche Formate sie erzwingen und wie Sie einen Verstoß beheben. Deckt den europäischen Kern EN 16931, PEPPOL BIS 3.0, XRechnung und nationale CIUS-Profile ab, erzeugt aus demselben Schematron, das unsere Validatoren ausführen.
Angezeigt240240Regeln
normalize-space(rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID) != ''Die Rechnungsnummer fehlt – jede Rechnung braucht eine eigene Nummer.
normalize-space(rsm:ExchangedDocument/ram:ID) != ''Das Rechnungsdatum fehlt.
normalize-space(rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format='102']) != ''normalize-space(rsm:ExchangedDocument/ram:TypeCode) != ''normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode) != ''Der Name des Verkäufers fehlt.
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name) != ''Der Name des Käufers fehlt.
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name) != ''rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddressnormalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID) != ''rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddressnormalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID) != ''(ram:LineTotalAmount)(ram:TaxBasisTotalAmount)(ram:GrandTotalAmount)(ram:DuePayableAmount)Die Rechnung hat keine Positionen – fügen Sie mindestens eine Rechnungsposition hinzu.
//ram:IncludedSupplyChainTradeLineItem(ram:Name) and (not(ram:Name = ../../ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name) and not(ram:ID = ../../ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID) and not(ram:SpecifiedLegalOrganization/ram:ID = ../../ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID))(ram:Name)(ram:PostalTradeAddress)(ram:PostalTradeAddress/ram:CountryID)normalize-space(ram:AssociatedDocumentLineDocument/ram:LineID) != ''(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity)(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity/@unitCode)(ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)Einer Rechnungsposition fehlt die Artikelbezeichnung – geben Sie in jeder Position an, was Sie berechnen.
normalize-space(ram:SpecifiedTradeProduct/ram:Name) != ''Einer Rechnungsposition fehlt der Nettopreis (der Preis pro Einheit ohne Umsatzsteuer).
(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount)Ein Artikelpreis ist negativ – geben Sie Preise positiv an und nutzen Sie für Minderungen einen Nachlass oder eine Gutschrift.
Gegen diese Regel validieren →(../ram:ActualAmount)(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode)(../ram:Reason) or (../ram:ReasonCode)(../ram:ActualAmount)(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode)(../ram:Reason) or (../ram:ReasonCode)(../ram:ActualAmount)(../ram:Reason) or (../ram:ReasonCode)(../ram:ActualAmount)(../ram:Reason) or (../ram:ReasonCode)(ram:BasisAmount)(ram:CalculatedAmount)(.[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode)(.[upper-case(ram:TypeCode) = 'VAT']/ram:RateApplicablePercent) or (.[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode = 'O')(ram:TypeCode)Es sind Überweisungsangaben vorhanden, aber die Kontonummer (IBAN) fehlt.
(ram:IBANID) or (ram:ProprietaryID)string-length(ram:ID)<=10normalize-space(ram:IssuerAssignedID) != ''not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) or (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and (ram:TaxTotalAmount/@currencyID = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode))(ram:Description) and (ram:Value)normalize-space(ram:IssuerAssignedID) != ''normalize-space(ram:SpecifiedTaxRegistration/ram:ID[@schemeID='VA']) != ''(ram:ShipToTradeParty/ram:PostalTradeAddress and normalize-space(ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID) != '') or not (ram:ShipToTradeParty/ram:PostalTradeAddress)Als Zahlungsart ist eine Überweisung angegeben, daher ist die Kontonummer (IBAN) des Zahlungsempfängers erforderlich.
(ram:IBANID) or (ram:ProprietaryID)Bei der elektronischen Adresse des Verkäufers fehlt das Schema – geben Sie an, welche Art von Kennung es ist (z. B. USt-IdNr. oder GLN).
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication[1]/ram:URIID/@schemeID) != '' or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication)Bei der elektronischen Adresse des Käufers fehlt das Schema – geben Sie an, welche Art von Kennung es ist (z. B. USt-IdNr. oder GLN).
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication[1]/ram:URIID/@schemeID) != '' or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication)normalize-space(ram:SpecifiedTradeProduct/ram:GlobalID/@schemeID) != '' or not (ram:SpecifiedTradeProduct/ram:GlobalID)normalize-space(ram:ClassCode/@listID) != '' or not (ram:ClassCode)(ram:ChargeIndicator)((//ram:TaxPointDate) and not(//ram:DueDateTypeCode)) or (not (//ram:TaxPointDate) and (//ram:DueDateTypeCode)) or (not (//ram:TaxPointDate) and not (//ram:DueDateTypeCode))Einer Rechnungsposition fehlt die Umsatzsteuerkategorie – z. B. S (Normalsatz), Z (Nullsatz), E (befreit) oder AE (Reverse Charge).
(ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode)true()true()true()true()Eine USt-IdNr. muss mit dem zweistelligen Ländercode beginnen, z. B. DE123456789 (Griechenland verwendet EL).
contains(' 1A AD AE AF AG AI AL AM AN AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BL BJ BM BN BO BQ BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ DE DJ DK DM DO DZ EC EE EG EH EL ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR ST SV SX SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS XI YE YT ZA ZM ZW ', concat(' ', substring(.,1,2), ' '))Die Summe der Positionsbeträge in der Rechnung stimmt nicht mit den addierten Positionsbeträgen überein – meist eine Rundungsdifferenz oder eine nachträglich geänderte Position.
xs:decimal(ram:LineTotalAmount) = round(xs:decimal(sum(../../ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)) * xs:decimal(100)) div xs:decimal(100)(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false()])and not (ram:AllowanceTotalAmount)) or ram:AllowanceTotalAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false()]/ram:ActualAmount)* 10 * 10 ) div 100)(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true()])and not (ram:ChargeTotalAmount)) or ram:ChargeTotalAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true()]/ram:ActualAmount)* 10 * 10 ) div 100)Der Gesamtbetrag ohne Umsatzsteuer muss der Summe der Positionen abzüglich Nachlässen und zuzüglich Zuschlägen auf Belegebene entsprechen.
(xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100) or ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount)) *10 * 10) div 100) and not (ram:ChargeTotalAmount)) or ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100) and not (ram:AllowanceTotalAmount)) or ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount)) *10 * 10) div 100) and not (ram:ChargeTotalAmount) and not (ram:AllowanceTotalAmount))Der Gesamtbetrag mit Umsatzsteuer muss dem Betrag ohne Umsatzsteuer zuzüglich des Umsatzsteuerbetrags entsprechen.
every $Currency in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode satisfies ( count ( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=$Currency] ) eq 1 and (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = round( (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount) + (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxTotalAmount[@currencyID=$Currency]))) * 10 * 10) div 100)) or (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount)))Der fällige Betrag muss dem Gesamtbetrag mit Umsatzsteuer abzüglich bereits gezahlter Beträge zuzüglich des Rundungsbetrags entsprechen.
(xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount) + xs:decimal(ram:RoundingAmount)) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) + xs:decimal(ram:RoundingAmount)) and not (xs:decimal(ram:TotalPrepaidAmount))) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount))) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount)) and not (xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount)))Ein Steuerbetrag in der Umsatzsteueraufschlüsselung entspricht nicht Bemessungsgrundlage × Steuersatz, auf zwei Nachkommastellen gerundet.
Gegen diese Regel validieren →Die Rechnung hat keine Umsatzsteueraufschlüsselung – mindestens eine Steuergruppe (Kategorie, Satz, Bemessungsgrundlage, Steuer) ist nötig, auch bei 0 %.
//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax(../ram:Reason) or (../ram:ReasonCode)(../ram:Reason) or (../ram:ReasonCode)Es ist ein Betrag fällig, daher braucht die Rechnung ein Fälligkeitsdatum oder Zahlungsbedingungen.
Gegen diese Regel validieren →(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='AE'])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='AE'])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode='AE'])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='AE'])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='AE']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='AE'])))Es wird Reverse Charge verwendet, daher müssen beide Parteien steuerlich angegeben sein: die USt-IdNr. (oder Steuernummer) des Verkäufers und die USt-IdNr. (oder Registernummer) des Käufers.
(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = ('VA', 'FC')] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA']) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA'] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)ram:RateApplicablePercent = 0../ram:CalculatedAmount = 0Eine Steuergruppe mit Reverse Charge braucht einen Befreiungsgrund – den Code VATEX-EU-AE oder den Text „Reverse charge“.
(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='E'])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='E'])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode='E'])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='E'])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='E']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='E'])))/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = ('VA', 'FC')] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA'](count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='G'])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='G'])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode='G'])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='G'])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='G']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='G'])))(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA'] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA'])(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='K'])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='K'])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode='K'])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='K'])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='K']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='K'])))(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA'] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA']) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA']not(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='O']) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='O'])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='O']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='O'])))Ein Teil der Rechnung nutzt den Normalsatz (Kategorie S), aber die Umsatzsteueraufschlüsselung enthält keinen Eintrag dafür.
Gegen diese Regel validieren →Es wird der Normalsatz verwendet, daher muss die USt-IdNr. (oder Steuernummer) des Verkäufers auf der Rechnung stehen.
/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = ('VA', 'FC')] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA'](count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='Z'])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='Z'])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode='Z'])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='Z'])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='Z']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='Z'])))/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = ('VA', 'FC')] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA']string-length(substring-after(../ram:ActualAmount,'.'))<=2string-length(substring-after(../ram:BasisAmount,'.'))<=2string-length(substring-after(../ram:ActualAmount,'.'))<=2string-length(substring-after(../ram:BasisAmount,'.'))<=2string-length(substring-after(ram:LineTotalAmount,'.'))<=2string-length(substring-after(ram:AllowanceTotalAmount,'.'))<=2string-length(substring-after(ram:ChargeTotalAmount,'.'))<=2string-length(substring-after(ram:TaxBasisTotalAmount,'.'))<=2not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode and . = round(. * 100) div 100) or not (@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode)]string-length(substring-after(ram:GrandTotalAmount,'.'))<=2not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and . = round(. * 100) div 100) or not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode)]string-length(substring-after(ram:TotalPrepaidAmount,'.'))<=2string-length(substring-after(ram:RoundingAmount,'.'))<=2string-length(substring-after(ram:DuePayableAmount,'.'))<=2matches(normalize-space(), '^[0-9]+$') and u:gln(normalize-space())matches(normalize-space(), '^[0-9]{9}$') and u:mod11(normalize-space())(string-length(string()) = 10 and substring(string(), 1, 2) = 'DK' and string-length(translate(substring(string(), 3, 8), '1234567890', '')) = 0) or (string-length(string()) = 8) and (string-length(translate(substring(string(), 1, 8),'1234567890', '')) = 0)matches(normalize-space(), '^[0-9]{10}$') and u:mod97-0208(normalize-space())u:checkCodiceIPA(normalize-space())u:checkCF(normalize-space())u:checkCF(normalize-space())u:checkPIVAseIT(normalize-space())u:checkPIVAseIT(normalize-space())string-length(normalize-space()) = 10 and string(number(normalize-space())) != 'NaN' and u:checkSEOrgnr(normalize-space())matches(normalize-space(), '^[0-9]{11}$') and u:abn(normalize-space())Die Geschäftsprozesskennung (ProfileID) fehlt – für eine normale PEPPOL-Rechnung lautet sie urn:fdc:peppol.eu:2017:poacc:billing:01:1.0.
cbc:ProfileIDcount(cbc:Note) <= 1 or ($supplierCountryIsDE and $customerCountryIsDE)Die Rechnung braucht eine Käuferreferenz oder eine Bestellnummer – fragen Sie Ihren Kunden, welche er verwendet.
cbc:BuyerReference or cac:OrderReference/cbc:IDDie Spezifikationskennung (CustomizationID) ist nicht die von PEPPOL BIS 3.0 – die Datei wurde womöglich für ein anderes Format erstellt.
starts-with(normalize-space(cbc:CustomizationID/text()), 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0')not(normalize-space(text()) = normalize-space(../cbc:DocumentCurrencyCode/text()))$profile != 'Unknown'Das Dokument enthält ein leeres Element – ein XML-Tag ohne Wert. Füllen Sie das Feld aus oder entfernen Sie es, statt es leer zu lassen.
false()Die elektronische Adresse des Käufers (Peppol-ID) fehlt – an sie wird die Rechnung im Peppol-Netzwerk zugestellt.
cbc:EndpointIDDie elektronische Adresse des Verkäufers (Peppol-ID) fehlt.
cbc:EndpointIDfalse()false()normalize-space(cbc:ChargeIndicator/text()) = 'true' or normalize-space(cbc:ChargeIndicator/text()) = 'false'normalize-space(cbc:ChargeIndicator) = 'false'Wenn ein Bruttopreis angegeben ist, muss der Nettopreis dem Bruttopreis abzüglich des Preisnachlasses entsprechen.
not(cbc:BaseAmount) or xs:decimal(../cbc:PriceAmount) = xs:decimal(cbc:BaseAmount) - xs:decimal(cbc:Amount)Ein Betrag hat eine andere Währung als die Rechnung – alle Beträge müssen in der Rechnungswährung stehen (nur die Umsatzsteuer in Buchungswährung darf abweichen).
@currencyID = $documentCurrencyCodeEs muss genau eine Umsatzsteuersumme mit Aufschlüsselung in der Rechnungswährung geben.
count(cac:TaxTotal[cac:TaxSubtotal]) = 1count(cac:TaxTotal[not(cac:TaxSubtotal)]) = (if (cbc:TaxCurrencyCode) then 1 else 0)not(cbc:TaxCurrencyCode) or (cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:TaxCurrencyCode)] <= 0 and cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:DocumentCurrencyCode)] <= 0) or (cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:TaxCurrencyCode)] >= 0 and cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:DocumentCurrencyCode)] >= 0)cac:PaymentMandate/cbc:ID(count(cac:AdditionalDocumentReference[cbc:DocumentTypeCode='50']) <= 1)(count(cac:DocumentReference) <= 1)(not(cac:DocumentReference) or (cac:DocumentReference/cbc:DocumentTypeCode='130'))Der Zeitraum einer Position beginnt vor dem Rechnungszeitraum – Positionszeiträume müssen innerhalb davon liegen.
xs:date(text()) >= xs:date(../../../cac:InvoicePeriod/cbc:StartDate)Der Zeitraum einer Position endet nach dem Rechnungszeitraum – Positionszeiträume müssen innerhalb davon liegen.
xs:date(text()) <= xs:date(../../../cac:InvoicePeriod/cbc:EndDate)Der Nettobetrag einer Position entspricht nicht Menge × Nettopreis (geteilt durch die Preisbasismenge) zuzüglich Zuschlägen und abzüglich Nachlässen der Position.
u:slack($lineExtensionAmount, ($quantity * ($priceAmount div $baseQuantity)) + $chargesTotal - $allowancesTotal, 0.02)Die Preisbasismenge muss größer als null sein – meist 1.
not(cac:Price/cbc:BaseQuantity) or xs:decimal(cac:Price/cbc:BaseQuantity) > 0Die Preisbasismenge hat eine andere Einheit als die berechnete Menge – verwenden Sie für beide denselben Einheitencode.
not($hasQuantity) or @unitCode = $quantity/@unitCodeXRechnung verlangt Zahlungsanweisungen – geben Sie die Zahlungsart (z. B. Überweisung) mit Ihren Kontodaten an.
rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeansXRechnung verlangt einen Ansprechpartner des Verkäufers – Person oder Abteilung, Telefonnummer und E-Mail-Adresse.
ram:DefinedTradeContactram:CityName[boolean(normalize-space(.))]ram:PostcodeCode[boolean(normalize-space(.))](ram:PersonName,ram:DepartmentName)[boolean(normalize-space(.))]ram:TelephoneUniversalCommunication/ram:CompleteNumber[boolean(normalize-space(.))]ram:EmailURIUniversalCommunication/ram:URIID[boolean(normalize-space(.))]ram:CityName[boolean(normalize-space(.))]ram:PostcodeCode[boolean(normalize-space(.))]ram:CityName[boolean(normalize-space(.))]ram:PostcodeCode[boolean(normalize-space(.))]ram:RateApplicablePercent[boolean(normalize-space(.))]Die Käuferreferenz fehlt – bei Rechnungen an die öffentliche Hand ist das die Leitweg-ID, die Ihnen die Behörde mitgeteilt hat.
rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[boolean(normalize-space(.))]Bei diesen Umsatzsteuerkategorien muss die USt-IdNr., die Steuernummer oder der Steuervertreter des Verkäufers angegeben sein.
not((rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode = 'VAT' and rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M')) or (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax = 'VAT' and rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M')) or (rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode = 'VAT' and rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M'))) or ((rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID='VA' or @schemeID='FC'][boolean(normalize-space(.))], rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty))rsm:ExchangedDocument/ram:TypeCode = ('326', '380', '384', '389', '381', '875', '876', '877')every $line in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description[1]/tokenize(. , '(\r?\n)')[starts-with( normalize-space(.) , '#')] satisfies matches ( normalize-space ($line), $XR-SKONTO-REGEX ) and matches( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description[1]/tokenize(. , '#.+#')[last()], '^\s*\n' )Bei einer SEPA-Überweisung muss die Kontonummer eine gültige IBAN sein.
not(ram:TypeCode = '58') or matches(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')), '^[A-Z]{2}[0-9]{2}[a-zA-Z0-9]{0,30}$') and xs:integer(string-join(for $cp in string-to-codepoints(concat(substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),5),upper-case(substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),1,2)),substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),3,2))) return (if($cp > 64) then string($cp - 55) else string($cp - 48)),'')) mod 97 = 1not(ram:TypeCode = '59') or matches(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')), '^[A-Z]{2}[0-9]{2}[a-zA-Z0-9]{0,30}$') and xs:decimal(string-join(for $cp in string-to-codepoints(concat(substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),5),upper-case(substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),1,2)),substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),3,2))) return (if($cp > 64) then string($cp - 55) else string($cp - 48)),'')) mod 97 = 1ram:GuidelineSpecifiedDocumentContextParameter/ram:ID = $XR-CIUS-ID or ram:GuidelineSpecifiedDocumentContextParameter/ram:ID = $XR-EXTENSION-IDcount(//ram:AdditionalReferencedDocument) = count(//ram:AdditionalReferencedDocument[not(./ram:AttachmentBinaryObject/@filename = preceding-sibling::ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject/@filename)])ram:PayeePartyCreditorFinancialAccountnot(ram:ApplicableTradeSettlementFinancialCard) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID)ram:ApplicableTradeSettlementFinancialCardnot(ram:PayeePartyCreditorFinancialAccount) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID)/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANIDnot(ram:PayeePartyCreditorFinancialAccount) and not(ram:ApplicableTradeSettlementFinancialCard)not(rsm:ExchangedDocument/ram:TypeCode = 384) or (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument)matches(normalize-space(ram:TelephoneUniversalCommunication/ram:CompleteNumber), $XR-TELEPHONE-REGEX)matches(normalize-space(ram:EmailURIUniversalCommunication/ram:URIID), $XR-EMAIL-REGEX)(($BT-89-path or $BT-91-path) and $BT-90-path) or $BG-19-not-existing(($BT-89-path or $BT-90-path) and $BT-91-path) or $BG-19-not-existing(normalize-space(cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID/text()) != '')not((cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode/@listID = 'TST') and not((cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode/@listVersionID = '19.05.01') or (cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode/@listVersionID = '19.0501') or (cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode/@listVersionID = '26.08.01') or (cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode/@listVersionID = '26.0801') ) )not((cbc:AllowanceChargeReasonCode = 'ZZZ') and not(((string-length(normalize-space(cbc:AllowanceChargeReason/text())) = 4) and (number(cbc:AllowanceChargeReason) >= 0) and (number(cbc:AllowanceChargeReason) <= 9999)) or (((cbc:AllowanceChargeReason and contains(cbc:AllowanceChargeReason, '#') and not(starts-with(cbc:AllowanceChargeReason, '#')) and not(ends-with(cbc:AllowanceChargeReason, '#')))) ) ) )contains(' 1 10 31 42 48 49 50 58 59 93 97 ', concat(' ', cbc:PaymentMeansCode, ' '))not(((cbc:PaymentMeansCode = '31') or (cbc:PaymentMeansCode = '42')) and not((normalize-space(cac:PayeeFinancialAccount/cbc:ID/text()) != '') and (normalize-space(cac:PayeeFinancialAccount/cac:FinancialInstitutionBranch/cbc:ID/text()) != '')) )not((cbc:PaymentMeansCode = '49') and not((normalize-space(cac:PaymentMandate/cbc:ID/text()) != '') and (normalize-space(cac:PaymentMandate/cac:PayerFinancialAccount/cbc:ID/text()) != '')) )not((cbc:PaymentMeansCode = '50') and not(((substring(cbc:PaymentID, 1, 3) = '01#') or (substring(cbc:PaymentID, 1, 3) = '04#') or (substring(cbc:PaymentID, 1, 3) = '15#')) and matches(cac:PayeeFinancialAccount/cbc:ID, '^[0-9]{7,8}$') ) )not((cbc:PaymentMeansCode = '50') and ((substring(cbc:PaymentID, 1, 3) = '04#') or (substring(cbc:PaymentID, 1, 3) = '15#')) and not(string-length(cbc:PaymentID) = 19) )not((cbc:PaymentMeansCode = '93') and not(((substring(cbc:PaymentID, 1, 3) = '71#') or (substring(cbc:PaymentID, 1, 3) = '73#') or (substring(cbc:PaymentID, 1, 3) = '75#')) and (string-length(cac:PayeeFinancialAccount/cbc:ID/text()) = 8) ) )not((cbc:PaymentMeansCode = '93') and ((substring(cbc:PaymentID, 1, 3) = '71#') or (substring(cbc:PaymentID, 1, 3) = '75#')) and not((string-length(cbc:PaymentID) = 18) or (string-length(cbc:PaymentID) = 19)) )not((boolean(cbc:ID)) and (normalize-space(cbc:ID/@schemeID) = '') )not(((boolean(cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID)) and (normalize-space(cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID/@schemeID) != '0184')) )not((boolean(/ubl-creditnote:CreditNote) and ($DKCustomerCountry = 'DK')) and (number(cac:LegalMonetaryTotal/cbc:PayableAmount/text()) < 0) )count($IdSegments) = 6string-length(normalize-space($IdSegments[1])) = 9 and u:TinVerification($IdSegments[1]) and ($IdSegments[1] = /*/cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme[cac:TaxScheme/cbc:ID = 'VAT']/substring(cbc:CompanyID, 3, 9) or $IdSegments[1] = /*/cac:TaxRepresentativeParty/cac:PartyTaxScheme[cac:TaxScheme/cbc:ID = 'VAT']/substring(cbc:CompanyID, 3, 9) )substring(.,1,2) = 'EL' and u:TinVerification(substring(.,3))count(cac:AdditionalDocumentReference[cbc:DocumentDescription = '##M.AR.K##'])=1matches(.,'^[1-9]([0-9]*)')count(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/cbc:CompanyID)=1 and substring(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/cbc:CompanyID,1,2) = 'EL' and u:TinVerification(substring(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/cbc:CompanyID,3))(count(cac:AdditionalDocumentReference[cbc:DocumentDescription = '##INVOICE|URL##']) = 0 ) or (count(cac:AdditionalDocumentReference[cbc:DocumentDescription = '##INVOICE|URL##']) = 1 )./@schemeID='9933' and u:TinVerification(.)./@schemeID='9933' and u:TinVerification(.)exists(cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID) and cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID/@schemeID = '0196'exists(cac:AccountingSupplierParty/cac:Party/cac:PostalAddress/cbc:StreetName) and exists(cac:AccountingSupplierParty/cac:Party/cac:PostalAddress/cbc:PostalZone)exists(cac:Party/cac:PartyLegalEntity/cbc:CompanyID) and cac:Party/cac:PartyLegalEntity/cbc:CompanyID/@schemeID = '0196'exists(cac:Party/cac:PostalAddress/cbc:StreetName) and exists(cac:Party/cac:PostalAddress/cbc:PostalZone)exists(cac:PaymentMeans[cbc:PaymentMeansCode = '9']/cac:PayeeFinancialAccount/cbc:ID) and string-length(normalize-space(cac:PaymentMeans[cbc:PaymentMeansCode = '9']/cac:PayeeFinancialAccount/cbc:ID)) = 12 or not(exists(cac:PaymentMeans[cbc:PaymentMeansCode = '9']))exists(cac:PaymentMeans[cbc:PaymentMeansCode = '42']/cac:PayeeFinancialAccount/cbc:ID) and string-length(normalize-space(cac:PaymentMeans[cbc:PaymentMeansCode = '42']/cac:PayeeFinancialAccount/cbc:ID)) = 12 or not(exists(cac:PaymentMeans[cbc:PaymentMeansCode = '42']))matches(normalize-space(cbc:CompanyID),'^[A-Z0-9]{11,16}$')cac:PostalAddress/cbc:StreetNamecac:PostalAddress/cbc:CityNamecac:PostalAddress/cbc:PostalZone/*/cac:BillingReference/cac:InvoiceDocumentReference/cbc:IDcbc:StreetName and cbc:CityName and cbc:PostalZone(contains(concat(' ', string-join(@schemeID, ' '), ' '), ' 0106 ') or contains(concat(' ', string-join(@schemeID, ' '), ' '), ' 0190 ')) and (normalize-space(.) != '')cbc:StreetName and cbc:CityName and cbc:PostalZone(contains(concat(' ', string-join(@schemeID, ' '), ' '), ' 0106 ') or contains(concat(' ', string-join(@schemeID, ' '), ' '), ' 0190 ')) and (normalize-space(.) != '')cbc:StreetName and cbc:CityName and cbc:PostalZone(/ubl-invoice:Invoice and xs:decimal(cbc:PayableAmount) <= 0.0) or (/ubl-creditnote:CreditNote and xs:decimal(cbc:PayableAmount) >= 0.0) or (//cac:PaymentMeans)normalize-space(cbc:PaymentMeansCode) = '30' or normalize-space(cbc:PaymentMeansCode) = '48' or normalize-space(cbc:PaymentMeansCode) = '49' or normalize-space(cbc:PaymentMeansCode) = '57' or normalize-space(cbc:PaymentMeansCode) = '58' or normalize-space(cbc:PaymentMeansCode) = '59'exists(/*/cac:OrderReference/cbc:ID)cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/substring(cbc:CompanyID, 1, 2)='NO' and matches(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/substring(cbc:CompanyID,3), '^[0-9]{9}MVA$') and u:mod11(substring(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/cbc:CompanyID, 3, 9)) or not(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/substring(cbc:CompanyID, 1, 2)='NO')normalize-space(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'TAX']/cbc:CompanyID) = 'Foretaksregisteret'string-length(normalize-space(cac:PartyTaxScheme[cac:TaxScheme/cbc:ID = 'VAT']/cbc:CompanyID)) = 14string(number(substring(cac:PartyTaxScheme[cac:TaxScheme/cbc:ID = 'VAT']/cbc:CompanyID, 3, 12))) != 'NaN'string(number(cbc:CompanyID)) != 'NaN'string-length(normalize-space(cbc:CompanyID)) = 10normalize-space(upper-case(.)) = 'GODKÄND FÖR F-SKATT'number(cbc:Percent) = 25 or number(cbc:Percent) = 12 or number(cbc:Percent) = 6string(number(normalize-space(.))) != 'NaN'string(number(normalize-space(.))) != 'NaN'string-length(normalize-space(.)) = 7 or string-length(normalize-space(.)) = 8string-length(normalize-space(.)) >= 2 and string-length(normalize-space(.)) <= 8false()false()u:checkSEOrgnr(normalize-space(cbc:CompanyID))Es ist eine Geschäftsregel (gekennzeichnet durch einen Code wie BR-CO-13 oder PEPPOL-EN16931-R008), die eine E-Rechnung erfüllen muss, um nach dem europäischen Standard EN 16931 oder einer nationalen CIUS wie PEPPOL BIS 3.0 oder XRechnung gültig zu sein. Validatoren führen diese als Schematron formulierten Regeln gegen die Rechnungs-XML aus.
Eine fatale Regel muss erfüllt sein, sonst wird die Rechnung vom Empfänger abgelehnt. Eine Warnung weist auf einen wahrscheinlichen Fehler hin, blockiert die Rechnung aber nicht. Die meisten BR-*- und PEPPOL-*-Regeln sind fatal; einige wenige sind Warnungen.
Lesen Sie die Regelmeldung – sie nennt genau, welche Geschäftsbegriffe (BT-/BG-Codes) vorhanden sein oder sich summieren müssen. Korrigieren Sie diese Felder in Ihrer Rechnung und validieren Sie erneut. aiDoks zeigt für jede hochgeladene Rechnung die fehlgeschlagene Regel-ID und -Meldung an.
EN 16931 ist der gemeinsame Kern. PEPPOL BIS 3.0, XRechnung, Factur-X/ZUGFeRD und nationale CIUS-Profile (Deutschland, Dänemark, Schweden, Italien, die Niederlande und andere) ergänzen ihre eigenen Regeln. Diese Seite deckt sie alle ab.
Keine Sorge – diese Seite hebt die häufigsten Regeln hervor, aber unser Validator prüft Ihre Rechnung immer gegen den vollständigen Regelsatz (jede EN-16931-, PEPPOL-, XRechnung- und Factur-X-Regel, einschließlich der hier nicht aufgeführten Syntax- und Codelisten-Prüfungen). Laden Sie Ihre Rechnung hoch und Sie erhalten jede zutreffende Regel – ob auf dieser Seite gelistet oder nicht.
Laden Sie Ihre UBL-, CII- oder Factur-X-Rechnung hoch und aiDoks meldet jede fehlgeschlagene Regel mit ID und Meldung – kostenlos, ohne Anmeldung.