Facture électronique ZUGFeRD depuis Airtable via Zapier: filtrer les lignes, générer le JSON, envoyer le PDF hybride par e-mail

PDF4me Create ZUGFeRD Invoice est une action Zapier qui convertit les données structurées d'une facture en une facture électronique hybride PDF/A-3. À partir d'une ligne Airtable, elle transforme un objet JSON en XML EN 16931 intégré dans un PDF lisible, réécrit le fichier dans l'enregistrement et l'envoie par e-mail à l'acheteur.
L'obligation de facturation électronique est perçue comme un problème de format de fichier et résolue comme un problème d'approvisionnement: choisir une plateforme, payer à la facture, migrer ses données. Cette solution est acceptable à grande échelle, mais absurde pour une équipe qui émet vingt factures par mois à partir d'une base de données existante. L'alternative n'est pas de saisir manuellement le XML. Il s'agit de décrire la facture au format JSON et de laisser un logiciel tiers générer le fichier conforme.
Une ligne Airtable contient la facture: vendeur, acheteur, un article et les totaux. Définissez Status sur New et le Zap la récupère, vérifie ce champ et transmet PDF4me un objet JSON. Un PDF/A-3, lisible par un humain et exploitable par une machine, est alors généré, joint à l’enregistrement et envoyé à l’acheteur. Aucun abonnement à une plateforme, aucun fichier XML: les données restent dans la base.
Questions et réponses basées sur le pourquoi
Why describe the invoice as JSON rather than XML?La syntaxe des factures intersectorielles est longue, complexe et très stricte quant à l'emplacement de chaque code. L'objet JSON exprime la même information en beaucoup plus petit, avec des clés qui ressemblent à des termes métiers, et PDF4me génère à partir de là le XML conforme. La partie la plus facile à mal gérer est celle que vous n'avez pas à maintenir.
Why does the hybrid file matter?Parce qu'une facture a deux destinataires. Le système de l'acheteur lit le XML intégré et l'enregistre sans aucune saisie manuelle; le service comptabilité fournisseurs ouvre le même fichier et consulte une page. Un seul document suffit aux deux, et c'est pourquoiFeRD Il a spécifié un format hybride plutôt que du XML seul.
Why put a Filter in front of the invoice step?L'émission d'une facture étant irréversible, un Zap déclenché à chaque nouvelle ligne finira par s'exécuter sur une ligne incomplète et enverra par e-mail au client un document avec une ligne vide. Le filtre rend l'émission volontaire: une personne définit Status sur New, et cela constitue l'instruction.
Why keep the invoice data in Airtable at all?Car il s'agit généralement d'un sous-produit d'un travail déjà suivi: le projet, le client, le tarif convenu. Transférer ces informations dans un logiciel de facturation pour respecter un format de fichier revient à gérer indéfiniment le même client dans deux systèmes, alors que le format requis ne l'exige pas.
Ce que vous obtiendrez
Entrée: une ligne Airtable contenant le numéro de facture, les dates, un bloc vendeur avec un numéro de TVA, un bloc acheteur, un article et les totaux, avec Status « New. Sortie: un document ZUGFeRD PDF/A-3 associé à cet enregistrement et disponible dans la boîte de réception de l’acheteur.

Une ligne par facture. Chaque colonne devient une clé dans le JSON envoyé par Zap.

L'acheteur voit une facture. Son système comptable y voit le code XML.
Ce dont vous avez besoin
- A Zapier accountsur un forfait qui autorise les Zaps en plusieurs étapes.Filter by Zapier est intégré et compte comme une étape.
- Clé API PDF4me. Obtenez votre clé API.
- An Airtable baseLa base capturée est
PDF4me Live Automationsavec une table nomméeZUGFeRD Requests, contenant l'en-tête de la facture, le bloc vendeur incluant un numéro de TVA, le bloc acheteur, les champs de ligne, NetTotal, VATAmount et GrossTotal, une colonne Email, un champ Status et un champ de pièce jointe appeléDocument. - A Gmail accountconnecté à Zapier.
- Your seller details including a VAT IDElles proviennent de colonnes, de sorte qu'une base peut facturer pour plusieurs entités juridiques.
Le Zap en bref
- New Record (Airtable) se déclenche à chaque nouvelle ligne dans
ZUGFeRD Requests. - Filter conditions (Filter by Zapier) se poursuivent uniquement lorsque Status est exactement
New. - Create ZUGFeRD Invoice (PDF4me) convertit le JSON en un PDF hybride.
- Update Record (Airtable) enregistre le fichier, le statut et un lien vers la ligne.
- Send Email (Gmail) permet de transmettre la facture électronique à l'acheteur.
Aperçu complet de Zap

Il présente la même structure en cinq étapes que le QR Zap suisse. Seule l'étape PDF4me centrale diffère.
Étape 1: Comment déclencher un Zap à partir d’une nouvelle ligne Airtable?
Déroulement jusqu'à présent: rien pour l'instant, ceci est le déclencheur.
- Créez un Zap et sélectionnez Airtable > New Record.
- Choisissez les
PDF4me Live AutomationsBase et lesZUGFeRD RequestsTable. - Test. Zapier signale avoir trouvé 1 nouvel enregistrement dans Airtable et les colonnes deviennent disponibles en aval.
Le badge de sondage indique 2 min, ce qui provient du plan plutôt que de cette étape.
Étape 2: Comment empêcher Zap de facturer une ligne à moitié terminée?
Déroulement jusqu'à présent: le déclencheur Airtable.
- Ajouter Filter by Zapier > Only continue if....
- Créez une règle: 1. Status / (Texte) Exactly matches /
New. - Testez-le.
configuration Filter conditions

Le cadre vert indique le champ qui a autorisé l'enregistrement. Le cadre jaune correspondant indique celui qui l'a bloqué.
Tip.Exactly matches est sensible à la casse et aux espaces, doncnew etNew La présence d'un espace final provoque une erreur silencieuse sur chaque ligne. Pour résoudre ce problème, il est conseillé Make Status à une seule option plutôt qu'à du texte libre.
Étape 3: Comment transformer la ligne en une facture ZUGFeRD?
Déroulement jusqu'à présent: le déclencheur et le filtre.
- Ajouter PDF4me > Create ZUGFeRD Invoice.
- Configurez les options de sortie:
- File Name:
ZUGFeRD_suivi du Invoice Number et de l'extension.pdf - Input Format:
JSON - Output Mode:
XmlWithPdf - Zugferd Version:
2+ - Conformance Level:
EN16931 - Render Invoice On Pdf:
True - Laissez File vide sauf si vous fournissez votre propre page à en-tête.
- File Name:
- Collez l'objet dans Invoice Json Data et associez-y chaque champ 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"
}
}
Trois éléments méritent une attention particulière. TypeCode 380 est le code d'une facture commerciale et est fixe. UnitCode C62 est le code UN/ECE pour « une unité de quelque chose », ce qui correspond aux heures ou aux unités de service. Enfin, PaymentReference dans le bloc Payment est le texte que l'acheteur indique lors du paiement; ici, il s'agit simplement du numéro de facture.
Create ZUGFeRD Invoice

Chaque valeur correspond à un jeton Airtable. Veuillez noter que VAT Amount de 190,95 et Gross Total 1195,95, même si le tableau les affiche comme 191 et 1196.
Ce que chaque paramètre détermine
| Champ | Valeur ici | Ce qu'il contrôle |
|---|---|---|
| Input Format | JSON | Vous devez fournir un objet structuré plutôt qu'un fichier XML prêt à l'emploi ou une ligne CSV. |
| Output Mode | XmlWithPdf | Renvoie un fichier hybride. XmlOnly renvoie uniquement le fichier XML de la facture. |
| Zugferd Version | 2+ | La génération 2.x, c'est-à-dire celle qui est conforme à EN 16931 L'ancienne génération 1.0 ne l'est pas. |
| Conformance Level | EN16931 | Le profil auquel la facture prétend correspondre, et donc les clés que le JSON doit fournir. |
| Render Invoice On Pdf | True | À partir des mêmes données, créez une page lisible. En l'absence de fichier fourni, c'est ce qui donne au fichier sa dimension humaine. |
| Déposer | vide | Où se trouverait un PDF de base avec votre en-tête? |
Do not trust the grid for decimals.Airtable affiche VATAmount 191 et GrossTotal 1196 en raison du paramètre de précision du champ numérique, mais les jetons contiennent respectivement 190.95 et 1195.95, et ce sont ces valeurs qui figurent sur la facture. Il est donc nécessaire d'augmenter la précision avant toute tentative de rapprochement d'une colonne avec un document émis.
Étape 4: Comment réinscrire la facture dans le registre?
Déroulement jusqu'à présent: tout est passé par l'étape PDF4me.
- Ajouter Airtable > Update Record.
- Configure:
- Base
PDF4me Live Automations, TableauZUGFeRD Requests - Record: l’ ID du déclencheur
- Append attachments:
False - Document: l' File Url de l'étape 3
- Status:
Generated
- Base
- Laissez un champ sur deux vide afin que rien ne soit écrasé.
Update Record

C’est l’avertissement en haut de page qu’il faut lire. Tout ce qui suit est volontairement vide.
"Possible Zap loop detected" is a real warning, not noise.Cette étape écrit dans la table qui déclenche le Zap; sa propre mise à jour pourrait donc réactiver le Zap. Ce n'est pas le cas ici, car la mise à jour définit Status sur Generated et le filtre de l'étape 2 ne laisse passer que New. Le filtre et cette mise à jour forment un seul et même mécanisme; modifiez l'un ou l'autre et vérifiez à nouveau les deux.
Étape 5: Comment envoyez-vous la facture électronique à l'acheteur?
Déroulement jusqu'à présent: tout est passé par la mise à jour de l'enregistrement.
- Ajouter Gmail > Send Email.
- Configure:
- To: la colonne Email du déclencheur
- Subject:
Your e-invoiceet le Invoice Number - Body type:
Html - Body: une brève formule de salutation mentionnant le nom de l’acheteur, le numéro de facture et le montant total.
- Attachments: l' File Url de l'étape 3
Configuration Send Email

La pièce jointe correspond à la même File Url que celle enregistrée à l'étape 4 dans Airtable; l'enregistrement et l'e-mail contiennent donc toujours le même fichier.
Exécutez le Zap et vérifiez
- Publish le Zap.
- Ajoutez une ligne aux
ZUGFeRD Requestsavec un vendeur, un acheteur, un article, les deux dates et StatusNew. - Attendez le résultat du sondage. Les cinq étapes doivent être validées au vert.
- Ouvrez la ligne:
Documentdoit contenir un PDF nommé d’après le numéro de facture, etStatusdoit indiquerGenerated. - Ouvrez la pièce jointe. Vous devriez y voir une page de facture lisible, et un validateur ZUGFeRD devrait y trouver du code XML EN 16931.
- Ajoutez une ligne avec Status
Generatedet vérifiez que le Zap s'arrête à l'étape 2.
Dans l'exécution capturée, la version 1 s'est terminée avec succès le 24 octobre 2026 à 00h09:01, produisant ZUGFeRD_RE-2026-0011.pdf pour une facture de Muster GmbH à Berlin à Test Kunde AG à Muenchen, dix unités de Consulting à 100,50, pour un total de 1195,95 EUR.
What did you actually build?Facturation électronique conforme à partir de votre base de données existante, en seulement cinq étapes Zap. Le système de l'acheteur reçoit des données structurées, votre système conserve le document généré et un seul champ Status détermine les informations à envoyer.
Variantes courantes que vous pouvez ajouter sans reconstruction
Comment cela se compare-t-il aux autres méthodes d'émission de factures électroniques?
Chaque ligne décrit l'alternative. La dernière ligne correspond à ce Zap.
| Comparaison | Qui le dirige? | D'où proviennent les données? | Ce que vous entretenez |
|---|---|---|---|
| Plateforme de facturation électronique vs ce Zap | La finance, via un portail | Téléchargements ou intégration | Un contrat par document et un lien avec celui-ci |
| Module ERP vs ce Zap | La finance, au sein de l'ERP | Le propre registre du progiciel de gestion intégré (PGI) | Licences et migration pour transférer vos données dans |
| Bibliothèque de développement vs ce Zap | Un développeur, à l'intérieur d'une application | Votre base de données, via le code | Le code, les mises à jour du schéma et les versions |
| Ce Zap | Toute personne pouvant modifier un Zap | L'équipe conserve déjà la base Airtable | Cinq étapes et un objet JSON |
Nous avons également construitthe identical flow in Make Les différences sont minimes mais bien réelles: Make gratuitement des filtres à l’intérieur du déclencheur là où Zapier y consacre une étape; Make a besoin parseNumber pour chaque valeur monétaire alors que Zapier les mappe directement; et Make télécharge le fichier sous forme d’octets alors que Zapier fournit une URL Airtable.
Questions fréquentes
Qu'est-ce que la facturation électronique?
La facturation électronique consiste à émettre une facture sous forme de données structurées lisibles par machine, et non sous forme d'image papier. Le système comptable du client l'analyse et l'enregistre automatiquement, sans aucune saisie supplémentaire. C'est là tout l'intérêt: les économies sont réalisées par le client, pas par vous.
Un nombre croissant de juridictions l'exigent désormais pour les échanges commerciaux, tant dans le secteur privé que public.European standard EN 16931 définit l'ensemble de champs de base, et des formats comme ZUGFeRD l'implémentent.
Qu'est-ce que la facturation électronique?
C'est la même chose. On parle généralement de « facturation électronique » dans la législation et de « facturation en ligne » dans le marketing des produits; les deux termes désignent des données de facture structurées et lisibles par machine, et non un PDF joint à un courriel.
Il est important de préciser ce qui n'est pas considéré comme une facturation électronique: une facture papier scannée n'en est pas une, pas plus qu'un simple PDF. Sans données structurées intégrées, le destinataire doit encore la lire.
Airtable peut-il créer des factures?
Les fichiers non conformes ne sont pas compatibles. Airtable stocke les données et peut les présenter dans une interface ou une vue imprimable, mais ne peut pas produire un PDF/A-3 contenant un XML conforme à la norme EN 16931, comme l'exige le mandat.
La répartition utilisée par ce Zap est la plus pratique: Airtable est l’enregistrement, PDF4me produit le document, et le document est renvoyé à l’enregistrement en tant que pièce jointe.
Comment fonctionne l'automatisation des comptes fournisseurs?
Le processus comporte trois étapes: la réception, l’extraction et la comptabilisation. La réception centralise les documents, l’extraction les transforme en champs, et la comptabilisation inscrit ces champs dans le registre après validation.
Les factures électroniques hybrides suppriment l'étape intermédiaire. Lorsque le XML est déjà intégré au fichier, l'extraction consiste en un traitement plutôt qu'en une simple reconnaissance, ce qui explique la tendance croissante des réglementations à privilégier cette solution. Ce Zap gère l'envoi des factures.
Dépannage
Ouvrez l'entrée de l'étape dans l'exécution Zap et lisez-la au format JSON. Une colonne Airtable vide laisse une clé vide, et une valeur monétaire entre guillemets arrive sous forme de texte alors qu'un nombre est attendu. Dans les deux cas, l'objet produit semble correct, mais la conversion échoue.
Conformance Level détermine les champs requis par le profil. Si vous déclarez être conforme à la norme EN16931 alors que le fichier JSON omet des clés attendues par le profil, la validation échouera, même si le fichier s'ouvre correctement. Veuillez fournir les clés manquantes ou utiliser un niveau de conformité inférieur.
L'étape 4 ne définit pas Status, ou bien elle définit une valeur que le filtre transmet toujours. C'est également la boucle signalée Zapier à l'étape 4: le Zap retraite sa propre sortie. Vérifiez le filtre et la mise à jour conjointement.
Vérifiez que Output Mode estXmlWithPdf et que les étapes 4 et 5 utilisent toutes deux l' File Url de l'étape 3. Joindre autre chose envoie une page qui semble correcte mais qui ne contient rien que leur logiciel puisse lire.
Prochaines étapes
Un mandat peut sembler être un problème de format, mais il s'agit en réalité d'un problème de données. Si la facture existe déjà sous forme de lignes, la majeure partie du travail est effectuée.