Kann ich Factur-X-konforme PDFs erstellen?

Hilfe-Center

DocuGenerate übernimmt automatisch die technische Verpackung, die von E-Rechnungsstandards wie Factur-X und XRechnung verlangt wird. Sobald Sie eine konforme XML-Datei an ein generiertes PDF anhängen, erkennt DocuGenerate sie und fügt die von dem Standard geforderten Metadaten hinzu, ohne zusätzliche Parameter oder Einrichtung Ihrerseits.

So Funktioniert die Erkennung

DocuGenerate sucht nach bestimmten Tags, die die XML-Datei als UN/CEFACT Cross Industry Invoice (CII)-Dokument identifizieren, der Struktur, die von Factur-X, ZUGFeRD 2.1+ und XRechnung verwendet wird. Wenn diese Tags vorhanden sind, wird der in der XML-Datei eingebettete Guideline-Identifier verwendet, um das Konformitätsprofil zu bestimmen. Die unterstützten Profile sind:

Profile Description
MINIMUM Enthält nur die für die Umsatzsteuer erforderlichen Mindestbuchhaltungsdaten.
BASIC WL Fügt Informationen auf Kopfzeilenebene zu MINIMUM hinzu, ohne Rechnungspositionen.
BASIC Enthält vollständige Rechnungspositionen und folgt einer Teilmenge des EN 16931-Modells.
EN 16931 Vollständig konform mit dem europäischen E-Rechnungsstandard EN 16931.
EXTENDED Unterstützt komplexe Geschäftsprozesse mit zusätzlichen Daten über EN 16931 hinaus.
XRECHNUNG Das deutsche Referenzprofil für Rechnungen an öffentliche Verwaltungen.

Dies gilt nur für XML-Dateien, die einem dieser Standards folgen, während andere Anhänge als normale Dateien behandelt werden.

Hinzufügen von XMP-Metadaten

Die folgenden XMP-Tags werden zusammen mit der entsprechenden PDF/A-Extension-Schema-Deklaration in die Metadaten des generierten PDFs geschrieben:

Tag Description
fx:DocumentType Der Dokumenttyp. Immer INVOICE.
fx:DocumentFileName Der Name der angehängten XML-Datei, z. B. factur-x.xml.
fx:Version Die Version des von der angehängten XML-Datei verwendeten Schemas.
fx:ConformanceLevel Das erkannte Profil, z. B. MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED oder XRECHNUNG.

Hier ist ein Beispiel für die XMP-Tags, die den Metadaten eines PDFs für eine XML-Datei mit dem Profil MINIMUM hinzugefügt werden:

<rdf:Description rdf:about="" xmlns:fx="urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#">
  <fx:DocumentType>INVOICE</fx:DocumentType>
  <fx:DocumentFileName>factur-x.xml</fx:DocumentFileName>
  <fx:Version>1.0</fx:Version>
  <fx:ConformanceLevel>MINIMUM</fx:ConformanceLevel>
</rdf:Description>

Dateibenennung

Die Factur-X- und ZUGFeRD-Standards verlangen, dass die eingebettete XML-Datei je nach Profil einen bestimmten Namen verwendet: factur-x.xml für die meisten Profile und xrechnung.xml für das Profil XRECHNUNG. Wenn Sie einen Dateinamen angeben, wird dieser wie angegeben verwendet. Wenn Sie die Datei als Data-URI ohne die Eigenschaft name anhängen, weist DocuGenerate automatisch den richtigen Dateinamen zu, sobald das Profil erkannt wurde.

Dateibeziehung

Jeder angehängten Datei wird außerdem der PDF/A-3-Wert AFRelationship zugewiesen, der ihrer Rolle am besten entspricht. Für die Profile MINIMUM und BASIC WL wird dieser auf Data gesetzt, da das PDF in der Regel mehr Informationen enthält als die strukturierte Datei. Bei den anderen Profilen wird die unter ihrem offiziellen Namen angehängte XML-Datei auf Alternative gesetzt, was bedeutet, dass PDF und XML denselben Rechnungsinhalt darstellen.

Beispiel

Hängen Sie Ihre Factur-X- oder XRechnung-XML-Datei genauso an wie jede andere Datei, indem Sie das Ausgabeformat .pdf/a-3b verwenden:

curl -X 'POST' \
  'https://api.docugenerate.com/v1/document' \
  -H 'accept: application/json' \
  -H 'Authorization: 491c000c5fad32ed7787005b0723ad55' \
  -H 'Content-Type: multipart/form-data' \
  -F 'template_id=7VYocxLnIupLU3YT4iLr' \
  -F 'attach="data:text/xml;name=factur-x.xml;base64,77u/PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KPHJzbTpDcm9zc0luZHVzdHJ5SW52b2ljZSB4bWxuczpxZHQ9InVybjp1bjp1bmVjZTp1bmNlZmFjdDpkYXRhOnN0YW5kYXJkOlF1YWxpZmllZERhdGFUeXBlOjEwMCIKeG1sbnM6cmFtPSJ1cm46dW46dW5lY2U6dW5jZWZhY3Q6ZGF0YTpzdGFuZGFyZDpSZXVzYWJsZUFnZ3JlZ2F0ZUJ1c2luZXNzSW5mb3JtYXRpb25FbnRpdHk6MTAwIgp4bWxuczpyc209InVybjp1bjp1bmVjZTp1bmNlZmFjdDpkYXRhOnN0YW5kYXJkOkNyb3NzSW5kdXN0cnlJbnZvaWNlOjEwMCIKeG1sbnM6dWR0PSJ1cm46dW46dW5lY2U6dW5jZWZhY3Q6ZGF0YTpzdGFuZGFyZDpVbnF1YWxpZmllZERhdGFUeXBlOjEwMCIKeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+CiAgICAgPHJzbTpFeGNoYW5nZWREb2N1bWVudENvbnRleHQ+CiAgICAgICAgICA8cmFtOkJ1c2luZXNzUHJvY2Vzc1NwZWNpZmllZERvY3VtZW50Q29udGV4dFBhcmFtZXRlcj4KICAgICAgICAgICAgICAgPHJhbTpJRD5TMTwvcmFtOklEPgogICAgICAgICAgPC9yYW06QnVzaW5lc3NQcm9jZXNzU3BlY2lmaWVkRG9jdW1lbnRDb250ZXh0UGFyYW1ldGVyPgogICAgICAgICAgPHJhbTpHdWlkZWxpbmVTcGVjaWZpZWREb2N1bWVudENvbnRleHRQYXJhbWV0ZXI+CiAgICAgICAgICAgICAgIDxyYW06SUQ+dXJuOmZhY3R1ci14LmV1OjFwMDptaW5pbXVtPC9yYW06SUQ+CiAgICAgICAgICA8L3JhbTpHdWlkZWxpbmVTcGVjaWZpZWREb2N1bWVudENvbnRleHRQYXJhbWV0ZXI+CiAgICAgPC9yc206RXhjaGFuZ2VkRG9jdW1lbnRDb250ZXh0PgogICAgIDxyc206RXhjaGFuZ2VkRG9jdW1lbnQ+CiAgICAgICAgICA8cmFtOklEPkYyMDI2MDAyMzwvcmFtOklEPgogICAgICAgICAgPHJhbTpUeXBlQ29kZT4zODA8L3JhbTpUeXBlQ29kZT4KICAgICAgICAgIDxyYW06SXNzdWVEYXRlVGltZT4KICAgICAgICAgICAgICAgPHVkdDpEYXRlVGltZVN0cmluZyBmb3JtYXQ9IjEwMiI+MjAyNjAxMzE8L3VkdDpEYXRlVGltZVN0cmluZz4KICAgICAgICAgIDwvcmFtOklzc3VlRGF0ZVRpbWU+CiAgICAgPC9yc206RXhjaGFuZ2VkRG9jdW1lbnQ+CiAgICAgPHJzbTpTdXBwbHlDaGFpblRyYWRlVHJhbnNhY3Rpb24+CiAgICAgICAgICA8cmFtOkFwcGxpY2FibGVIZWFkZXJUcmFkZUFncmVlbWVudD4KICAgICAgICAgICAgICAgPHJhbTpCdXllclJlZmVyZW5jZT5TRVJWRVhFQzwvcmFtOkJ1eWVyUmVmZXJlbmNlPgogICAgICAgICAgICAgICA8cmFtOlNlbGxlclRyYWRlUGFydHk+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpOYW1lPkNvbXBhbnkgSW5jLjwvcmFtOk5hbWU+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpTcGVjaWZpZWRMZWdhbE9yZ2FuaXphdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgIDxyYW06SUQgc2NoZW1lSUQ9IjAwMDIiPjEyMzQ1Njc4MjwvcmFtOklEPgogICAgICAgICAgICAgICAgICAgIDwvcmFtOlNwZWNpZmllZExlZ2FsT3JnYW5pemF0aW9uPgogICAgICAgICAgICAgICAgICAgIDxyYW06UG9zdGFsVHJhZGVBZGRyZXNzPgogICAgICAgICAgICAgICAgICAgICAgICAgPHJhbTpDb3VudHJ5SUQ+RlI8L3JhbTpDb3VudHJ5SUQ+CiAgICAgICAgICAgICAgICAgICAgPC9yYW06UG9zdGFsVHJhZGVBZGRyZXNzPgogICAgICAgICAgICAgICAgICAgIDxyYW06U3BlY2lmaWVkVGF4UmVnaXN0cmF0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgPHJhbTpJRCBzY2hlbWVJRD0iVkEiPkZSMTExMjM0NTY3ODI8L3JhbTpJRD4KICAgICAgICAgICAgICAgICAgICA8L3JhbTpTcGVjaWZpZWRUYXhSZWdpc3RyYXRpb24+CiAgICAgICAgICAgICAgIDwvcmFtOlNlbGxlclRyYWRlUGFydHk+CiAgICAgICAgICAgICAgIDxyYW06QnV5ZXJUcmFkZVBhcnR5PgogICAgICAgICAgICAgICAgICAgIDxyYW06TmFtZT5BY21lIENvcnA8L3JhbTpOYW1lPgogICAgICAgICAgICAgICAgICAgIDxyYW06U3BlY2lmaWVkTGVnYWxPcmdhbml6YXRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICA8cmFtOklEIHNjaGVtZUlEPSIwMDAyIj45ODc2NTQzMjE8L3JhbTpJRD4KICAgICAgICAgICAgICAgICAgICA8L3JhbTpTcGVjaWZpZWRMZWdhbE9yZ2FuaXphdGlvbj4KICAgICAgICAgICAgICAgPC9yYW06QnV5ZXJUcmFkZVBhcnR5PgogICAgICAgICAgICAgICA8cmFtOkJ1eWVyT3JkZXJSZWZlcmVuY2VkRG9jdW1lbnQ+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpJc3N1ZXJBc3NpZ25lZElEPlBPMjAxOTI1NDc4PC9yYW06SXNzdWVyQXNzaWduZWRJRD4KICAgICAgICAgICAgICAgPC9yYW06QnV5ZXJPcmRlclJlZmVyZW5jZWREb2N1bWVudD4KICAgICAgICAgIDwvcmFtOkFwcGxpY2FibGVIZWFkZXJUcmFkZUFncmVlbWVudD4KPHJhbTpBcHBsaWNhYmxlSGVhZGVyVHJhZGVEZWxpdmVyeS8+CiAgICAgICAgICA8cmFtOkFwcGxpY2FibGVIZWFkZXJUcmFkZVNldHRsZW1lbnQ+CiAgICAgICAgICAgICAgIDxyYW06SW52b2ljZUN1cnJlbmN5Q29kZT5FVVI8L3JhbTpJbnZvaWNlQ3VycmVuY3lDb2RlPgogICAgICAgICAgICAgICA8cmFtOlNwZWNpZmllZFRyYWRlU2V0dGxlbWVudEhlYWRlck1vbmV0YXJ5U3VtbWF0aW9uPgogICAgICAgICAgICAgICAgICAgIDxyYW06VGF4QmFzaXNUb3RhbEFtb3VudD4xNTAwLjAwPC9yYW06VGF4QmFzaXNUb3RhbEFtb3VudD4KICAgICAgICAgICAgICAgICAgICA8cmFtOlRheFRvdGFsQW1vdW50IGN1cnJlbmN5SUQ9IkVVUiI+MC4wMDwvcmFtOlRheFRvdGFsQW1vdW50PgogICAgICAgICAgICAgICAgICAgIDxyYW06R3JhbmRUb3RhbEFtb3VudD4xNTAwLjAwPC9yYW06R3JhbmRUb3RhbEFtb3VudD4KICAgICAgICAgICAgICAgICAgICA8cmFtOkR1ZVBheWFibGVBbW91bnQ+MTUwMC4wMDwvcmFtOkR1ZVBheWFibGVBbW91bnQ+CiAgICAgICAgICAgICAgIDwvcmFtOlNwZWNpZmllZFRyYWRlU2V0dGxlbWVudEhlYWRlck1vbmV0YXJ5U3VtbWF0aW9uPgogICAgICAgICAgPC9yYW06QXBwbGljYWJsZUhlYWRlclRyYWRlU2V0dGxlbWVudD4KICAgICA8L3JzbTpTdXBwbHlDaGFpblRyYWRlVHJhbnNhY3Rpb24+CjwvcnNtOkNyb3NzSW5kdXN0cnlJbnZvaWNlPg=="' \
  -F 'data={ "Company Name": "Acme Corp", "Invoice No": "INV-123456", "Street Address": "123 Main St", "City": "Springfield", "State": "IL", "Zip Code": "62701", "Invoice Date": "2025-02-26", "Phone": "(555) 123-4567", "Description": "Consulting services for Q1 2025", "Quantity": "10", "Amount": "150.00", "Total": "1500.00" }' \
  -F 'output_format=.pdf/a-3b'

Das resultierende PDF enthält sowohl die visuelle Rechnung als auch die eingebettete XML-Datei, wobei die Metadaten bereits vorhanden sind. Es besteht erfolgreich die Validierung bei einem Drittanbieterdienst:

Generiertes Factur-X-PDF besteht die Validierung bei einem Drittanbieterdienst

Einschränkungen

DocuGenerate generiert oder validiert nicht den Inhalt der XML-Datei selbst. Sie sind dafür verantwortlich, eine XML-Datei bereitzustellen, die dem XSD-Schema und den Schematron-Regeln Ihres gewählten Standards entspricht. DocuGenerate übernimmt nur die PDF/A-3-Verpackung und die Metadaten, die die angehängte Datei beschreiben, nicht die darin enthaltenen Daten.

Eine vollständige Schritt-für-Schritt-Anleitung zur Vorlagenerstellung, XML-Vorbereitung und PDF-Generierung finden Sie unter ZUGFeRD / Factur-X PDF-Rechnungen mit DocuGenerate Erstellen.