メインコンテンツへスキップ

ZUGFeRD E-InvoiceをZapierのAirtableから取得:行をフィルタリングし、JSONを作成し、ハイブリッドPDFをメールで送信する

· 1分で読める
SEO and Content Writer

PDF4meでZUGFeRD請求書を作成 これは、構造化された請求書データをハイブリッド形式のPDF/A3電子請求書に変換するZapierアクションです。Airtableの1行を読み込み、JSONオブジェクトを読み取り可能なPDFに埋め込まれたEN 16931 XMLに変換し、そのファイルをレコードに書き戻し、購入者にメールで送信します。

電子請求書の義務化は、ファイル形式の問題として現れ、調達の問題として解決されることが多い。つまり、プラットフォームを選び、文書ごとに料金を支払い、データを移行するというものだ。この解決策は大規模な運用には適しているが、既に運用しているデータベースから月に20件の請求書を発行するチームにとっては非現実的だ。代替案は、XMLを手作業で記述することではない。請求書をJSON形式で記述し、別のツールで準拠ファイルを生成するという方法だ。

ザップの概要
1. New Record
Airtable, polling every 2 minutes. Sees every row added to the table.
2. Filter conditions
Filter by Zapier. Continues only when Status is exactly New.
3. Create ZUGFeRD Invoice
PDF4me. JSON in, PDF/A-3 with embedded EN 16931 XML out.
4. Update Record
Airtable. Writes the file, the status and a link back to the same row.
5. Send Email
Gmail. Sends the e-invoice to the buyer on the row.
要約版

Airtableの行には請求書の情報が格納されています。販売者、購入者、明細項目、合計金額です。ステータスを「新規」に設定すると、Zapがそれを取得し、該当フィールドをチェックして、PDF4meにJSONオブジェクトを渡します。すると、人間が読めて機械が解析できるPDF/A3サイズがレコードに添付され、購入者に送信されます。プラットフォームのサブスクリプションもXMLも不要で、データはベースから外部に出ることはありません。

なぜ?という問いに対する質疑応答​

請求書をXMLではなくJSONで記述する理由は何ですか? クロスインダストリーインボイスの構文は長く、深くネストされており、各コードの配置場所が厳密に定められています。JSONオブジェクトは、ビジネス用語のようなキーを使用することで、同じことをはるかに少ないスペースで表現し、PDF4meはそこから準拠したXMLを生成します。間違いやすいのは、メンテナンスされていない部分です。

ハイブリッドファイルが重要な理由とは? 請求書には2つの対象者がいるからです。購入者のシステムは埋め込まれたXMLを読み取り、誰も何も入力せずに記録します。買掛金担当者は同じファイルを開いてページを確認します。1つの成果物が両方のニーズを満たすため、 フェルド XML単独ではなく、ハイブリッド形式を指定しました。

請求書作成ステップの前にフィルターを配置する理由は何ですか? 請求書の発行は取り消しのできない操作だからです。新しい行ごとに実行されるZapは、最終的に未完成の行でも実行され、空白の明細項目を含む文書を顧客にメールで送信してしまう可能性があります。フィルターを使用することで、発行は意図的な行為となります。つまり、担当者がステータスを「新規」に設定することが指示となります。

そもそもなぜ請求書データをAirtableに保存する必要があるのか? なぜなら、それは通常、既にそこで追跡されている作業(プロジェクト、顧客、合意された料金など)の副産物だからです。それを請求書作成製品に移行してファイル形式に準拠させるということは、同じ顧客情報を2つのシステムで永久に管理することになり、しかもその形式要件は実際にはそのようなことを求めていません。


得られるもの​

入力: 請求書番号、日付、VAT ID を含む販売者ブロック、購入者ブロック、1 つの明細項目、および合計を含む Airtable の行で、ステータスは「新規」に設定されます。 出力: その記録と購入者の受信トレイに、ZUGFeRDのPDF/A-3ファイルが添付されています。

Airtable ベースの PDF4me Live Automations で ZUGFeRD Requests テーブルを開き、RE-2026-0007 行目から RE-2026-0011 行目を表示しています。通貨は EUR、販売者名は Muster GmbH (Hauptstrasse 1, 10115 Berlin DE)、販売者 VAT ID は DE123456789、購入者名は Test Kunde AG (Bahnhofstrasse 5, 80331 Muenchen DE)、商品名は Consulting、数量は 10.00、単価は 100.50、VAT レートは 19.00、ステータス列は Generated となっています。

請求書1件につき1行。ここにある各列は、Zapが送信するJSONデータのキーになります。

Gmailで受信したメッセージを表示。件名は「Your e-invoice RE-2026-0011」、本文は「Test Kunde AG」と挨拶、合計金額は1195.95ユーロ、サムネイルにはレンダリングされたドイツ語の請求書が表示されたPDFファイルが1つ添付されている。

購入者は請求書を見る。購入者の会計システムは、その請求書に含まれるXMLを認識する。


必要なもの​

  • Zapierアカウント 複数ステップのZapを可能にするプランで。 Zapierでフィルタリング 組み込み済みであり、1ステップとしてカウントされます。
  • PDF4me APIキー。 APIキーを取得してください。
  • Airtableベース占領された基地は PDF4me Live Automations テーブル名 ZUGFeRD Requests請求書ヘッダー、VAT ID を含む販売者ブロック、購入者ブロック、明細項目フィールド、NetTotal、VATAmount、GrossTotal、Email 列、Status フィールド、添付ファイルフィールドが含まれています。 Document。
  • Gmailアカウント Zapierに接続済み。
  • 販売者情報(VAT IDを含む)これらは列から生成されるため、1つのデータベースで複数の法人に対して請求書を発行できます。
完成した記事をまずご覧ください
これは、キャプチャされたZapがRE-2026-0011行に対して生成したファイルそのものです。ページを表示するにはリーダーで開き、埋め込まれたXMLを表示するにはZUGFeRDバリデーターで開いてください。
sample-output-zugferd-re-2026-0011.pdf をダウンロードしてください。

ザップの概要​

  1. 新記録 (Airtable)は、新しい行ごとに発火します。 ZUGFeRD Requests。
  2. フィルター条件 (Zapier によるフィルタリング) ステータスが正確に New。
  3. ZUGFeRD請求書を作成する (PDF4me)はJSONをハイブリッドPDFに変換します。
  4. レコードの更新 (Airtableは)ファイル、ステータス、および行へのリンクを書き込みます。
  5. メールを送信する (Gmail)は電子請求書を買い手に配信します。

Zapの概要​

Zapierの実行詳細には、バージョン1と2026年10月24日午前0時09分01秒に正常に実行されたことが示されており、5つのステップそれぞれに緑色のチェックマークが付いています。Airtableの新規レコード(2分間隔スケジュール)は「新規レコード1件検出」、Zapierによるフィルタは実行がルールに合格したことを示し、PDF4meのZUGFeRD請求書作成は「新規ZUGFeRD請求書1件送信」、Airtableのレコード更新は「新規レコード1件送信」、Gmailのメール送信は「新規メッセージ1件送信」と報告しています。

Swiss QR Zapと同じ5段階の構成です。真ん中のPDF4meのステップだけが異なります。


ステップ1:Airtableの新しい行からZapをトリガーするにはどうすればよいですか?​

これまでの流れ: まだ何も起きていない。これが引き金だ。

  1. Zapを作成して選択する エアテーブル > 新記録。
  2. 選択してください ベース PDF4me Live Automations そして テーブル ZUGFeRD Requests。
  3. テスト。Zapierが報告します。 Airtableで新しいレコードが1件見つかりました そして、これらの列は下流工程で利用可能になる。

投票バッジにはこう書かれている 2分これは、この手順ではなく計画から来るものです。


ステップ2:Zapが未完了の行に対して請求書を発行しないようにするにはどうすればよいですか?​

これまでの流れ: Airtableのトリガー。

  1. 追加 Zapierでフィルタリング > 以下の条件を満たす場合のみ続行してください。。
  2. ルールを一つ作る: 1. ステータス / (テキスト)完全に一致する / New。
  3. 試してみてください。

フィルタ条件の設定​

Zapierによるフィルタリング手順2 ルール「1. ステータステキストが『新規』と完全に一致する場合のみ続行」を表示する設定およびテストパネル。その下に「Zapは続行され、2026-10-23 20:38:52にテストレコードが作成され、一致したアイテムのリストにステータス: 新規が表示されます」という緑色の結果ボックスが表示されます。

緑色の枠は、レコードを通過させたフィールドの名前を示しています。黄色の枠は、レコードを阻止したフィールドの名前を示しています。

ヒント。 完全に一致する 大文字と小文字を区別するため、 新しい そして 新しい 末尾にスペースがあると、どちらの場合もすべての行でエラーがサイレントに発生します。ステータスを自由記述テキストではなく単一選択式にすると、この問題は発生しなくなります。


ステップ3:行をZUGFeRD請求書に変換するにはどうすればよいですか?​

これまでの流れ: トリガーとフィルター。

  1. 追加 PDF4me > ZUGFeRD請求書を作成する。
  2. 出力オプションを設定します。
    • ファイル名: ZUGFeRD_ プラス 請求書番号 プラス .pdf
    • 入力形式: JSON
    • 出力モード: XmlWithPdf
    • ツークフェルト版: 2+
    • 適合レベル: EN16931
    • PDF形式で請求書を作成する: True
    • 離れる ファイル ご自身でレターヘッドページをご用意いただく場合を除き、空欄のままにしてください。
  3. オブジェクトを貼り付ける 請求書のJSONデータ そして、各Airtableフィールドをそれにマッピングします。
{
"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"
}
}

注目すべき点が3つあります。 TypeCode 380 これは商業請求書のコードであり、固定されています。 UnitCode C62 は「何かの1つ」を表すUN/ECEコードで、時間やサービス単位などに必要なものです。 PaymentReference で Payment block とは、購入者が支払い時に引用するテキストのことで、ここでは請求書番号のみです。

ZUGFeRD請求書構成を作成する​

PDF4meの「ZUGFeRD請求書の作成」ステップでは、空のファイルフィールド、ファイル名ZUGFeRD_、請求書番号RE-2026-0011、拡張子.pdf、入力形式JSON、Airtableトークンが各キーにマッピングされた請求書JSONデータブロック(販売者Muster GmbH、購入者Test Kunde AG、数量10、単価100.5、正味合計1005、VAT率19、VAT金額190.95、総計1195.95を含む)、出力モードXmlWithPdf、Zugferdバージョン2、適合レベルEN16931、PDFへの請求書レンダリングがTrueに設定されていることが示されています。

すべての値はAirtableトークンです。グリッド上では191と1196と表示されますが、VAT金額は190.95、総計は1195.95であることに注意してください。

各設定が決定する内容​

分野ここで価値それが制御するもの
入力形式JSON既製のXMLやCSV行ではなく、構造化されたオブジェクトを提供する。
出力モードXmlWithPdfハイブリッドファイルを1つ返します。 XmlOnly 請求書のXMLのみを返します
ツークフェルト版2+2.x世代はEN 16931に準拠しています。従来の1.0は準拠していません。
適合レベルEN16931請求書が満たすべきプロファイル、したがってJSONで提供しなければならないキー
PDF形式で請求書を作成するTrue同じデータから読みやすいページを作成します。ファイルが指定されていない場合、これがファイルに人間が理解できる部分を与えます。
ファイル空のレターヘッド付きのベースPDFを配置する場所

小数点以下の数値については、グリッドを信用しないでください。 AirtableにはVATAmountが表示されます 191 および総計 1196 数値フィールドの精度設定のためだが、トークンは 190.95 そして 1195.95そして、それが請求書に反映されます。誰かが列と発行済み文書を照合しようとする前に、精度を広げてください。


ステップ4:請求書を記録に書き戻すにはどうすればよいですか?​

これまでの流れ: PDF4meの手順を経たすべてのこと。

  1. 追加 エアテーブル > レコードの更新。
  2. 設定する:
    • ベース PDF4me Live Automations、 テーブル ZUGFeRD Requests
    • 記録: その ID トリガーから
    • 添付ファイルを追加する: False
    • 書類: その ファイルURL ステップ3から
    • 状態: Generated
  3. 上書きされないように、他のフィールドはすべて空欄にしてください。

レコード構成の更新​

Airtable Update Record ステップに黄色の警告バナーが表示され、「Zap ループの可能性が検出されました。このステップは、上記のトリガー イベントと同様に動作するため、Zap でループを引き起こす可能性があります。」と表示されます。Base PDF4me Live Automations、Table ZUGFeRD Requests、Record がトリガー ID にマッピングされ、Append attachments が False に設定され、Title、InvoiceNumber、InvoiceDate、DueDate、Currency から始まる空のオプション フィールドのリストが表示されます。

一番上の警告文こそ読むべきものです。それより下は意図的に空欄になっています。

「ザップループの可能性を検出しました」は、ノイズではなく、実際の警告です。 このステップは、Zap がトリガーするテーブルに書き込みを行うため、その更新によって Zap が再び起動する可能性があります。ここでは、更新によって Status が設定されるため、起動しません。 Generated ステップ2のフィルターは、 Newフィルターと今回のアップデートは同一の仕組みです。どちらかを変更したら、両方とも再確認してください。


ステップ5:電子請求書をバイヤーに送信するにはどうすればよいでしょうか?​

これまでの流れ: 記録更新を通じてすべて。

  1. 追加 Gmail > メールを送信する。
  2. 設定する:
    • に: その メール トリガーからの列
    • 主題: Your e-invoice プラス 請求書番号
    • 体型: Html
    • 体購入者名、請求書番号、合計金額を記載した短い挨拶
    • 添付ファイル: その ファイルURL ステップ3から

メール送信設定​

Gmailのメール送信ステップで、宛先フィールドにAirtableトリガーからマッピングされたメール値が格納されていることを示す。

添付ファイルは、手順4でAirtableに書き込んだファイルURLと同じなので、レコードとメールには常に同じファイルが添付されます。


Zapを実行して検証する​

  1. 公開 ザップ。
  2. 行を追加 ZUGFeRD Requests 売り手、買い手、1行の商品、日付とステータスの両方を含む New。
  3. 投票結果をお待ちください。5つのステップすべてが緑色になるはずです。
  4. 行を開く: Document 請求書番号と同じ名前のPDFファイルが含まれている必要があり、 Status 読むべき Generated。
  5. 添付ファイルを開いてください。読みやすい請求書ページが表示され、ZUGFeRDバリデーターが同じファイル内にEN 16931 XMLを検出するはずです。
  6. ステータスの行を追加します Generated そして、ステップ2でZapが停止することを確認します。

キャプチャされた実行では、バージョン 1 は 2026 年 10 月 24 日午前 12 時 9 分 1 秒に正常に完了し、以下の結果を出力しました。 ZUGFeRD_RE-2026-0011.pdf ベルリンのMuster GmbHからミュンヘンのTest Kunde AGへの請求書には、コンサルティング10単位(100.50ユーロ)が含まれており、合計金額は1195.95ユーロです。

実際に何を作ったのですか? 既に運用しているデータベースから、わずか5ステップのZap操作で、法令遵守に準拠した電子請求書を作成できます。購入者のシステムには構造化データが送信され、貴社の記録には生成されたデータが保持され、ステータスフィールド1つで送信内容が決定されます。


再構築せずに追加できる一般的なバリエーション​

複数行の請求書
LineItemsは配列です。リンクされたテーブルに行を保持し、Find Recordsステップでそれらを取得し、ステップ3の前にFormatterまたはCode by Zapierを使用して配列を構築します。
レターヘッドに載せてください
ファイルフィールドにはベースとなるPDFファイルを指定します。ブランドロゴ入りのページを入力すれば、「PDFに請求書を描画」機能は空白のページではなく、そのページ上に請求書を描画します。
XMLも別々に保存してください。
購入者によっては、構造化ファイル単体を希望する場合があります。その場合は、出力モードを「XmlOnly」に設定して再度アクションを実行し、その結果をPDFファイルと一緒に添付してください。
購入者ごとにフォーマットを切り替える
フォーマット列とパス手順を追加します。ドイツの公共部門の購買担当者は通常、ハイブリッドファイルではなくXRechnungを希望しますが、これはルーティングの決定事項であり、再構築ではありません。

他の電子請求書発行方法との比較​

各行は代替案を示しています。最後の行はこのZapです。

比較誰が運営しているのかデータの出所あなたが維持するもの
電子請求書プラットフォームとこのZapの比較ポータルを通じて金融アップロードまたは統合文書ごとの契約とそれとの関連性
ERPモジュールとこのZapの比較ERPシステム内の財務ERP独自の台帳ライセンス、およびデータを移行するための
開発者ライブラリとこのZapの比較アプリケーション内の開発者コードを通してデータベースをコード、スキーマの更新、リリース
このザップZapを編集できる人なら誰でもチームが既に保持しているAirtableベース5つのステップと1つのJSONオブジェクト

また、私たちは Makeにおける同一の流れ違いは小さいが、確かに存在する。Zapierが1ステップを費やすトリガー内でフィルターを無料で作成し、ニーズを満たす。 parseNumber Zapier が直接マッピングするすべての金額値の周りに、Make はファイルをバイトとしてアップロードし、Zapier はそれを Airtable に URL として渡します。


よくある質問​

電子請求書とは何ですか?​

電子請求書とは、請求書を紙の画像ではなく、機械が読み取れる構造化データとして発行することを意味します。購入者の会計システムがそれを解析し、誰も再入力することなく処理するため、コスト削減は購入者側で実現します。つまり、コスト削減のメリットは購入者側にあるのです。

現在、ビジネスや公共部門の取引において、ますます多くの管轄区域がこれを要求している。 欧州規格 EN 16931 これはコアとなるフィールドセットを定義し、ZUGFeRDのようなフォーマットはそれを実装する。

電子請求書とは何ですか?​

どちらも同じ意味です。「電子請求書」は法律用語として使われる傾向があり、「e-請求書」は製品マーケティング用語として使われる傾向がありますが、どちらも電子メールに添付されたPDFファイルではなく、構造化された機械可読な請求書データを意味します。

何が電子請求書に該当しないのかを明確にしておくことが重要です。スキャンした紙の請求書は電子請求書ではありませんし、通常のPDFファイルも同様です。構造化データが埋め込まれていない場合、受信者はそれを読み取らなければなりません。

Airtableで請求書を作成できますか?​

規格に準拠していません。Airtableはデータを保持し、インターフェースや印刷可能なビューにレイアウトできますが、規制で求められているEN 16931 XMLに準拠したPDF/A-3ファイルを作成することはできません。

このZapが使用する分割方法は実用的です。Airtableがレコードとなり、PDF4meが成果物を生成し、その成果物が添付ファイルとしてレコードに戻されます。

買掛金自動化はどのように機能するのですか?​

3つの段階、すなわち取り込み、抽出、そして転記が行われる。取り込みでは文書を1か所に集約し、抽出ではそれらをフィールドに変換し、転記では承認ゲートを介してそれらのフィールドを台帳に書き込む。

ハイブリッド電子請求書は中間部分を省略します。XMLが既にファイル内に含まれている場合、抽出は認識ではなく解析となるため、規制当局はハイブリッド方式への移行を強く求めています。このZapは、その仕組みにおける送信側の役割を担います。


トラブルシューティング​

このアクションは請求書のJSONを拒否します

Zap実行でステップの入力を開き、JSONとして読み込みます。Airtableの列が空の場合、キーが空になり、引用符で囲まれた金額が数値が期待される場所にテキストとして渡されます。どちらの場合も、見た目は問題ないオブジェクトが生成されますが、変換は失敗します。

バリデーターが適合レベルを拒否する

適合レベルは、プロファイルに必要なフィールドを決定します。JSONファイルにプロファイルが期待するキーが欠落している状態でEN16931を主張すると、ファイルが正常に開いたとしても検証に失敗します。欠落しているキーを指定するか、より低いプロファイルに切り替えてください。

同じ請求書が2回発行される

ステップ4では、ステータスが設定されていないか、フィルターが通過する値が設定されています。これは、Zapierがステップ4で警告しているループ、つまりZapが自身の出力を再処理している状態です。フィルターと更新を一緒に確認してください。

購入者は、ファイルにXMLが含まれていないと言っています。

出力モードを確認してください XmlWithPdf そして、手順4と手順5はどちらも手順3のファイルURLを使用します。それ以外のものを添付すると、見た目は正しくても、ソフトウェアが読み取れる内容を含まないページが送信されます。


次のステップ​

委任状はフォーマットの問題のように見えますが、実際はデータの問題です。請求書が既に行として存在する場合は、ほとんどの作業は完了しています。