Bitte beachten Sie, dass die verwendeten Funktionalitäten zwingend mind. die Version 4.14 des Document Processor CORE voraussetzen.
Die "E-Rechnung Prozesslogik" ist in den Eingangsrechnungsworkflows der Upload24 die Grundlage für die Auslesung und Darstellung (Visualisierung) von ZUGFeRD- und XRechnung-Belegen. Sie wird als externe Projektdatei bereitgestellt, sodass sie in bestehende Prozesse eingebunden und sehr einfach aktualisiert werden kann. Neben der Erkennung der zulässigen Formate bietet die Projektdatei auch die Logiken zur Validierung, Auslesung und Visualisierung.
Bitte beachten Sie, dass die Verarbeitung über den Document Processor CORE stattfindet und hierfür die notwendigen Module für die E-Rechnungen lizenziert sein müssen.
Dieser Artikel stellt dar, wie und unter welchen Voraussetzungen die E-Rechnung Prozesslogik in den Workflows eingebunden wird.
INHALTSVERZEICHNIS
Änderungen
- Fehler behoben: Die Erkennung von XRechnungen im CII-Standard berücksichtigte noch nicht die factur-x Variante.
Die zulässigen Formate orientieren sich aktuell an den in Deutschland geltenden gesetzlichen Vorgaben. Dies bedeutet, dass ZUGFeRD- und XRechnung-Belege ab einer bestimmten Version zulässig sind:
- ZUGFeRD 2.1.x
- ZUGFeRD 2.2.x
- ZUGFeRD 2.3.x
- XRechnung 2.0.x UBL (Universal Business Language) + CII (Cross Industry Invoice)
- XRechnung 3.0.x UBL (Universal Business Language) + CII (Cross Industry Invoice)
Nachfolgende Versionen der genannten Formate werden mit hoher Wahrscheinlichkeit abwärtskompatibel gehalten, sodass sie auch mit dieser aktuellen Version der "E-Rechnung Prozesslogik" korrekt verarbeitet werden können. Vorherige Versionen werden von der Logik allerdings nicht akzeptiert. Dies führt dazu, dass ZUGFeRD-Belege vor der Version 2.1 als einfache PDF-Belege ausgelesen und verarbeitet werden. X-Rechnungen vor der Version 3.0 werden nicht in den Workflow laufen.
Das grundlegende Vorgehen
Wenn E-Rechnungen in den zulässigen Formaten in die Verarbeitungsprozesse laufen, werden im ersten Schritt alle zu einem Vorgang (z.B. eine E-Mail) gehörenden Dateien durchlaufen und auf eine E-Rechnung geprüft. Dies erfolgt für ZUGFeRD-Belege anhand der notwendigen Kriterien und Informationen der PDF-Datei und über die Validierung der eingebetteten XML-Datei. Für X-Rechnungen erfolgt die Prüfung auf Basis der entsprechenden XML-Datei.
Wenn die Vorgänge per E-Mail eingehen, wird die Beschränkung auf eine Rechnung pro E-Mail empfohlen. Eine Zuordnung weiterer möglicher Anlagen der E-Mail zu mehreren Rechnungen ist technisch nicht möglich.
Nachdem eine Datei als E-Rechnung erkannt wurde, werden die enthaltenen Datenfelder zielgerichtet ausgelesen. In einem Folgepunkt dieses Artikel ist aufgeführt, welche Felder konkret in dieser Version der "E-Rechnung Prozesslogik" berücksichtigt werden.
Sollten Daten aufgeführt sein, die in Ihrem Workflow nicht aktiv verwendet werden, muss der Prozess für die Belegauslesung vermutlich noch um die Zuordnung zu den gewünschten Attributen ergänzt werden. Bitte nehmen Sie hierfür Kontakt zu Ihrem zuständigen Partner auf.
In den XML-Daten können auch Dateien als Anhänge enthalten sein. Diese werden als zusätzliche Anlagen im Workflow angefügt. Dabei handelt sich in den meisten Fällen um Abliefernachweise o.ä.
Teilweise liefern Rechnungssteller aus unbekannten Gründen die eigentliche Rechnung als Anhang im XML-Dokument einer ZUGFeRD-Rechnung mit. Auch dieser doppelte Beleg wird als Anlage im Workflow angefügt, da diese "Dublette" nicht erkannt werden kann.
Abschließend wird eine sogenannte Visualisierung der XML-Daten generiert. Dafür werden alle ausgelesenen Daten in einer neu erzeugten PDF-Datei über ein standardisiertes Layout zur Ansicht gebracht. Bitte beachten Sie zum Handling im Eingangsrechnungsworkflow folgende Unterscheidung:
- Sofern Ihr Workflow auf der aktuellen technischen Basis aufgebaut wurde, wird die Visualisierung als zusätzlicher Dokumenttyp in die Aufgaben eingefügt. Der Originalbeleg (PDF oder XML) bleibt dem Dokumenttyp "Beleg" zugeordnet, sodass sich für die Anwender nichts ändert. Allerdings wird für E-Rechnungen immer die Visualisierung mit der Aufgabe geöffnet, nicht die E-Rechnung selbst. Der Originalbeleg steht Ihnen aber immer für eine manuelle Auswahl zur Verfügung.
- Für ältere Workflows gilt ein etwas anderes Verfahren. In diesen Fällen wird die Visualisierung zum "Beleg", wogegen der Originalbeleg mit einem Präfix "E-Rechnung" in die Liste der Anlagen verschoben wird. Dieser Schritt ist aus technischen Gründen notwendig. Aber auch über dieses Vorgehen haben Sie immer Zugriff auf die Visualisierung sowie auf den Originalbeleg im PDF- oder XML-Format. Auch in der Archivierung sind selbstverständlich beide Belege berücksichtigt.
Die Visualisierung ist zwingend notwendig für XRechnungen, damit diese über die Darstellung sinnvoll zu prüfen sind. Wir haben uns allerdings dafür entschieden, auch die ZUGFeRD-Belege in eine Visualisierung zu bringen. Für diese Entscheidung war maßgeblich, dass in beiden E-Rechnungsformaten immer die XML-Datei die rechtlich relevante Datei ist. Im Falle einer Wirtschafts- oder Steuerprüfung ist zu erwarten, dass diese Datei Basis der Prüfung sein wird. Über die Visualisierung lassen sich eventuelle Abweichungen zwischen PDF und XML einfacher erkennen.
Die ausgelesenen Datenfelder
Kopfdaten Verkäufer
Bezeichnung | Datenpfad |
Verkäufer Name | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:SellerTradeParty
- ram:Name
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:SellerTradeParty
- ram:Name
XRechnung UBL: - cac:AccountingSupplierParty
- cac:Party
- cac:PartyName\cbc:Name ODER cac:PartyLegalEntity\cbc:RegistrationName
|
Verkäufer Ansprechpartner | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:SellerTradeParty
- ram:DefinedTradeContact
- ram:PersonName
XRechnung CII:
XRechnung UBL:
|
Verkäufer Straße | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:SellerTradeParty
- ram:PostalTradeAddress
- ram:LineOne + ram:LineTwo
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:SellerTradeParty
- ram:PostalTradeAddress
- ram:LineOne + ram:LineTwo
XRechnung UBL:
- cac:AccountingSupplierParty
- cac:Party
- cac:PostalAddress
- cbc:StreetName
|
Verkäufer PLZ | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:SellerTradeParty
- ram:PostalTradeAddress
- ram:PostcodeCode
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:SellerTradeParty
- ram:PostalTradeAddress
- ram:PostcodeCode
XRechnung UBL:
- cac:AccountingSupplierParty
- cac:Party
- cac:PostalAddress
- cbc:PostalZone
|
Verkäufer Ort | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:SellerTradeParty
- ram:PostalTradeAddress
- ram:CityName
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:SellerTradeParty
- ram:PostalTradeAddress
- ram:CityName
XRechnung UBL:
- cac:AccountingSupplierParty
- cac:Party
- cac:PostalAddress
- cbc:CityName
|
Verkäufer Land | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:SellerTradeParty
- ram:PostalTradeAddress
- ram:CountryID
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:SellerTradeParty
- ram:PostalTradeAddress
- ram:CountryID
XRechnung UBL:
- cac:AccountingSupplierParty
- cac:Party
- cac:PostalAddress
- cac:Country
- cbc:IdentificationCode
|
Verkäufer UstID | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:SellerTradeParty
- ram:SpecifiedTaxRegistration
- ram:ID
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:SellerTradeParty
- ram:SpecifiedTaxRegistration
- ram:ID
XRechnung UBL:
- cac:AccountingSupplierParty
- cac:Party
- cac:PartyTaxScheme
- cbc:CompanyID
|
Verkäufer IBAN | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:SpecifiedTradeSettlementPaymentMeans
- ram:PayeePartyCreditorFinancialAccount
- ram:IBANID
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:SpecifiedTradeSettlementPaymentMeans
- ram:PayeePartyCreditorFinancialAccount
- ram:IBANID
XRechnung UBL:
- cac:PaymentMeans
- cac:PayeeFinancialAccount\cbc:ID ODER cac:PaymentMandate\cac:PayerFinancialAccount\cbc:ID
|
Kopfdaten Käufer
Bezeichnung | Datenpfad ZUGFeRD |
Käufer Name | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:BuyerTradeParty
- ram:Name
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:BuyerTradeParty
- ram:Name
XRechnung UBL:
- cac:AccountingCustomerParty
- cac:Party
- cbc:RegistrationName
|
Käufer Straße | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:BuyerTradeParty
- ram:PostalTradeAddress
- ram:LineOne + ram:LineTwo
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:BuyerTradeParty
- ram:PostalTradeAddress
- ram:LineOne + ram:LineTwo
XRechnung UBL:
- cac:AccountingCustomerParty
- cac:Party
- cac:PostalAddress
- cbc:StreetName
|
Käufer PLZ | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:BuyerTradeParty
- ram:PostalTradeAddress
- ram:PostcodeCode
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:BuyerTradeParty
- ram:PostalTradeAddress
- ram:PostcodeCode
XRechnung UBL:
- cac:AccountingCustomerParty
- cac:Party
- cac:PostalAddress
- cbc:PostalZone
|
Käufer Ort | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:BuyerTradeParty
- ram:PostalTradeAddress
- ram:CityName
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:BuyerTradeParty
- ram:PostalTradeAddress
- ram:CityName
XRechnung UBL:
- cac:AccountingCustomerParty
- cac:Party
- cac:PostalAddress
- cbc:CityName
|
Käufer Land | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:BuyerTradeParty
- ram:PostalTradeAddress
- ram:CountryID
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeAgreement
- ram:BuyerTradeParty
- ram:PostalTradeAddress
- ram:CountryID
XRechnung UBL:
- cac:AccountingCustomerParty
- cac:Party
- cac:PostalAddress
- cac:Country
- cbc:IdentificationCode
|
Belegkopfdaten
Bezeichnung | Datenpfad ZUGFeRD |
Belegtyp | ZUGFeRD:
XRechnung CII: XRechnung UBL:
|
Belegnummer | ZUGFeRD:
XRechnung CII: XRechnung UBL:
|
Belegdatum | ZUGFeRD:
XRechnung CII: XRechnung UBL:
|
Leistungsdatum | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeDelivery
- ram:ActualDeliverySupplyChainEvent
- ram:OccurrenceDateTime
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeDelivery
- ram:ActualDeliverySupplyChainEvent
- ram:OccurrenceDateTime
XRechnung UBL:
- cac:Delivery
- cbc:ActualDeliveryDate
|
Fälligkeitsdatum | wird aktuell nur übernommen, wenn keine Skontoangabe vorhanden ist
ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:SpecifiedTradePaymentTerms
- ram:DueDateDateTime
XRechnung CII:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:SpecifiedTradePaymentTerms
- ram:DueDateDateTime
XRechnung UBL: |
Bestellnummer | ZUGFeRD:- ram:BuyerOrderReferencedDocument
- ram:IssuerAssignedID
XRechnung CII: - ram:BuyerOrderReferencedDocument
- ram:IssuerAssignedID
XRechnung UBL:
|
Bestelldatum | ZUGFeRD: - ram:BuyerOrderReferencedDocument
- ram:FormattedIssueDateTime
XRechnung CII: - ram:BuyerOrderReferencedDocument
- ram:FormattedIssueDateTime
XRechnung UBL:
|
Auftragsnummer | ZUGFeRD:- ram:SellerOrderReferencedDocument
- ram:IssuerAssignedID
XRechnung CII: - ram:SellerOrderReferencedDocument
- ram:IssuerAssignedID
XRechnung UBL:
|
Auftragsdatum | ZUGFeRD:- ram:SellerOrderReferencedDocument
- ram:FormattedIssueDateTime
XRechnung CII: - ram:SellerOrderReferencedDocument
- ram:FormattedIssueDateTime
XRechnung UBL:
|
Artikelzeilen
Bezeichnung | Datenpfad ZUGFeRD |
Pos | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:IncludedSupplyChainTradeLineItem (1...n)
- ram:AssociatedDocumentLineDocument
- ram:LineID
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:IncludedSupplyChainTradeLineItem (1...n)
- ram:AssociatedDocumentLineDocument
- ram:LineID
XRechnung UBL:
|
Bezeichnung | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:IncludedSupplyChainTradeLineItem (1...n)
- ram:SpecifiedTradeProduct
- ram:Name
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:IncludedSupplyChainTradeLineItem (1...n)
- ram:SpecifiedTradeProduct
- ram:Name
XRechnung UBL:
- ram:IncludedSupplyChainTradeLineItem
- cac:Item
- cbc:Name
|
Menge | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:IncludedSupplyChainTradeLineItem (1...n)
- ram:SpecifiedLineTradeDelivery
- ram:BilledQuantity
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:IncludedSupplyChainTradeLineItem (1...n)
- ram:SpecifiedLineTradeDelivery
- ram:BilledQuantity
XRechnung UBL:
- ram:IncludedSupplyChainTradeLineItem
- cac:Item
- cbc:InvoicedQuantity
|
Mengeneinheit | / |
Preis/Einheit | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:IncludedSupplyChainTradeLineItem (1...n)
- ram:SpecifiedLineTradeAgreement
- ram:NetPriceProductTradePrice
- ram:ChargeAmount
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:IncludedSupplyChainTradeLineItem (1...n)
- ram:SpecifiedLineTradeAgreement
- ram:NetPriceProductTradePrice
- ram:ChargeAmount
XRechnung UBL:
- ram:IncludedSupplyChainTradeLineItem
- cac:Item
- cac:Price
- cbc:PriceAmount
|
Zeilensumme | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:IncludedSupplyChainTradeLineItem (1...n)
- ram:SpecifiedLineTradeSettlement
- ram:SpecifiedTradeSettlementLineMonetarySummation
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:IncludedSupplyChainTradeLineItem (1...n)
- ram:SpecifiedLineTradeSettlement
- ram:SpecifiedTradeSettlementLineMonetarySummation
XRechnung UBL:
- ram:IncludedSupplyChainTradeLineItem
- cac:Item
- cbc:LineExtensionAmount
|
Steuersatz | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:IncludedSupplyChainTradeLineItem (1...n)
- ram:SpecifiedLineTradeSettlement
- ram:ApplicableTradeTax
- ram:RateApplicablePercent
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:IncludedSupplyChainTradeLineItem (1...n)
- ram:SpecifiedLineTradeSettlement
- ram:ApplicableTradeTax
- ram:RateApplicablePercent
XRechnung UBL:
- ram:IncludedSupplyChainTradeLineItem
- cac:Item
- cac:ClassifiedTaxCategory
- cbc:Percent
|
Summenzeilen
Bezeichnung | Datenpfad ZUGFeRD |
Summe aus Rechnungspositionen | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:SpecifiedTradeSettlementHeaderMonetarySummation
- ram:LineTotalAmount
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:SpecifiedTradeSettlementHeaderMonetarySummation
- ram:LineTotalAmount
XRechnung UBL:
- cac:LegalMonetaryTotal
- cbc:LineExtensionAmount
|
Nettogesamtbetrag | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:SpecifiedTradeSettlementHeaderMonetarySummation
- ram:TaxBasisTotalAmount
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:SpecifiedTradeSettlementHeaderMonetarySummation
- ram:TaxBasisTotalAmount
XRechnung UBL:
- cac:LegalMonetaryTotal
- cbc:TaxExclusiveAmount
|
Steuergesamtbetrag | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:SpecifiedTradeSettlementHeaderMonetarySummation
- ram:TaxTotalAmount
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:SpecifiedTradeSettlementHeaderMonetarySummation
- ram:TaxTotalAmount
XRechnung UBL:
- cac:TaxTotal
- cbc:TaxAmount
|
Bruttogesamtbetrag | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:SpecifiedTradeSettlementHeaderMonetarySummation
- ram:GrandTotalAmount
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:SpecifiedTradeSettlementHeaderMonetarySummation
- ram:GrandTotalAmount
XRechnung UBL:
- cac:LegalMonetaryTotal
- cbc:TaxInclusiveAmount
|
Fälliger Rechnungsbetrag | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:SpecifiedTradeSettlementHeaderMonetarySummation
- ram:DuePayableAmount
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:SpecifiedTradeSettlementHeaderMonetarySummation
- ram:DuePayableAmount
XRechnung UBL:
- cac:LegalMonetaryTotal
- cbc:PayableAmount
|
Währung | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:InvoiceCurrencyCode
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:InvoiceCurrencyCode
XRechnung UBL:
|
Abschließende Daten im Belegfuß
Bezeichnung | Datenpfad ZUGFeRD |
Zahlungsbedingung | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:SpecifiedTradePaymentTerms
- ram:Description
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:SpecifiedTradePaymentTerms
- ram:Description
XRechnung UBL:
|
Steuersatz Hinweis | ZUGFeRD:- rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:ApplicableTradeTax
- ram:ExemptionReason
XRechnung CII: - rsm:SupplyChainTradeTransaction
- ram:ApplicableHeaderTradeSettlement
- ram:ApplicableTradeTax
- ram:ExemptionReason
XRechnung UBL:
|
Sonstige Hinweise | ZUGFeRD:
XRechnung CII: XRechnung UBL:
|