ZUGFeRD E-Rechnung aus Airtable in Zapier: Zeilen filtern, JSON erstellen, hybrides PDF per E-Mail versenden

PDF4me Create ZUGFeRD Invoice ist eine Zapier Aktion, die strukturierte Rechnungsdaten in eine hybride PDF/A-3-E-Rechnung umwandelt. Sie liest eine Airtable Zeile, wandelt ein JSON-Objekt in EN 16931-konformes XML um, das in ein lesbares PDF eingebettet ist, speichert die Datei im Datensatz und sendet sie per E-Mail an den Käufer.
Die Anforderungen an die elektronische Rechnungsstellung führen zu einem Dateiformatproblem und werden als Beschaffungsproblem gelöst: Plattform auswählen, pro Dokument bezahlen, Daten migrieren. Diese Lösung ist bei großem Umfang sinnvoll, aber absurd für ein Team, das monatlich zwanzig Rechnungen aus einer bereits bestehenden Datenbank erstellt. Die Alternative ist nicht das manuelle Schreiben von XML-Dateien. Stattdessen wird die Rechnung als JSON beschrieben und die konforme Datei automatisch generiert.
Eine Airtable Zeile enthält die Rechnung: Verkäufer, Käufer, eine Position und die Gesamtsumme. Wird Status auf New gesetzt, erfasst der Zap die Rechnung, prüft das entsprechende Feld und übergibt PDF4me ein JSON-Objekt. Das Ergebnis ist ein lesbares und maschinenlesbares PDF/A-3, das dem Datensatz beigefügt und an den Käufer gesendet wird. Kein Plattform-Abonnement, kein XML – die Daten verlassen die Datenbank nicht.
Warum-basierte Fragen und Antworten
Why describe the invoice as JSON rather than XML?Da die Syntax für branchenübergreifende Rechnungen lang, tief verschachtelt und hinsichtlich der Position jedes Codes sehr streng ist, beschreibt das JSON-Objekt dasselbe auf einem Bruchteil des Platzes mit Schlüsseln, die Geschäftsbegriffen ähneln. PDF4me generiert daraus das entsprechende XML. Fehler können leicht passieren, wenn man den Teil nicht pflegt.
Why does the hybrid file matter?Weil eine Rechnung zwei Adressaten hat. Das System des Käufers liest das eingebettete XML und bucht die Rechnung automatisch; der Mitarbeiter in der Buchhaltung öffnet dieselbe Datei und sieht eine Seite. Ein einziges Dokument genügt beiden Zwecken, deshalbFeRD spezifizierte eine Hybridlösung anstelle von reinem XML.
Why put a Filter in front of the invoice step?Da die Rechnungserstellung nicht rückgängig gemacht werden kann, würde ein Zap, der bei jeder neuen Zeile ausgelöst wird, irgendwann auch bei einer unvollständigen Rechnung ein Dokument mit einer leeren Position per E-Mail an den Kunden senden. Der Filter macht die Rechnungserstellung zu einer bewussten Handlung: Eine Person setzt Status auf New, und das ist die Anweisung.
Why keep the invoice data in Airtable at all?Weil es sich üblicherweise um ein Nebenprodukt bereits erfasster Arbeitsvorgänge handelt: das Projekt, der Kunde, der vereinbarte Preis. Die Übertragung in ein Abrechnungsprodukt, um ein bestimmtes Dateiformat zu erfüllen, bedeutet, denselben Kunden dauerhaft in zwei Systemen zu pflegen, was die Formatvorgabe aber nicht verlangt.
Was Sie erhalten
Eingabe: Eine Airtable Zeile mit Rechnungsnummer, Datum, Verkäuferblock mit Umsatzsteuer-Identifikationsnummer, Käuferblock, einer Position und den Summen, Status: New. Ausgabe: Ein ZUGFeRD PDF/A-3 für diesen Datensatz und im Posteingang des Käufers.

Eine Zeile pro Rechnung. Jede Spalte hier wird zu einem Schlüssel im JSON, den der Zap sendet.

Der Käufer sieht eine Rechnung. Sein Buchhaltungssystem sieht den darin enthaltenen XML.
Was Sie benötigen
- A Zapier accountauf einem Tarif, der mehrstufige Zaps ermöglicht.Filter by Zapier ist integriert und zählt als Schritt.
- PDF4me API-Schlüssel. Holen Sie sich Ihren API-Schlüssel.
- An Airtable baseDie erfasste Basis ist
PDF4me Live Automationsmit einer Tabelle namensZUGFeRD Requests, die den Rechnungskopf, den Verkäuferblock einschließlich einer Umsatzsteuer-Identifikationsnummer, den Käuferblock, die Positionsfelder NetTotal, VATAmount und GrossTotal, eine E-Mail-Spalte, ein Status und ein Anhangsfeld namensDocumententhält. - A Gmail accountVerbindung zu Zapier hergestellt.
- Your seller details including a VAT IDSie stammen aus Spalten, sodass eine Basis für mehrere juristische Personen abgerechnet werden kann.
Der Zap auf einen Blick
- New Record (Airtable) wird bei jeder neuen Zeile in
ZUGFeRD Requestsausgelöst. - Filter conditions (Filter by Zapier) werden nur dann fortgesetzt, wenn Status genau
Newist. - Create ZUGFeRD Invoice (PDF4me) konvertiert das JSON in ein hybrides PDF.
- Update Record (Airtable) schreibt die Datei, den Status und einen Link zurück zur Zeile.
- Send Email (Gmail) übermittelt die elektronische Rechnung an den Käufer.
Vollständige Zap-Übersicht

Die fünfstufige Struktur entspricht der des Schweizer QR-Codes Zap. Lediglich der mittlere Schritt PDF4me unterscheidet sich.
Schritt 1: Wie löst man einen Zap aus einer neuen Airtable Zeile aus?
Bisheriger Ablauf: noch nichts, dies ist der Auslöser.
- Erstellen Sie einen Zap und wählen Sie Airtable > New Record.
- Wählen Sie die Base
PDF4me Live Automationsund die TableZUGFeRD Requests. - Test. Zapier meldet: „1 neuer Datensatz in Airtable gefunden“, und die Spalten stehen nachgelagert zur Verfügung.
Auf dem Abstimmungssymbol steht 2 min, was aus dem Plan und nicht aus diesem Schritt stammt.
Schritt 2: Wie kann man verhindern, dass Zap eine unvollständige Zeile in Rechnung stellt?
Bisheriger Ablauf: der Airtable Trigger.
- Filter by Zapier hinzufügen > Only continue if....
- Erstellen Sie eine Regel: 1. Status / (Text) Exactly matches /
New. - Teste es.
Konfiguration Filter conditions

Das grüne Feld kennzeichnet das Feld, das den Datensatz durchgelassen hat. Das entsprechende gelbe Feld kennzeichnet das Feld, das ihn blockiert hat.
Tip.Exactly matches ist groß- und kleinschreibungssensitiv und unterscheidet zwischen Leerzeichen, dahernew UndNew Bei einem nachfolgenden Leerzeichen schlagen beide Optionen in jeder Zeile ohne Fehlermeldung fehl. Wenn Sie Status als einfaches Auswahlfeld anstatt als Freitextfeld Make, tritt das Problem nicht auf.
Schritt 3: Wie wandelt man die Zeile in eine ZUGFeRD Rechnung um?
Bisheriger Ablauf: der Auslöser und der Filter.
- PDF4me hinzufügen > Create ZUGFeRD Invoice.
- Legen Sie die Ausgabeoptionen fest:
- File Name:
ZUGFeRD_plus Invoice Number plus.pdf - Input Format:
JSON - Output Mode:
XmlWithPdf - Zugferd Version:
2+ - Conformance Level:
EN16931 - Render Invoice On Pdf:
True - Lassen Sie File leer, es sei denn, Sie stellen Ihr eigenes Briefkopfblatt zur Verfügung.
- File Name:
- Fügen Sie das Objekt in das Invoice Json Data ein und ordnen Sie jedes Airtable Feld diesem Feld zu:
{
"InvoiceId": "{{Invoice Number}}",
"TypeCode": "380",
"InvoiceType": "RECHNUNG",
"IssueDate": "{{Invoice Date}}T00:00:00",
"DeliveryDate": "{{Invoice Date}}T00:00:00",
"IsTest": false,
"Seller": {
"Name": "{{Seller Name}}",
"VatId": "{{Seller VATID}}",
"Address": {
"Street": "{{Seller Street}}",
"PostalCode": "{{Seller Postal Code}}",
"City": "{{Seller City}}",
"Country": "{{Seller Country}}"
}
},
"Buyer": {
"Name": "{{Buyer Name}}",
"Address": {
"Street": "{{Buyer Street}}",
"PostalCode": "{{Buyer Postal Code}}",
"City": "{{Buyer City}}",
"Country": "{{Buyer Country}}"
}
},
"LineItems": [
{
"ProductName": "{{Item Description}}",
"Quantity": {{Quantity}},
"UnitCode": "C62",
"UnitPrice": {{Unit Price}},
"LineTotal": {{Net Total}}
}
],
"Totals": {
"Currency": "{{Currency}}",
"LineTotal": {{Net Total}},
"TaxBasisTotal": {{Net Total}},
"TaxPercent": {{VAT Rate}},
"TaxTotal": {{VAT Amount}},
"GrandTotal": {{Gross Total}},
"ChargeTotal": 0,
"AllowanceTotal": 0
},
"Payment": {
"Currency": "{{Currency}}",
"PaymentReference": "{{Invoice Number}}",
"DueDate": "{{Due Date}}T00:00:00"
}
}
Drei Punkte verdienen besondere Beachtung. TypeCode 380 ist der Code für eine Handelsrechnung und ist fest vorgegeben. UnitCode C62 ist der UN/ECE-Code für „ein Stück“, der für Stunden oder Leistungseinheiten verwendet wird. PaymentReference im Payment ist der Text, den der Käufer bei der Zahlung angibt, hier also die Rechnungsnummer.
Create ZUGFeRD Invoice

Jeder Wert entspricht einem Airtable-Token. Beachten Sie VAT Amount von 190,95 und Gross Total 1195,95, obwohl diese in der Tabelle als 191 und 1196 angezeigt werden.
Was jede Einstellung entscheidet
| Feld | Wert hier | Was es kontrolliert |
|---|---|---|
| Input Format | JSON | Dass Sie ein strukturiertes Objekt anstelle von vorgefertigtem XML oder einer CSV-Zeile bereitstellen. |
| Output Mode | XmlWithPdf | Gibt eine Hybriddatei zurück. XmlOnly gibt nur die Rechnungs-XML-Datei zurück. |
| Zugferd Version | 2+ | Die Generation 2.x entspricht der Norm EN 16931 Die ältere Generation 1.0 ist es nicht. |
| Conformance Level | EN16931 | Das Profil, dem die Rechnung angeblich entspricht, und daher die Schlüssel, die das JSON liefern muss |
| Render Invoice On Pdf | True | Erstellen Sie aus denselben Daten eine lesbare Seite. Ohne Angabe einer Datei erhält die Datei dadurch ihre lesbare Hälfte. |
| Datei | leer | Wohin eine PDF-Basisdatei mit Ihrem Briefkopf gehören würde |
Do not trust the grid for decimals.Airtable zeigt aufgrund der Genauigkeitseinstellung des Zahlenfelds die VATAmount 191 und GrossTotal 1196 an, die Tokens enthalten jedoch 190.95 und 1195.95, und genau diese Werte werden auf der Rechnung angezeigt. Erhöhen Sie die Genauigkeit, bevor jemand versucht, eine Spalte mit einem ausgestellten Dokument abzugleichen.
Schritt 4: Wie wird die Rechnung wieder in den Datensatz eingetragen?
Bisheriger Ablauf: Alles bis zum PDF4me Schritt.
- Airtable hinzufügen > Update Record.
- Konfigurieren:
- Base
PDF4me Live Automations, TischZUGFeRD Requests - Record: die ID des Auslösers
- Append attachments:
False - Document: die File Url aus Schritt 3
- Status:
Generated
- Base
- Lassen Sie alle anderen Felder leer, damit nichts überschrieben wird.
Update Record

Die Warnung ganz oben ist diejenige, die es wert ist, gelesen zu werden. Alles darunter ist absichtlich leer.
"Possible Zap loop detected" is a real warning, not noise.Dieser Schritt schreibt in die Tabelle, die vom Zap ausgelöst wird. Daher könnte eine Aktualisierung des Zaps diesen erneut aktivieren. Dies geschieht hier jedoch nicht, da die Aktualisierung Status auf Generated setzt und der Filter in Schritt 2 nur Einträge mit New zulässt. Der Filter und diese Aktualisierung bilden einen Mechanismus; ändern Sie einen der beiden, überprüfen Sie beide erneut.
Schritt 5: Wie senden Sie die elektronische Rechnung an den Käufer?
Bisheriger Ablauf: Alles über die Aktualisierung des Datensatzes.
- Gmail hinzufügen > Send Email.
- Konfigurieren:
- To: die Email Spalte aus dem Auslöser
- Subject:
Your e-invoiceplus Invoice Number - Body type:
Html - Body: Eine kurze Begrüßung mit Angabe des Käufers, der Rechnungsnummer und des Gesamtbetrags
- Attachments: die File Url aus Schritt 3
Send Email

Der Anhang ist die gleiche File Url die in Schritt 4 in Airtable geschrieben wurde, sodass der Datensatz und die E-Mail immer die gleiche Datei enthalten.
Führen Sie den Zap aus und überprüfen Sie ihn.
- Publish den Zap.
- Füge der
ZUGFeRD Requestseine Zeile mit Verkäufer, Käufer, einem Artikel, beiden Datumsangaben und StatusNewhinzu. - Warten Sie das Ergebnis der Umfrage ab. Alle fünf Schritte sollten grün sein.
- Öffnen Sie die Zeile:
Documentsollte eine PDF-Datei enthalten, die nach der Rechnungsnummer benannt ist, undStatussollteGeneratedlauten. - Öffnen Sie den Anhang. Sie sollten eine lesbare Rechnungsseite sehen, und ein ZUGFeRD Validator sollte EN 16931 XML in derselben Datei finden.
- Fügen Sie eine Zeile mit Status
Generatedhinzu und bestätigen Sie, dass der Zap bei Schritt 2 stoppt.
Im aufgezeichneten Lauf wurde Version 1 am 24. Oktober 2026 um 00:09:01 Uhr erfolgreich abgeschlossen und die Datei ZUGFeRD_RE-2026-0011.pdf für eine Rechnung der Muster GmbH in Berlin an Test Kunde AG in Muenchen, zehn Einheiten Consulting zu je 100,50, mit einem Gesamtbetrag von 1195,95 EUR, erstellt.
What did you actually build?Konforme elektronische Rechnungsstellung aus Ihrer bestehenden Datenbank – zum Preis von nur fünf Zap-Schritten. Das System des Käufers erhält strukturierte Daten, Ihr Datensatz speichert das erstellte Dokument, und ein Status bestimmt den Versand.
Häufige Variationen, die Sie hinzufügen können, ohne den Aufbau zu wiederholen
Wie sich dies im Vergleich zu anderen Methoden zur Ausstellung einer elektronischen Rechnung verhält.
Jede Zeile beschreibt die Alternative. Die letzte Zeile ist dieser Zap.
| Vergleich | Wer leitet es? | Woher die Daten stammen | Was Sie pflegen |
|---|---|---|---|
| E-Rechnungsplattform im Vergleich zu diesem Zap | Finanzen über ein Portal | Uploads oder eine Integration | Ein Vertrag pro Dokument und eine Verbindung dazu |
| ERP-Modul im Vergleich zu diesem Zap | Finanzwesen innerhalb des ERP-Systems | Das Hauptbuch des ERP-Systems | Lizenzen und eine Migration, um Ihre Daten zu erhalten |
| Entwicklerbibliothek vs. dieser Zap | Ein Entwickler innerhalb einer Anwendung | Ihre Datenbank, durch Code | Der Code, die Schema-Aktualisierungen und die Releases |
| Dieser Zap | Jeder, der einen Zap bearbeiten kann | Die Airtable Basis, die das Team bereits pflegt | Fünf Schritte und ein JSON-Objekt |
Wir haben auch gebautthe identical flow in Make Die Unterschiede sind gering, aber real: Make filtert innerhalb des Triggers kostenlos, während Zapier einen Schritt benötigt; Make benötigt parseNumber um jeden Geldwert, während Zapier sie direkt durchleitet; und Make lädt die Datei als Bytes hoch, während Zapier Airtable eine URL übergibt.
Häufig gestellte Fragen
Was ist elektronische Rechnungsstellung?
E-Rechnung bedeutet, eine Rechnung als strukturierte, maschinenlesbare Daten auszustellen, anstatt als Bild einer Seite. Das Buchhaltungssystem des Käufers verarbeitet diese Daten und bucht sie, ohne dass jemand sie erneut eingeben muss. Genau das ist der Vorteil: Die Ersparnis liegt beim Empfänger, nicht bei Ihnen.
Eine wachsende Zahl von Rechtsordnungen verlangt es mittlerweile für den Geschäfts- und öffentlichen Handel.European standard EN 16931 definiert den Kernsatz an Feldern, und Formate wie ZUGFeRD implementieren ihn.
Was ist elektronische Rechnungsstellung?
Dasselbe. In der Gesetzgebung wird eher der Begriff „elektronische Rechnungsstellung“ verwendet, im Produktmarketing hingegen „E-Rechnung“. Beide Begriffe bezeichnen strukturierte, maschinenlesbare Rechnungsdaten und nicht etwa eine PDF-Datei im E-Mail-Anhang.
Um Missverständnisse zu vermeiden: Eine eingescannte Papierrechnung ist keine elektronische Rechnung, ebenso wenig wie ein gewöhnliches PDF. Ohne eingebettete strukturierte Daten muss der Empfänger die Rechnung immer noch lesen.
Kann Airtable Rechnungen erstellen?
Nicht konforme Formate. Airtable speichert die Daten und kann sie in einer Benutzeroberfläche oder einer druckbaren Ansicht darstellen, kann aber kein PDF/A-3-Dokument mit konformem EN 16931 XML erstellen, was jedoch in einer Vorgabe gefordert wird.
Die von diesem Zap verwendete Aufteilung ist die praktische: Airtable ist der Datensatz, PDF4me erzeugt das Artefakt, und das Artefakt wird dem Datensatz als Anhang zurückgesendet.
Wie funktioniert die Automatisierung der Kreditorenbuchhaltung?
Drei Schritte: Erfassung, Extraktion und Buchung. Bei der Erfassung werden Dokumente an einem Ort gesammelt, die Extraktion wandelt sie in Felder um, und die Buchung schreibt diese Felder mit einer vorgeschalteten Genehmigungsprüfung in das Hauptbuch.
Hybride E-Rechnungen eliminieren den Zwischenschritt. Wenn die XML-Daten bereits in der Datei enthalten sind, erfolgt die Extraktion durch Parsen statt durch Erkennen, weshalb die Vorgaben zunehmend in diese Richtung tendieren. Dieser Zap stellt die sendende Komponente dieser Lösung dar.
Fehlerbehebung
Öffnen Sie die Eingabe des Schritts im Zap-Lauf und lesen Sie sie als JSON ein. Eine leere Airtable Spalte führt zu einem leeren Schlüssel, und ein Geldbetrag, der in Anführungszeichen gesetzt wurde, wird als Text anstelle einer Zahl angezeigt. Beide erzeugen ein Objekt, das zwar korrekt aussieht, aber dennoch die Konvertierung nicht besteht.
Conformance Level bestimmt, welche Felder das Profil benötigt. Die Angabe von EN16931 führt zu einem Validierungsfehler, obwohl die JSON-Datei Schlüssel enthält, die das Profil erwartet, selbst wenn sie sich normal öffnen lässt. Ergänzen Sie die fehlenden Schlüssel oder wählen Sie ein niedrigeres Profil.
Schritt 4 setzt Status nicht oder einen Wert, der vom Filter weiterhin akzeptiert wird. Genau diese Schleife, vor Zapier in Schritt 4 warnt, wird ebenfalls angezeigt: Der Zap verarbeitet seine eigene Ausgabe erneut. Überprüfen Sie daher Filter und Aktualisierung gemeinsam.
Output Mode prüfenXmlWithPdf und dass die Schritte 4 und 5 beide die File Url aus Schritt 3 verwenden. Das Anhängen von etwas anderem sendet eine Seite, die zwar korrekt aussieht, aber nichts enthält, was deren Software lesen kann.
Nächste Schritte
Ein Mandat sieht aus wie ein Formatproblem, ist aber eigentlich ein Datenproblem. Wenn die Rechnung bereits als Zeilen vorliegt, ist der größte Teil der Arbeit erledigt.