Pular para o conteúdo principal

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

· 24 min para ler
SEO and Content Writer

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.

O Zap em resumo
1. New Record
Airtable, com atualização a cada 2 minutos. Mostra todas as linhas adicionadas à tabela.
2. Filter conditions
Filter by Zapier. Continua apenas quando Status for exatamente New.
3. Create ZUGFeRD Invoice
PDF4me. Entrada JSON, saída PDF/A-3 com XML EN 16931 incorporado.
4. Update Record
Airtable. Grava o arquivo, o status e um link de volta para a mesma linha.
5. Send Email
Gmail. Envia a fatura eletrônica para o comprador na linha correspondente.
A versão curta

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.

Airtable base PDF4me Live Automations with the ZUGFeRD Requests table open, showing rows RE-2026-0007 to RE-2026-0011 with Currency EUR, SellerName Muster GmbH at Hauptstrasse 1, 10115 Berlin DE with SellerVATID DE123456789, BuyerName Test Kunde AG at Bahnhofstrasse 5, 80331 Muenchen DE, ItemDescription Consulting, Quantity 10.00, UnitPrice 100.50, VATRate 19.00 and a Status column reading Generated

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

Gmail showing the received message with subject Your e-invoice RE-2026-0011, a body greeting Test Kunde AG and stating a total of 1195.95 EUR, and one PDF attachment whose thumbnail shows the rendered German invoice

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 Automations com uma tabela chamada ZUGFeRD 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 chamado Document.
  • 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.
Veja primeiro o artigo finalizado.
Este é o arquivo exato que o Zap capturado gerou para a linha RE-2026-0011. Abra-o em um leitor para visualizar a página e em um validador ZUGFeRD para visualizar o XML incorporado.
Baixe o arquivo sample-output-zugferd-re-2026-0011.pdf

O Zap em resumo​

  1. New Record (Airtable) é acionado a cada nova linha nas ZUGFeRD Requests.
  2. Filter conditions (Filter by Zapier) continuam apenas quando Status for exatamente New.
  3. Create ZUGFeRD Invoice (PDF4me) converte o JSON em um PDF híbrido.
  4. Update Record (Airtable) grava o arquivo, o status e um link de volta para a linha.
  5. Send Email (Gmail)" entrega a fatura eletrônica ao comprador.

Visão geral completa do Zap​

Zapier run detail showing version 1 and a successful run on Oct 24 2026 at 12:09:01 am, with five steps each marked with a green tick: Airtable New Record on a 2 min schedule reporting Found 1 new Record, Filter by Zapier reporting the run passed the rules, PDF4me Create ZUGFeRD Invoice reporting Sent 1 new Create ZUGFeRD Invoice, Airtable Update Record reporting Sent 1 new Record, and Gmail Send Email reporting Sent 1 new Message

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.

  1. Crie um Zap e selecione Airtable > New Record.
  2. Selecione as PDF4me Live Automations Base do PDF4me Live e as Solicitações Table ZUGFeRD Requests.
  3. 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.

  1. Adicionar Filter by Zapier > Only continue if...
  2. Crie uma regra: 1. Status / (Texto) Exactly matches / New.
  3. Faça o teste.

Configuração Filter conditions​

Filter by Zapier step 2 Configure and test panel showing the rule Only continue if 1. Status Text Exactly matches New, and below it a green result box reading Your zap would have continued, with a test record created 2026-10-23 20:38:52 and Matched items listing Status: New

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.

  1. Adicionar PDF4me > Create ZUGFeRD Invoice.
  2. 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.
  3. 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​

PDF4me Create ZUGFeRD Invoice step showing an empty File field, File Name ZUGFeRD_ plus the Invoice Number RE-2026-0011 plus .pdf, Input Format JSON, an Invoice Json Data block with Airtable tokens mapped into every key including Seller Muster GmbH, Buyer Test Kunde AG, Quantity 10, Unit Price 100.5, Net Total 1005, VAT Rate 19, VAT Amount 190.95 and Gross Total 1195.95, then Output Mode XmlWithPdf, Zugferd Version 2 plus, Conformance Level EN16931 and Render Invoice On Pdf set to True

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.​

CampoValor aquiO que ele controla
Input FormatJSONQue você forneça um objeto estruturado em vez de um XML pronto ou uma linha CSV.
Output ModeXmlWithPdfRetorna um arquivo híbrido. XmlOnly retorna apenas o XML da fatura.
Zugferd Version2+A geração 2.x, que é a que está alinhada com EN 16931 A versão legada 1.0 não está.
Conformance LevelEN16931O perfil que a fatura alega atender e, portanto, quais chaves o JSON deve fornecer.
Render Invoice On PdfTrueDesenhe uma página legível a partir dos mesmos dados. Sem nenhum arquivo fornecido, é isso que dá ao arquivo sua metade legível.
ArquivovazioOnde 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.

  1. Adicionar Airtable > Update Record.
  2. Configurar:
    • Base PDF4me Live Automations, Mesa ZUGFeRD Requests
    • Record: o ID do gatilho
    • Append attachments: False
    • Document: o File Url da etapa 3
    • Status: Generated
  3. Deixe todos os outros campos em branco para que nada seja sobrescrito.

Update Record​

Airtable Update Record step showing a yellow warning banner reading Possible Zap loop detected, this step may cause a loop in your Zap because it acts similarly to the trigger event, above Base PDF4me Live Automations, Table ZUGFeRD Requests, Record mapped to the trigger ID, Append attachments set to False, and a list of empty optional fields beginning with Title, InvoiceNumber, InvoiceDate, DueDate and Currency

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.

  1. Adicionar Gmail > Send Email.
  2. Configurar:
    • To: a coluna Email do gatilho
    • Subject: Your e-invoice mais 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​

Gmail Send Email step showing the To field holding a mapped Email value from the Airtable trigger

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.​

  1. Publish o Zap.
  2. Adicione uma linha às ZUGFeRD Requests com um vendedor, um comprador, um item de linha, ambas as datas e Status New.
  3. Aguarde a votação. Todas as cinco etapas devem estar verdes.
  4. Abra a linha: Document deve conter um PDF com o nome do número da fatura e Status deve exibir Generated.
  5. 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.
  6. Adicione uma linha com Status Generated e 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​

Fatura com mais de uma linha
LineItems é uma matriz. Mantenha as linhas em uma tabela vinculada, recupere-as com uma etapa Find Records e construa a matriz com o Formatador ou Code by Zapier antes da etapa 3.
Coloque isso no seu papel timbrado.
O campo Arquivo aceita um PDF como base. Insira uma página personalizada com a sua marca e Render Invoice On Pdf desenhará a fatura diretamente nela, em vez de em uma página em branco.
Mantenha o XML separado também.
Alguns compradores desejam o arquivo estruturado separadamente. Execute a ação novamente com Output Mode definido como XmlOnly e anexe esse resultado junto com o PDF.
Alterar formato por comprador
Adicione uma coluna de formato e uma etapa de Caminhos. Os compradores do setor público alemão geralmente preferem XRechnung em vez de um arquivo híbrido, e essa é uma decisão de roteamento, não uma reconstrução.

Como isso se compara a outras formas de emitir uma fatura eletrônica?​

Cada linha descreve a alternativa. A última linha é este Zap.

ComparaçãoQuem o dirige?De onde vêm os dados?O que você mantém
Plataforma de faturamento eletrônico versus este ZapFinanças, através de um portalUploads ou uma integraçãoUm contrato por documento e sua respectiva conexão.
Módulo ERP versus este ZapFinanças dentro do ERPO próprio livro-razão do ERPLicenças e uma migração para obter seus dados.
Biblioteca de desenvolvedor versus este ZapUm desenvolvedor, dentro de um aplicativoSeu banco de dados, por meio de código.O código, as atualizações de esquema e os lançamentos.
Este ZapQualquer pessoa que saiba editar um ZapA base Airtable que a equipe já mantémCinco 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​

A ação rejeita o JSON da fatura.

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.

Um validador rejeita o nível de conformidade.

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 mesma fatura foi emitida duas vezes.

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.

O comprador afirma que não há XML no arquivo.

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.