ZUGFeRD: Digitalisierung der Rechnungsverarbeitung

Das ZUGFeRD-Format ermöglicht einen elektronischen Rechnungsaustausch zweier Unternehmen in einem klar definierten Rahmen. Der Standard basiert auf einer XML-Datei, die in der Rechnungs-PDF eingebettet wird.

Allgemeine Problemstellung

ZUGFeRD LogoIn der heutigen Wirtschaft werden täglich tausende von Rechnungen generiert, verschickt und wiederum verarbeitet. Dieser Prozess bringt teilweise einen hohen manuellen Arbeitsaufwand mit sich. Oftmals werden in Unternehmen A Rechnungen automatisiert erstellt, über den Postweg an Unternehmen B versandt, wo sie manuell eingelesen werden müssen, um die Information dann automatisiert weiter zu verarbeiten.

Das größte Optimierungspotential verbirgt sich hierbei beim manuellen Zwischenprozess: dem Einlesen der Rechnung. Der Rechnungseingang eines Unternehmens bekommt täglich Rechnungen von unterschiedlichen Geschäftspartnern. Unter Umständen sind diese Rechnungen immer in verschiedenen Formaten und müssen somit individuell bearbeitet werden. Dazu zählt das Digitalisieren der Rechnung durch Einscannen und automatischer Erkennungssoftware oder dem manuellen Digitalisieren ohne Hilfssoftware. Nur dann kann die Rechnung intern geprüft und weiterverarbeitet werden. So kann die Rechnung zum Beispiel mit offenen Bestellungen des Unternehmens abgeglichen werden. Im besten Fall passiert das nach der Digitalisierung bereits automatisiert.

Um diesen manuellen Aufwand zu minimieren versuchten sich Unternehmen bereits untereinander auf einen Standard zu einigen, indem die Rechnungen immer gleich aufgebaut sind. Denn nur so ist eine automatisierte Weiterverarbeitung möglich. Die Definition eines solchen Standards lohnte sich bisher aber nur für große Unternehmen, die eine große Menge von Rechnungen erstellen und bekommen. Denn die Definition des Standards und vor allem das individuelle Anpassen der bestehenden Software können sehr aufwendig sein und rentieren sich erst bei entsprechendem Rechnungsdurchsatz. Aus diesem Grund haben kleine Unternehmen oft keine Chance ihre Rechnungsverarbeitung vollständig zu digitalisieren, da sie unter Umständen für verschiedene Geschäftspartner unterschiedliche Standards abdecken müssen.

Deshalb wurde ZUGFeRD-Format definiert und bietet einen einheitlichen Standard, um dabei zu helfen den Geschäftsprozess zu digitalisieren und somit zu optimieren.

Das ZUGFeRD Format

Definition

Die Abkürzung ZUGFeRD steht für „Zentraler User Guide des Forums elektronische Rechnung Deutschland“ und wird gleichzeitig für das Format elektronischer Rechnungen, welches vom Forum elektronische Rechnung Deutschland (FeRD) spezifiziert wurde, verwendet. Das Format soll dabei helfen den Rechnungsaustausch zwischen Unternehmen, sowie öffentlichen Behörden und Privatpersonen zu vereinfachen.

Ursprung

Der Grundstein für die Entstehung des ZUGFeRD Formats wurde 2011 durch das Steuervereinfachungsgesetz gelegt. Dieses besagt, dass alle Rechnungen gleich zu behandeln sind, unabhängig von deren Format (elektronisch oder in Papierform). Außerdem galt bis dahin, dass bei digitalen Rechnungen eine elektronische Unterschrift Pflicht war.

Dabei gilt, dass nur das verarbeitete Dokument als Nachweis für das Finanzamt benötigt wird. Sprich wenn die PDF eingepflegt oder eingescannt wird, muss diese als Beleg aufbewahrt werden. Wenn die Rechnung in Form einer XML-Datei automatisiert eingelesen und verarbeitet wird, ist nur diese Datei relevant.

Daraufhin wurde vom Bundesministerium für Wirtschaft und Energie das Form elektronische Rechnungen Deutschland (FeRD) gegründet. Dessen Aufgabe war es ein allgemeines Format für elektronische Rechnungen zu erarbeiten. Das Ziel dahinter war die Effizienzsteigerung im digitalen Rechnungsaustausch zwischen Unternehmen.

Konzept

Eine valide ZUGFeRD Rechnung besteht im Eigentlichen aus zwei Teilen. Einem analogen Teil in Form eines PDF-Dokuments, das bei Bedarf ausgedruckt werden kann und einem digitalen Teil in Form einer XML-Datei. Somit hat man eine Rechnung, die sowohl für den Menschen (PDF), als auch für eine Maschine (XML), lesbar ist. Dazu schreibt das ZUGFeRD-Format die Verwendung des PDF/A-3-Standards vor. Dieser ermöglicht es der Datei eine weitere Datei anzuhängen, vergleichbar mit dem Dateianhang einer E-Mail.

Das ZUGFeRD-Format sieht vor die rechnungsrelevanten Daten zusätzlich in einem konformen XML-Dokument zu speichern und diese der PDF als Anhang mitzugeben. Das ZUGFeRD-Format stellt sicher, dass die Rechnungen auf Maschinen-Basis einheitlich einlesbar sind. Zusätzlich berücksichtigt der Standard steuer- und handelsrechtliche Anforderungen und bietet somit eine zusätzliche Validierung der Rechnung.

Die Kombination der beiden Formate erlaubt zu jeder Zeit des Rechnungsaustauschs wieder auf die analoge Schiene zu wechseln, in dem die PDF-Datei ausgedruckt wird. Somit ist man nicht ausschließlich an einen digitalen Prozess gebunden und ermöglicht die schrittwiese Integration des ZUGFeRD-Formats.

Technische Umsetzung

Zur programmiertechnischen Umsetzung braucht man eine PDF- und eine XML-Generierungssoftware, die Zugriff auf das bestehende Rechnungswesen eines Unternehmens haben. In unserem Beispiel verwenden wir hierfür PDFlib und PHP.

PDFlib

Bei der PDFlib handelt es sich um eine kostenpflichtige Programmbibliothek zum Generieren von PDF-Dateien. Es ermöglicht die dynamische Erzeugung von Dateien, während der Ausführung einer Softwareanwendung. Dabei kann die PDFlib Dateien serverseitig erstellen und zum Download bereit stellen oder in einem bestimmten Verzeichnis ablegen. Das Framework kann vor allem mit einer umfangreichen API überzeugen, die viele Anforderungen bei der PDF-Generierung abdecken. Das PDFlib-Framework ist zudem in allen gängigen Programmiersprachen verfügbar und umfangreich dokumentiert. Das macht die PDFlib zum optimalen Hilfsmittel bei der automatisierten Rechnungsgenerierung. In diesem Anwendungsbeispiel wird das Framework in Kombination mit PHP verwendet.

XML-Generierung

Hier bietet PHP die DOM-Extension an. Durch die Erstellung eines „DOMDocuments“ können Knoten, Attribute und Werte durch vorhandene API-Funktionen erstellt werden. Das erleichtert dem Programmierer die Generierung von XML-Files und macht den Code übersichtlicher und lässt sich leichter kapseln.

Rechnungsausgang

Die technische Einbindung des ZUGFeRD Formats in den bestehenden Geschäftsprozess eines Unternehmens ist von zwei Seiten zu betrachten: dem Rechnungsausgang und den Rechnungseingang. Im folgenden Abschnitt wird die technische Seite des Rechnungsausgangs näher beschrieben.

Ziel an dieser Station des Rechnungsaustauschs ist es nach Abschluss einer Bestellung automatisiert eine ZUGFeRD valide Rechnung zu erstellen. Dazu werden relevante Rechnungsdaten, wie Rechnungssteller, Empfänger, Produkte etc. direkt aus dem bestehenden System gelesen. Da diese Daten sowohl in der PDF als auch in der XML benötigt werden lohnt es sich diese in eine abstrakte Klasse auszulagern, auf die die PDF- und die XML-Generierungsroutine zugreifen kann.

class My_Abstract
{
    protected $_invoiceDate;
    protected $_invoiceNumber;
    protected $_deliveryAddress;


    function __construct($invoiceDate, $ordersId, $invoiceNumber) {}


    private function _getOrderEntry(){}

    private function _getDeliveryAddress() {}
}

Diese Daten werden der XML Routine durch Vererbung bereitgestellt. Hier wird ein neues DOMDocument erstellt und alle Daten in die vom ZUGFeRD- Format vorgesehenen Felder geschrieben.

$dom = new \DOMDocument('1.0', 'UTF-8') ;

…

$root = $dom->createElement("rsm:CrossIndustryDocument");

…

$this->_addSimpleXmlElement('ram:ID', $this->_invoiceNumber, $rsm, $dom);

Am Ende wird eine XML-Datei zurückgegeben, welche von der PDF-Routine verwendet werden kann. Am besten nimmt man sich hier eine Beispiels-XML des FeRD zur Hilfe und versucht dieses im ersten Schritt nachzubauen, um im Anschluss die Inhalte durch Variablen auszutauschen. (link zur Dokument)

return $dom->saveXML();

Die PDF Routine macht sich die Templating-Funktion der PDFlib zu Nutze. Das bedeutet, dass im Vorfeld eine PDF-Datei angelegt wird, die bereits das Logo und andere statische Elemente beinhaltet. So können zum Beispiel Container gesetzt werden, die bereits im Template festlegen wo welche Inhalte später platziert werden sollen. Dazu empfiehlt es sich das PDFlib Block Plugin (http://www.pdflib.com/de/download/pdflib-familie/block-plugin-50/) zu verwenden. Dieses Template wird zu Beginn der PDF-Generierung geladen.

$template_filename = 'rechnung.pdf';
$template_pdf = $p->open_pdi($template_filename, "", 0);
$template_pdf_page = $p->open_pdi_page($template_pdf, 1, "");
$p->fit_pdi_page($template_pdf_page, 0, 842, "");

Im Anschluss werden die Inhalte wie Rechnungsinfos, Rechnungsteller, etc. gesetzt. Dazu benötigt man hauptsächlich die fit_textline Funktion der PDFlib, die einen String an eine bestimmte Stelle setzt.

$p->fit_textline("Rechnungs-Nr.", $xPos, $yPos, "position {left bottom}");
$p->fit_textline("RG-" . $this->_invoiceNumber, $xPos + 80, $yPos, "position {left bottom}");

Wenn alle Daten richtig positioniert sind ist der erste Schritt auf dem Weg zu einer validen ZUGFeRD-Rechnung fast geschafft. Denn nun muss die zuvor generierte XML-Datei der PDF angehangen werden. Das ist nur möglich, wenn die PDF das entsprechende Format hat um einen Anhang aufzunehmen. Für das ZUGFeRD-Format muss die PDF den PDF/A-3 Standard erfüllen, was über den Adobe Acrobat in dem Template-File hinterlegt wird.

$pvfName = "/pvf/ZUGFeRD-invoice.xml";
$p->create_pvf($pvfName, $xml, "");

$xmlInvoice = $p->load_asset("Attachment", $pvfName,
  "mimetype=text/xml "
  . "description={Rechnungsdaten im ZUGFeRD-XML-Format} "
  . "relationship=Alternative documentattachment=true");

$p->end_document("associatedfiles={" . $xmlInvoice . "}");

Die XML-Datei wird beim Aufruf der PDF Routine als Parameter übergeben und wird unter dem Namen „ZUGFeRD-invoice.xml“ der PDF als Anhang hinterlegt. Als Ergebnis hat man nun eine PDF-Datei, die eine XML-Datei beinhaltet. Beide Dateien haben die gleiche Datenbasis, die PDF-Datei kann nun weiterhin analog in ausgedruckter Form verwendet werde, während die XML-Datei digital weiterverarbeitet werden kann, um den Geschäftsprozess zu digitalisieren.

Rechnungseingang

Wenn der Geschäftspartner Rechnungen im ZUGFeRD-Format bereitstellt, bietet sich die Möglichkeit fast den gesamten Rechnungseingang zu digitalisieren. So müssen nun Rechnungen nicht mehr per Post ankommen, sondern könne über einen FTP-Server oder per Mail versendet werden. Diese Rechnungen werden dann automatisiert abgeholt, wobei die PDF-Datei in einem Sicherheitsverzeichnis abgelegt und die XML-Datei eingelesen wird. Die Verarbeitungssoftware ist im Idealfall an das bestehende Rechnungswesen angebunden und kann die Rechnung beispielsweise mit offenen Bestellungen abgleichen, sodass diese offenen Bestellungen oder Aufträgen dynamisch zugewiesen werden können. Das ermöglicht eine vollständig autonome Rechnungsverarbeitung, vom Eingang der Rechnung bis zur Verbuchung in der Finanzbuchhaltung.

In einem weiteren Artikel werden wir genauer auf die technische Einbindung von ZUGFeRD im Rechnungseingang eingehen und die Vor- und Nachteile erörtern.

Vorteile / Fazit

Nicht nur für große Unternehmen, die täglich hunderte oder mehr Rechnungen verarbeiten müssen, bietet der Einsatz des ZUGFeRD-Formats ein großes Optimierungspotenzial. Auch kleine Unternehmen profitieren vom vordefinierten und einheitlichen Standard, da dadurch Rechnungen von verschiedenen Geschäftspartnern gleichbehandelt werden können.

Allerdings kann es zu Beginn zu einem Mehraufwand bei der Rechnungsgenerierung kommen. Da die Verwendung des ZUGFeRD-Formats zuerst implementiert werden muss. Das kann jedoch den Vorteil haben, dass vor allem kleine Unternehmen sich dazu entscheiden ihr gesamtes Rechnungswesen zu digitalisieren, wobei wiederum viele zeitaufwändige manuelle Schritte eingespart werden können. Oftmals sind kleinere Unternehmen aber auch dazu verpflichtet innerhalb von Kundenverhältnissen mit größeren Unternehmen die Rechnung im ZUGFeRD-Format zu liefern und müssen ihren Rechnungsausgang dahingehend umgestalten.

Diagramm

Abschließend lässt sich sagen, dass der Einsatz des ZUGFeRD-Formats im Rechnungsausgang in den meisten Fällen einen anfänglichen Mehraufwand mit sich bringen kann. Es kann gleichzeitig aber auch der Grundstein zur Digitalisierung des gesamten Geschäftsprozesses sein. Der Hauptvorteil zeigt sich erst im Rechnungseingang. Hier können im Optimalfall alle Rechnungen einheitlich verarbeitet werden. Zudem können durch eine ZUGFeRD-Validierung fehlerhafte Rechnungen ausgeschlossen werden. Auch menschliche Fehler können dadurch weitestgehend verhindert werden.

In einem weiteren Artikel werden wir genauer auf die technische Einbindung von ZUGFeRD im Rechnungseingang eingehen und die Vor- und Nachteile erörtern.
Titelbild designed by Freepik

Veröffentlicht am 12. Juli 2016 in Blog

Autor: Simon Barbon

Back to Top