Fatura eletrônica ZUGFeRD do Airtable no Zapier: Filtrar as linhas, construir o JSON e enviar o PDF híbrido por e-mail.

PDF4me Create ZUGFeRD Invoice é uma ação Zapier que converte dados estruturados de faturas em uma fatura eletrônica híbrida em PDF/A-3. Ao ler uma linha Airtable, transforma um objeto JSON em XML EN 16931 incorporado em um PDF legível, grava o arquivo de volta no registro e o envia por e-mail ao comprador.
As exigências de faturamento eletrônico surgem como um problema de formato de arquivo e são resolvidas como um problema de compras: escolha uma plataforma, pague por documento e migre seus dados para ela. Essa resposta é razoável em grande escala, mas absurda para uma equipe que emite vinte faturas por mês a partir de um banco de dados já existente. A alternativa não é escrever XML manualmente, mas sim descrever a fatura como JSON e deixar que outra ferramenta gere o arquivo compatível.
Uma linha Airtable contém a fatura: vendedor, comprador, um item de linha e os totais. Defina Status como New e o Zap a identifica, verifica esse campo e envia um objeto JSON PDF4me. O resultado é um PDF/A-3 legível e analisável por máquina, anexado ao registro e enviado ao comprador. Sem assinatura de plataforma, sem XML e os dados nunca saem do servidor.
Perguntas e respostas baseadas no "porquê".
Why describe the invoice as JSON rather than XML?Como a sintaxe de faturas intersetoriais é longa, profundamente aninhada e rigorosa quanto à localização de cada código, o objeto JSON expressa a mesma informação em uma fração do espaço, com chaves que se assemelham a termos comerciais. PDF4me gera o XML compatível a partir dele. A parte mais fácil de errar é justamente aquela que você não mantém.
Why does the hybrid file matter?Porque uma fatura tem dois públicos. O sistema do comprador lê o XML incorporado e a registra sem que ninguém precise digitar nada; a pessoa do departamento de contas a pagar abre o mesmo arquivo e vê uma página. Um único artefato atende a ambos, e é por isso que...FeRD especificou um modelo híbrido em vez de apenas XML.
Why put a Filter in front of the invoice step?Porque emitir uma fatura não é uma ação reversível. Um Zap que é acionado a cada nova linha acabará sendo acionado em uma linha incompleta e enviará ao cliente um documento com um item em branco. O filtro transforma a emissão em um ato deliberado: uma pessoa define Status como New e essa é a instrução.
Why keep the invoice data in Airtable at all?Porque geralmente é um subproduto do trabalho já registrado ali: o projeto, o cliente, o valor acordado. Transferir isso para um sistema de faturamento para atender a um formato de arquivo significa manter o mesmo cliente em dois sistemas para sempre, e o requisito do formato não exige isso.
O que você receberá
Entrada: uma linha Airtable com o número da fatura, as datas, um bloco do vendedor com o número de identificação fiscal (IVA), um bloco do comprador, um item de linha e os totais, com Status definido como New. Saída: um PDF/A-3 ZUGFeRD nesse registro e na caixa de entrada do comprador.

Uma linha por fatura. Cada coluna aqui se torna uma chave no JSON que o Zap envia.

O comprador vê uma fatura. O sistema de contabilidade dele vê o XML contido nela.
Do que você precisa
- A Zapier accountem um plano que permite Zaps em várias etapas.Filter by Zapier Está integrado e conta como uma etapa.
- Chave da API PDF4me. Obtenha sua chave de API.
- An Airtable baseA base capturada é
PDF4me Live Automationscom uma tabela chamadaZUGFeRD Requests, contendo o cabeçalho da fatura, o bloco do vendedor incluindo um número de identificação fiscal (IVA), o bloco do comprador, os campos dos itens de linha, NetTotal, VATAmount e GrossTotal, uma coluna de e-mail, um campo Status e um campo de anexo chamadoDocument. - A Gmail accountConectado ao Zapier.
- Your seller details including a VAT IDElas provêm de colunas, portanto, uma única base pode faturar para várias entidades legais.
O Zap em resumo
- New Record (Airtable) é acionado a cada nova linha nas
ZUGFeRD Requests. - Filter conditions (Filter by Zapier) continuam apenas quando Status for exatamente
New. - Create ZUGFeRD Invoice (PDF4me) converte o JSON em um PDF híbrido.
- Update Record (Airtable) grava o arquivo, o status e um link de volta para a linha.
- Send Email (Gmail)" entrega a fatura eletrônica ao comprador.
Visão geral completa do Zap

O formato de cinco etapas é o mesmo do Swiss QR Zap. Apenas a etapa PDF4me no meio é diferente.
Passo 1: Como ativar um Zap a partir de uma nova linha Airtable?
Fluxo até agora: nada ainda, este é o gatilho.
- Crie um Zap e selecione Airtable > New Record.
- Selecione as
PDF4me Live AutomationsBase do PDF4me Live e as Solicitações TableZUGFeRD Requests. - Teste. Zapier reporta que encontrou 1 novo registro no Airtable e as colunas ficam disponíveis posteriormente.
O crachá da votação indica 2 minutos, informação que consta no planejamento e não nesta etapa.
Passo 2: Como impedir que o Zap fature uma linha incompleta?
Fluxo até o momento: o gatilho Airtable.
- Adicionar Filter by Zapier > Only continue if...
- Crie uma regra: 1. Status / (Texto) Exactly matches /
New. - Faça o teste.
Configuração Filter conditions

A caixa verde indica o campo que permitiu a passagem do registro. A caixa amarela correspondente indica o campo que o bloqueou.
Tip.Exactly matches É sensível a maiúsculas e minúsculas e a espaços em branco, portantonew eNew Com um espaço em branco no final, ambos os campos falham silenciosamente em todas as linhas. Make Status for uma seleção única em vez de texto livre, o problema não ocorrerá.
Passo 3: Como transformar a linha em uma fatura ZUGFeRD?
Fluxo até o momento: o gatilho e o filtro.
- Adicionar PDF4me > Create ZUGFeRD Invoice.
- Defina as opções de saída:
- File Name:
ZUGFeRD_mais o Invoice Number mais.pdf - Input Format:
JSON - Output Mode:
XmlWithPdf - Zugferd Version:
2+ - Conformance Level:
EN16931 - Render Invoice On Pdf:
True - Deixe File vazio, a menos que você esteja fornecendo seu próprio cabeçalho.
- File Name:
- Cole o objeto em Invoice Json Data e mapeie cada campo Airtable nele:
{
"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"
}
}
Três partes merecem atenção. TypeCode 380 é o código para uma fatura comercial e é fixo. UnitCode C62 é o código UN/ECE para "uma unidade", que é o que você precisa para horas ou unidades de serviço. E PaymentReference no bloco Payment é o texto que o comprador cita ao pagar, que neste caso é simplesmente o número da fatura.
Create ZUGFeRD Invoice

Cada valor corresponde a um token Airtable. Observe VAT Amount de 190,95 e Gross Total 1195,95, embora a tabela os exiba como 191 e 1196, respectivamente.
O que cada configuração decide.
| Campo | Valor aqui | O que ele controla |
|---|---|---|
| Input Format | JSON | Que você forneça um objeto estruturado em vez de um XML pronto ou uma linha CSV. |
| Output Mode | XmlWithPdf | Retorna um arquivo híbrido. XmlOnly retorna apenas o XML da fatura. |
| Zugferd Version | 2+ | A geração 2.x, que é a que está alinhada com EN 16931 A versão legada 1.0 não está. |
| Conformance Level | EN16931 | O perfil que a fatura alega atender e, portanto, quais chaves o JSON deve fornecer. |
| Render Invoice On Pdf | True | Desenhe uma página legível a partir dos mesmos dados. Sem nenhum arquivo fornecido, é isso que dá ao arquivo sua metade legível. |
| Arquivo | vazio | Onde ficaria o PDF base com o seu cabeçalho? |
Do not trust the grid for decimals.Airtable exibe VATAmount 191 e GrossTotal 1196 devido à configuração de precisão do campo numérico, mas os tokens contêm os valores 190.95 e 1195.95, e é esse o valor que chega à fatura. Aumente a precisão antes que alguém tente conciliar uma coluna com um documento emitido.
Passo 4: Como você registra a fatura de volta no arquivo?
Fluxo até o momento: tudo pela etapa PDF4me.
- Adicionar Airtable > Update Record.
- Configurar:
- Base
PDF4me Live Automations, MesaZUGFeRD Requests - Record: o ID do gatilho
- Append attachments:
False - Document: o File Url da etapa 3
- Status:
Generated
- Base
- Deixe todos os outros campos em branco para que nada seja sobrescrito.
Update Record

O aviso no topo é o que vale a pena ler. Tudo abaixo dele está vazio de propósito.
"Possible Zap loop detected" is a real warning, not noise.Esta etapa grava na tabela que o Zap aciona, portanto, sua própria atualização poderia ativar o Zap novamente. Isso não acontece aqui, porque a atualização define Status como Generated e o filtro na etapa 2 permite apenas New. O filtro e esta atualização formam um único mecanismo; altere qualquer um deles e verifique ambos novamente.
Etapa 5: Como enviar a fatura eletrônica ao comprador?
Fluxo até o momento: tudo até a atualização do registro.
- Adicionar Gmail > Send Email.
- Configurar:
- To: a coluna Email do gatilho
- Subject:
Your e-invoicemais o Invoice Number - Body type:
Html - Body: uma breve saudação com o nome do comprador, o número da fatura e o valor total.
- Attachments: o File Url da etapa 3
Configuração Send Email

O anexo é o mesmo File Url que a etapa 4 escreveu no Airtable, portanto, o registro e o e-mail sempre contêm o mesmo arquivo.
Execute o Zap e verifique.
- Publish o Zap.
- Adicione uma linha às
ZUGFeRD Requestscom um vendedor, um comprador, um item de linha, ambas as datas e StatusNew. - Aguarde a votação. Todas as cinco etapas devem estar verdes.
- Abra a linha:
Documentdeve conter um PDF com o nome do número da fatura eStatusdeve exibirGenerated. - Abra o anexo. Você deverá ver uma página de fatura legível e um validador ZUGFeRD deverá encontrar o XML EN 16931 dentro do mesmo arquivo.
- Adicione uma linha com Status
Generatede confirme se o Zap para na etapa 2.
Na execução capturada, a versão 1 foi concluída com sucesso em 24 de outubro de 2026 às 00h09min01s, gerando o arquivo ZUGFeRD_RE-2026-0011.pdf referente a uma fatura da Muster GmbH em Berlin para Test Kunde AG em Muenchen, no valor de dez unidades de Consulting a 100,50 EUR, totalizando 1195,95 EUR.
What did you actually build?Faturação eletrônica em conformidade com as normas, a partir de um banco de dados que você já utiliza, pelo custo de cinco etapas do Zap. O sistema do comprador recebe dados estruturados, seu registro armazena o artefato produzido e um campo Status decide o que será enviado.
Variações comuns que você pode adicionar sem reconstruir
Como isso se compara a outras formas de emitir uma fatura eletrônica?
Cada linha descreve a alternativa. A última linha é este Zap.
| Comparação | Quem o dirige? | De onde vêm os dados? | O que você mantém |
|---|---|---|---|
| Plataforma de faturamento eletrônico versus este Zap | Finanças, através de um portal | Uploads ou uma integração | Um contrato por documento e sua respectiva conexão. |
| Módulo ERP versus este Zap | Finanças dentro do ERP | O próprio livro-razão do ERP | Licenças e uma migração para obter seus dados. |
| Biblioteca de desenvolvedor versus este Zap | Um desenvolvedor, dentro de um aplicativo | Seu banco de dados, por meio de código. | O código, as atualizações de esquema e os lançamentos. |
| Este Zap | Qualquer pessoa que saiba editar um Zap | A base Airtable que a equipe já mantém | Cinco etapas e um objeto JSON |
Nós também construímosthe identical flow in Make As diferenças são pequenas, mas reais: Make filtra os dados dentro do gatilho gratuitamente, enquanto Zapier gasta uma etapa; Make precisa usar parseNumber para cada valor monetário, enquanto Zapier os mapeia diretamente; e Make envia o arquivo como bytes, enquanto Zapier entrega uma URL Airtable.
Perguntas frequentes
O que é faturamento eletrônico?
A faturação eletrónica significa emitir uma fatura como dados estruturados que uma máquina consegue ler, em vez de como uma imagem de uma página. O sistema de contabilidade do comprador analisa-a e regista-a sem que ninguém tenha de a redigitar, que é o objetivo: a poupança é do lado do destinatário, não do seu.
Um número crescente de jurisdições agora exige isso para negócios e transações do setor público.European standard EN 16931 Define o conjunto principal de campos, e formatos como ZUGFeRD o implementam.
O que é faturamento eletrônico?
É a mesma coisa. "Faturamento eletrônico" costuma ser o termo usado na legislação, enquanto "e-faturamento" é o termo usado no marketing de produtos. Ambos se referem a dados de fatura estruturados e legíveis por máquina, em vez de um PDF anexado a um e-mail.
É importante esclarecer o que não é considerado fatura eletrônica: uma fatura em papel digitalizada não é uma fatura eletrônica, assim como um PDF comum. Sem dados estruturados incorporados, o destinatário ainda precisa lê-la.
Airtable consegue criar faturas?
Não são compatíveis. Airtable armazena os dados e pode organizá-los em uma interface ou em uma visualização para impressão, mas não consegue gerar um PDF/A-3 com XML em conformidade com a norma EN 16931, que é o que a regulamentação exige.
A divisão que este Zap utiliza é a prática: Airtable é o registro, PDF4me produz o artefato e o artefato retorna ao registro como um anexo.
Como funciona a automatização das contas a pagar?
Três etapas: entrada, extração e lançamento. A entrada reúne os documentos em um só lugar, a extração os transforma em campos e o lançamento grava esses campos no livro-razão, com um processo de aprovação prévio.
As faturas eletrônicas híbridas eliminam a etapa intermediária. Quando o XML já está dentro do arquivo, a extração se torna uma análise sintática em vez de um reconhecimento, e é por isso que as regulamentações continuam a priorizar esse formato. Este Zap é a parte de envio dessa configuração.
Solução de problemas
Abra a entrada da etapa na execução do Zap e leia-a como JSON. Uma coluna vazia Airtable deixa uma chave vazia, e um valor monetário que acabou entre aspas chega como texto onde um número era esperado. Ambos produzem um objeto que parece correto, mas ainda assim falha na conversão.
Conformance Level define quais campos o perfil exige. Alegar conformidade com EN16931 enquanto o JSON omite chaves esperadas pelo perfil resulta em falha na validação, mesmo que o arquivo abra normalmente. Forneça as chaves ausentes ou utilize um perfil inferior.
A etapa 4 não está definindo Status ou está definindo um valor que o filtro ainda permite. Esse é também o loop sobre o qual Zapier alerta na etapa 4: o Zap reprocessando sua própria saída. Verifique o filtro e a atualização em conjunto.
Verifique se Output Mode está ativado.XmlWithPdf E isso ocorre porque as etapas 4 e 5 utilizam o File Url da etapa 3. Anexar qualquer outro arquivo envia uma página que parece correta, mas não contém nada que o software deles consiga ler.
Próximos passos
Um mandato parece ser um problema de formatação, mas na verdade é um problema de dados. Se a fatura já existe em formato de linhas, a maior parte do trabalho já está feita.