Fattura elettronica ZUGFeRD da Airtable in Zapier: filtra le righe, crea il JSON, invia il PDF ibrido via email

PDF4me Create ZUGFeRD Invoice è un'azione Zapier che converte i dati strutturati di una fattura in una fattura elettronica ibrida PDF/A-3. Leggendo una riga Airtable, trasforma un oggetto JSON in XML EN 16931 incorporato in un PDF leggibile, riscrive il file nel record e lo invia via email all'acquirente.
Le normative sulla fatturazione elettronica si presentano come un problema di formato file e vengono risolte come un problema di approvvigionamento: scegliere una piattaforma, pagare per documento, migrare i dati al suo interno. Questa soluzione è ragionevole su larga scala, ma assurda per un team che emette venti fatture al mese utilizzando un database già in uso. L'alternativa non è scrivere manualmente il codice XML, bensì descrivere la fattura in formato JSON e lasciare che sia un sistema esterno a generare il file conforme.
Una riga Airtable contiene la fattura: venditore, acquirente, una voce di spesa, i totali. Impostando Status su New, Zap la rileva, controlla quel campo e invia PDF4me un oggetto JSON. Il risultato è un PDF/A-3 leggibile da una persona e analizzabile da una macchina, allegato al record e inviato all'acquirente. Nessun abbonamento alla piattaforma, nessun XML e i dati non lasciano mai il database.
Domande e risposte basate sul "perché"
Why describe the invoice as JSON rather than XML?Poiché la sintassi delle fatture intersettoriali è lunga, profondamente annidata e rigida riguardo alla posizione di ciascun codice, l'oggetto JSON esprime lo stesso concetto in uno spazio molto più ridotto, con chiavi che si leggono come termini commerciali, e PDF4me ne genera un XML conforme. La parte in cui è più facile commettere errori è quella che non viene gestita direttamente.
Why does the hybrid file matter?Perché una fattura ha due destinatari. Il sistema dell'acquirente legge l'XML incorporato e lo registra senza che nessuno debba digitare nulla; la persona della contabilità fornitori apre lo stesso file e visualizza una pagina. Un unico documento soddisfa entrambi, ed è per questo cheFeRD è stata specificata una soluzione ibrida anziché il solo XML.
Why put a Filter in front of the invoice step?Perché l'emissione di una fattura non è un'azione reversibile. Uno Zap che si attiva a ogni nuova riga finirà per attivarsi anche su una riga incompleta e invierà al cliente un documento con una riga vuota. Il filtro rende l'emissione un'azione deliberata: una persona imposta Status su New e questa è l'istruzione.
Why keep the invoice data in Airtable at all?Perché di solito è un sottoprodotto del lavoro già tracciato lì: il progetto, il cliente, la tariffa concordata. Spostarlo in un prodotto di fatturazione per soddisfare un formato di file significa mantenere lo stesso cliente in due sistemi per sempre, e il requisito del formato in realtà non ti chiede di fare questo.
Cosa riceverai
Input: una riga Airtable con il numero di fattura, le date, un blocco venditore con partita IVA, un blocco acquirente, una voce e i totali, con Status impostato su New. Output: un PDF/A-3 ZUGFeRD relativo a tale record e nella casella di posta dell'acquirente.

Una riga per fattura. Ogni colonna qui diventa una chiave nel JSON inviato da Zap.

L'acquirente vede una fattura. Il suo sistema contabile vede il codice XML al suo interno.
Di cosa hai bisogno
- A Zapier accountsu un piano che consente Zap a più fasi.Filter by Zapier è integrato e conta come un passaggio.
- Chiave API PDF4me. Ottieni la tua chiave API.
- An Airtable baseLa base dati acquisita è
PDF4me Live Automationscon una tabella denominataZUGFeRD Requests, che contiene l'intestazione della fattura, il blocco del venditore con il codice IVA, il blocco dell'acquirente, i campi delle voci di riga, NetTotal, VATAmount e GrossTotal, una colonna Email, un campo Status e un campo allegato chiamatoDocument. - A Gmail accountconnesso a Zapier.
- Your seller details including a VAT IDProvengono da colonne, quindi un'unica base dati può fatturare per diverse entità legali.
Zap in sintesi
- New Record (Airtable) viene attivato per ogni nuova riga nelle
ZUGFeRD Requests. - Filter conditions (Filter by Zapier) continuano solo quando Status è esattamente
New. - Create ZUGFeRD Invoice (PDF4me) converte il file JSON in un PDF ibrido.
- Update Record (Airtable) scrive il file, lo stato e un collegamento alla riga.
- Send Email (Gmail) recapita la fattura elettronica all'acquirente.
Panoramica completa di Zap

Stessa struttura a cinque fasi dello Swiss QR Zap. Solo la fase centrale, quella relativa PDF4me è diversa.
Passaggio 1: Come si attiva uno Zap da una nuova riga Airtable?
Flusso finora: ancora niente, questo è il trigger.
- Crea uno Zap e seleziona Airtable > New Record.
- Seleziona Automazioni Live Base
PDF4me Live Automationse la TableZUGFeRD Requests. - Test. Zapier segnala di aver trovato 1 nuovo record in Airtable e le colonne diventano disponibili a valle.
Il badge del seggio elettorale riporta la dicitura 2 min, che proviene dal piano e non da questa specifica fase.
Passaggio 2: Come si impedisce a Zap di fatturare una riga non completata?
Flusso finora: il trigger Airtable.
- Aggiungi Filter by Zapier > Only continue if...
- Crea una regola: 1. Status / (Testo) Exactly matches /
New. - Provalo.
Configurazione Filter conditions

Il riquadro verde indica il campo che ha permesso al record di passare. Il riquadro giallo corrispondente indica quello che lo ha bloccato.
Tip.Exactly matches è sensibile alle maiuscole e agli spazi bianchi, quindinew ENew Con uno spazio finale, entrambi i metodi falliscono silenziosamente su ogni riga. Make Status come selezione singola anziché come testo libero, il problema non si presenta.
Passaggio 3: Come si trasforma la riga in una fattura ZUGFeRD?
Flusso finora: il trigger e il filtro.
- Aggiungi PDF4me > Create ZUGFeRD Invoice.
- Imposta le opzioni di output:
- File Name:
ZUGFeRD_seguito dal Invoice Number e dall'estensione.pdf - Input Format:
JSON - Output Mode:
XmlWithPdf - Zugferd Version:
2+ - Conformance Level:
EN16931 - Render Invoice On Pdf:
True - Lascia File vuoto a meno che tu non stia fornendo la tua carta intestata.
- File Name:
- Incolla l'oggetto in Invoice Json Data e mappa ogni campo Airtable al suo interno:
{
"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"
}
}
Ci sono tre elementi su cui vale la pena soffermarsi. TypeCode 380 è il codice per una fattura commerciale ed è fisso. UnitCode C62 è il codice UN/ECE per "un'unità di qualcosa", che è quello che serve per ore o unità di servizio. Infine, PaymentReference nel blocco Payment è il testo che l'acquirente inserisce al momento del pagamento, che in questo caso è semplicemente il numero di fattura.
Create ZUGFeRD Invoice

Ogni valore rappresenta un token Airtable. Si noti VAT Amount 190,95 e Gross Total a 1195,95, sebbene la griglia li visualizzi come 191 e 1196.
Ciò che decide ogni impostazione
| Campo | Valore qui | Ciò che controlla |
|---|---|---|
| Input Format | JSON | È necessario fornire un oggetto strutturato anziché un file XML già pronto o una riga CSV. |
| Output Mode | XmlWithPdf | Restituisce un file ibrido. XmlOnly restituisce solo il file XML della fattura. |
| Zugferd Version | 2+ | La generazione 2.x, che è quella allineata con EN 16931 La vecchia 1.0 non lo è. |
| Conformance Level | EN16931 | Il profilo che la fattura dichiara di soddisfare e, di conseguenza, le chiavi che il JSON deve fornire |
| Render Invoice On Pdf | True | Disegna una pagina leggibile a partire dagli stessi dati. Senza fornire alcun file, è questo che conferisce al file la sua dimensione umana. |
| File | vuoto | Dove andrebbe inserito un PDF di base con la tua intestazione |
Do not trust the grid for decimals.Airtable mostra VATAmount 191 e GrossTotal 1196 a causa dell'impostazione di precisione del campo numerico, ma i token riportano 190.95 e 1195.95, ed è questo il valore che viene riportato in fattura. Aumentare la precisione prima che qualcuno tenti di confrontare una colonna con un documento emesso.
Passaggio 4: Come si registra nuovamente la fattura?
Flusso finora: tutto attraverso il passaggio PDF4me.
- Aggiungi Airtable > Update Record.
- Specificare:
- Base
PDF4me Live Automations, TavoloZUGFeRD Requests - Record: l' ID del trigger
- Append attachments:
False - Document: l' File Url dal passaggio 3
- Status:
Generated
- Base
- Lascia vuoti tutti gli altri campi in modo che nulla venga sovrascritto.
Update Record

L'avviso in alto è quello che vale la pena leggere. Tutto ciò che segue è volutamente vuoto.
"Possible Zap loop detected" is a real warning, not noise.Questo passaggio scrive nella tabella su cui si attiva lo Zap, quindi il suo stesso aggiornamento potrebbe riattivare lo Zap. In questo caso non accade, perché l'aggiornamento imposta Status su Generated e il filtro nel passaggio 2 passa solo New. Il filtro e questo aggiornamento costituiscono un unico meccanismo; modificane uno dei due e ricontrolla entrambi.
Passaggio 5: Come si invia la fattura elettronica all'acquirente?
Flusso finora: tutto attraverso l'aggiornamento del record.
- Aggiungi Gmail > Send Email.
- Specificare:
- To: la colonna Email dal trigger
- Subject:
Your e-invoicee il Invoice Number - Body type:
Html - Body: un breve saluto che nomina l'acquirente, il numero della fattura e il totale
- Attachments: l' File Url dal passaggio 3
Configurazione Send Email

L'allegato è lo stesso File Url che il passaggio 4 ha scritto su Airtable, quindi il record e l'e-mail contengono sempre lo stesso file.
Esegui Zap e verifica
- Publish lo Zap.
- Aggiungi una riga alle
ZUGFeRD Requestscon un venditore, un acquirente, una voce, entrambe le date e StatusNew. - Attendi il risultato del sondaggio. Tutti e cinque i passaggi dovrebbero essere positivi.
- Apri la riga:
Documentdovrebbe contenere un file PDF denominato con il numero della fattura eStatusdovrebbe essereGenerated. - Apri l'allegato. Dovresti visualizzare una pagina di fattura leggibile e un validatore ZUGFeRD dovrebbe trovare il codice XML EN 16931 all'interno dello stesso file.
- Aggiungi una riga con Status
Generatede conferma che lo Zap si ferma al passaggio 2.
Nell'esecuzione acquisita, la versione 1 è stata completata con successo il 24 ottobre 2026 alle 00:09:01, producendo ZUGFeRD_RE-2026-0011.pdf per una fattura da Muster GmbH di Berlin a Test Kunde AG di Muenchen, dieci unità di Consulting da 100,50, per un totale di 1195,95 EUR.
What did you actually build?Fatturazione elettronica conforme alle normative, direttamente dal database che già gestite, al costo di soli cinque passaggi con Zap. Il sistema dell'acquirente riceve dati strutturati, il vostro sistema conserva il documento prodotto e un singolo campo Status decide cosa inviare.
Varianti comuni che puoi aggiungere senza dover ricostruire
Come si confronta questo metodo con le altre modalità di emissione di una fattura elettronica?
Ogni riga descrive l'alternativa. L'ultima riga è questo Zap.
| Confronto | Chi lo gestisce? | Da dove provengono i dati | Ciò che mantieni |
|---|---|---|---|
| Piattaforma di fatturazione elettronica vs questo Zap | Finanza, attraverso un portale | Caricamenti o un'integrazione | Un contratto per documento e una connessione ad esso |
| Modulo ERP vs questo Zap | Finanza, all'interno del sistema ERP | Il registro contabile del sistema ERP | Licenze e una migrazione per inserire i tuoi dati |
| Libreria per sviluppatori vs questo Zap | Uno sviluppatore, all'interno di un'applicazione | Il tuo database, tramite codice | Il codice, gli aggiornamenti dello schema e le release |
| Questo Zap | Chiunque sia in grado di modificare uno Zap | La base Airtable che il team già mantiene | Cinque passaggi e un oggetto JSON |
Abbiamo anche costruitothe identical flow in Make Le differenze sono piccole ma reali: Make filtra all'interno del trigger gratuitamente, laddove Zapier impiega un passaggio, Make necessita parseNumber attorno a ogni valore monetario, laddove Zapier li mappa direttamente, e Make carica il file come byte, laddove Zapier fornisce Airtable un URL.
Domande frequenti
Che cos'è la fatturazione elettronica?
La fatturazione elettronica significa emettere una fattura come dati strutturati leggibili da una macchina, anziché come immagine di una pagina. Il sistema contabile dell'acquirente la analizza e la registra senza che nessuno debba riscriverla, ed è proprio questo il punto: il risparmio è per chi riceve la fattura, non per voi.
Un numero crescente di giurisdizioni ora lo richiede per gli scambi commerciali tra imprese e settore pubblico.European standard EN 16931 definisce l'insieme principale dei campi, e formati come ZUGFeRD lo implementano.
Che cos'è la fatturazione elettronica?
La stessa cosa. "Fatturazione elettronica" è generalmente il termine utilizzato nella legislazione, mentre "e-invoicing" è il termine usato nel marketing dei prodotti; entrambi indicano dati di fatturazione strutturati e leggibili da una macchina, anziché un PDF allegato a un'e-mail.
È bene chiarire cosa non è considerato valido: una fattura cartacea scansionata non è una fattura elettronica, così come non lo è un normale PDF. Senza dati strutturati incorporati, il destinatario deve comunque leggerla.
Airtable è in grado di creare fatture?
Non conformi. Airtable memorizza i dati e può disporli in un'interfaccia o in una visualizzazione stampabile, ma non può produrre un PDF/A-3 con XML conforme alla norma EN 16931, che è ciò che richiede un mandato.
La suddivisione utilizzata da questo Zap è quella più pratica: Airtable è il record, PDF4me produce il file e quest'ultimo torna al record come allegato.
Come funziona l'automazione della contabilità fornitori?
Tre fasi: acquisizione, estrazione e registrazione. L'acquisizione raccoglie i documenti in un unico luogo, l'estrazione li trasforma in campi, la registrazione scrive questi campi nel libro mastro, con un processo di approvazione preliminare.
Le fatture elettroniche ibride eliminano la parte intermedia. Quando l'XML è già presente all'interno del file, l'estrazione avviene tramite analisi sintattica anziché riconoscimento, ed è per questo che le normative continuano a spingere in questa direzione. Questo Zap rappresenta la parte di invio di tale sistema.
Risoluzione dei problemi
Apri l'input del passaggio nell'esecuzione di Zap e leggilo come JSON. Una colonna Airtable vuota lascia una chiave vuota e un valore monetario che è finito tra virgolette arriva come testo dove è previsto un numero. Entrambi producono un oggetto che sembra corretto ma la conversione fallisce comunque.
Conformance Level determina quali campi sono richiesti dal profilo. Dichiarare la conformità EN16931 quando il JSON omette le chiavi previste dal profilo comporterà l'errore di convalida, anche se il file si apre normalmente. Fornire le chiavi mancanti o passare a un profilo di livello inferiore.
Il passaggio 4 non imposta Status, oppure imposta un valore che il filtro continua a trasmettere. Questo è anche il ciclo di cui Zapier avverte al passaggio 4: lo Zap rielabora il proprio output. Controlla il filtro e l'aggiornamento insieme.
Verificare Output ModeXmlWithPdf e che i passaggi 4 e 5 prendano entrambi l' File Url dal passaggio 3. Allegare qualsiasi altra cosa invia una pagina che sembra corretta ma non contiene nulla che il loro software possa leggere.
Prossimi passi
Un mandato può sembrare un problema di formato, ma in realtà è un problema di dati. Se la fattura esiste già in righe, gran parte del lavoro è già fatto.