Pular para o conteúdo principal

Fatura eletrônica ZUGFeRD a partir de uma lista do SharePoint: Converta JSON em XML EN 16931 e em PDF/A-3 no Power Automate com PDF4me

· 30 min para ler
SEO and Content Writer

O PDF4me Create ZUGFeRD Invoice é uma ação do Power Automate que transforma dados de faturas em uma fatura eletrônica híbrida em PDF/A-3. Apontada para uma lista do SharePoint, ela utiliza o JSON gerado por uma ação Compose a partir de cada linha, escreve o XML EN 16931, desenha a fatura legível no PDF base, arquiva o resultado e o envia por e-mail ao comprador.

Ao pesquisar por ZUGFeRD, você se depara com um de três lugares: uma explicação sobre o formato, um validador que verifica se um arquivo já existente está correto ou uma biblioteca em PHP, Java ou C# para desenvolvedores que criam softwares de faturamento. Todos os três partem do pressuposto de que a fatura já existe em algum lugar. A pergunta que nenhum deles responde é a que uma equipe financeira realmente enfrenta: os dados da fatura estão em uma lista, planilha ou em qualquer sistema que registre as vendas, e precisam ser convertidos em uma fatura eletrônica válida. Este fluxo preenche essa lacuna, em sete etapas e sem código.

O fluxo em resumo
1. When an item is created
Gatilho do SharePoint na lista chamada ZUGFeRD Requests. Cada linha corresponde a uma fatura.
2. Compose
Constrói um objeto JSON de fatura a partir da linha: vendedor, comprador, item de linha, totais, pagamento.
3. Get file content using path
Lê o arquivo BaseInvoice.pdf, a página onde a fatura está impressa.
4. Create ZUGFeRD Invoice
PDF4me PDF. Formato de entrada 2.0-JSON, XmlWithPdf, em conformidade com EN16931, fatura gerada.
5. Create file
Salva o PDF híbrido na biblioteca ZUGFeRD Invoices.
6. Update item
Status dos carimbos Generated e o OutputLink volta para a mesma linha.
7. Send an email (V2)
Envia a fatura para o endereço do comprador indicado na linha.
A versão curta

Uma linha é inserida em uma lista do SharePoint com o vendedor, o comprador, um item e as datas. Quatro segundos depois, há uma fatura PDF/A-3 em uma biblioteca de documentos: uma página legível, com o XML EN 16931 incorporado para processamento pelo software do comprador. Você nunca escreve esse XML. Você descreve a fatura como um pequeno objeto JSON e o PDF4me gera o esquema. A linha recebe o status e um link, e o comprador recebe o arquivo por e-mail.

Perguntas e respostas baseadas no porquê​

Por que manter os dados de faturas em uma lista do SharePoint? Porque esse é o formato em que os dados já estão para a maioria das pequenas equipes financeiras: uma linha por fatura, preenchida por uma pessoa. As colunas correspondem diretamente aos campos exigidos pelo padrão, o que significa que o mapeamento é visível para qualquer pessoa que abra a lista, e uma nova fatura é uma nova linha, em vez de um novo arquivo em uma pasta monitorada.

Por que descrever a fatura em JSON em vez de escrever em XML? Porque a sintaxe Cross Industry Invoice é verbosa e rígida: namespaces aninhados, nomes de elementos que ninguém lembra, códigos que precisam estar exatamente no lugar certo. O objeto JSON diz a mesma coisa em muito menos linhas, com chaves que correspondem aos termos comerciais que representam. O PDF4me converte tudo para o esquema, então a parte que é fácil de errar é justamente a que você não precisa manter.

Por que renderizar a fatura em um PDF base? Porque um arquivo ZUGFeRD tem duas partes e ambas precisam estar em conformidade. O XML é para o software do comprador, a página impressa é para quem a abre. Render Invoice on PDF desenha a fatura na página base a partir dos mesmos dados que geraram o XML, portanto, as duas partes nunca se desalinham como acontece quando um layout é mantido separadamente.

Por que PDF/A-3 e não um PDF comum? Porque PDF/A-3 é o formato de arquivo que permite a inclusão de anexos, e o XML incorporado é esse anexo. É também a parte que torna a fatura legível anos depois: as fontes e os perfis de cores são mantidos dentro do arquivo, o que é importante para um documento que a maioria das empresas é obrigada a guardar por uma década.


O que você receberá​

Entrada: uma linha com o número da fatura, as datas, a moeda, o bloco do vendedor, o bloco do comprador e um item de linha. Saída: uma fatura ZUGFeRD PDF/A-3 na biblioteca ZUGFeRD Invoices, a linha atualizada com seu status e um link, e um e-mail para o comprador com a fatura em anexo.

O item RE-2026-0007 da lista do SharePoint em Solicitações ZUGFeRD mostra o número da fatura RE-2026-0007, a data da fatura 12/10/2026, a data de vencimento 11/11/2026, a moeda EUR, o nome do vendedor Muster GmbH, a rua do vendedor Hauptstrasse 1, o CEP do vendedor 10115, a cidade do vendedor Berlim, o país do vendedor Alemanha, o número de IVA do vendedor DE123456789, o nome do comprador Test Kunde AG, a rua do comprador Bahnhofstrasse 5, o CEP do comprador 80331, a cidade do comprador Munique, o país do comprador Alemanha, a descrição do item Consultoria, a quantidade 10,00, o preço unitário 100,50, a alíquota de IVA 19, uma coluna de e-mail e o status Gerado.

Uma linha por fatura. Cada coluna neste painel se torna uma chave no JSON que o fluxo constrói.

A biblioteca de faturas SharePoint ZUGFeRD lista os arquivos ZUGFeRD_RE-2026-0001.pdf a ZUGFeRD_RE-2026-0004.pdf e o mais recente ZUGFeRD_RE-2026-0007.pdf, todos modificados pela conta Pdf4me Flow.

Um arquivo por número de fatura, redigido pela conta de fluxo.

O Outlook exibe o e-mail com o arquivo ZUGFeRD_RE-2026-0007.pdf anexado e a fatura alemã renderizada aberta no painel de visualização: vendedor Muster GmbH em Berlim com CNPJ DE123456789, cliente Test Kunde AG em Munique, fatura RE-2026-0007 datada de 12/10/2026, tipo de documento 380, um item de Consultoria com IVA de 19%, valor líquido de 1.005,00 euros e total de 1.195,95 euros.

A metade legível do mesmo arquivo, tal como o comprador o vê.


Do que você precisa​

  • Power Automate. Abra o Power Automate. Um fluxo de trabalho automatizado na nuvem com conectores padrão. SharePoint, Office 365 Outlook e PDF4me não exigem plano premium.
  • Chave da API do PDF4me. Obtenha sua chave da API. Este fluxo usa uma conexão PDF4me, PDF4me PDF.
  • Uma lista do SharePoint para as solicitações. A lista capturada chama-se ZUGFeRD Requests e contém os campos InvoiceNumber, InvoiceDate, DueDate, Moeda, o bloco Seller (nome, rua, código postal, cidade, país, ID de IVA), o bloco Buyer, ItemDescription, Quantidade, UnitPrice, VATRate, uma coluna Email, uma coluna de seleção Status e uma coluna OutputLink na qual o fluxo grava.
  • Um PDF de fatura base. O fluxo capturado mantém BaseInvoice.pdf em uma biblioteca chamada ZUGFeRD Templates. Esta é a página onde a fatura é impressa, portanto, seu cabeçalho deve ser inserido aqui.
  • Uma biblioteca para as faturas finalizadas. O fluxo capturado grava no ZUGFeRD Invoices.
  • Os dados do vendedor, incluindo o ID fiscal (IVA), são inseridos nas colunas da lista, permitindo que o mesmo fluxo emita faturas para mais de uma entidade jurídica.
Comece com um objeto JSON funcional
Se preferir visualizar o formato antes de criar o Compose, aqui está a estrutura completa ZUGFeRD 2.0 EN16931 com todas as chaves aceitas pelo perfil. Cole-a no Compose e substitua os valores pelos seus tokens.
Baixe o arquivo sample-invoice-zugferd-2.0-en16931.json

O Fluxo em Resumo​

  1. When an item is created (SharePoint), ele monitora a lista chamada ZUGFeRD Requests.
  2. Compose cria o JSON da fatura a partir da linha.
  3. Get file content using path reads /ZUGFeRD Templates/BaseInvoice.pdf.
  4. Create ZUGFeRD Invoice (PDF4me PDF) converte o JSON em XML EN 16931 e retorna o PDF híbrido.
  5. Create file (SharePoint) é salvo como ZUGFeRD_<invoice number>.pdf.
  6. Update item (SharePoint) define Status como Generated e preenche OutputLink.
  7. Send an email (V2) (Office 365 Outlook) envia a fatura ao comprador.

Visão geral completa do fluxo​

O histórico de execução do Power Automate mostra sete ações concluídas com sucesso nesta ordem: Criação de um item em 0,2 segundos, Composição em 0 segundos, Obtenção do conteúdo do arquivo usando o caminho em 0,2 segundos, Criação de fatura ZUGFeRD em 1 segundo, Criação de arquivo em 2 segundos, Atualização de item em 0,4 segundos e Envio de e-mail V2 em 0,4 segundos.

Quatro segundos e alguns segundos de ponta a ponta, e a própria fatura eletrônica leva cerca de um segundo. A etapa mais lenta é a gravação do arquivo pelo SharePoint.


Passo 1: Como acionar uma fatura eletrônica quando uma solicitação é recebida?​

Fluxo até agora: nada ainda, este é o gatilho.

A adição de uma linha é a forma como uma fatura é solicitada, portanto, esse é o sinal.

  1. Crie um Automated cloud flow e selecione SharePoint > When an item is created.
  2. Configurar:
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • List Name: ZUGFeRD Requests

When an item is created: configuração​

SharePoint: O gatilho "Quando um item é criado" tem como endereço do site "PDF4me Support" em ynoox1.sharepoint.com/sites/PDF4meSupport e nome da lista "ZUGFeRD Requests", sem parâmetros avançados definidos.

Cada coluna na nova linha se torna um token que as próximas seis ações podem usar.


Passo 2: Como construir o JSON da fatura a partir de colunas de lista?​

Fluxo até o momento: o gatilho do SharePoint.

Uma única ação Compose descreve toda a fatura. É aqui que os nomes das suas colunas correspondem aos nomes esperados pelo padrão, e o texto é curto o suficiente para ser lido em uma única tela.

  1. Adicionar Data Operation > Compose.
  2. Cole o objeto abaixo em Entradas e substitua cada valor pelo token correspondente.
{
"InvoiceId": "@{triggerBody()?['InvoiceNumber']}",
"TypeCode": "380",
"InvoiceType": "RECHNUNG",
"IssueDate": "@{triggerBody()?['InvoiceDate']}T00:00:00",
"DeliveryDate": "@{triggerBody()?['InvoiceDate']}T00:00:00",
"IsTest": false,
"Seller": {
"Name": "@{triggerBody()?['SellerName']}",
"VatId": "@{triggerBody()?['SellerVATID']}",
"Address": {
"Street": "@{triggerBody()?['SellerStreet']}",
"PostalCode": "@{triggerBody()?['SellerPostalCode']}",
"City": "@{triggerBody()?['SellerCity']}",
"Country": "@{triggerBody()?['SellerCountry']}"
}
},
"Buyer": {
"Name": "@{triggerBody()?['BuyerName']}",
"Address": {
"Street": "@{triggerBody()?['BuyerStreet']}",
"PostalCode": "@{triggerBody()?['BuyerPostalCode']}",
"City": "@{triggerBody()?['BuyerCity']}",
"Country": "@{triggerBody()?['BuyerCountry']}"
}
},
"LineItems": [
{
"ProductName": "@{triggerBody()?['ItemDescription']}",
"Quantity": @{triggerBody()?['Quantity']},
"UnitCode": "C62",
"UnitPrice": @{triggerBody()?['UnitPrice']},
"LineTotal": @{float(...)}
}
],
"Totals": {
"Currency": "@{triggerBody()?['Currency']?['Value']}",
"LineTotal": @{float(...)},
"TaxBasisTotal": @{float(...)},
"TaxPercent": @{triggerBody()?['VATRate']},
"TaxTotal": @{float(...)},
"GrandTotal": @{float(...)},
"ChargeTotal": 0,
"AllowanceTotal": 0
},
"Payment": {
"Currency": "@{triggerBody()?['Currency']?['Value']}",
"PaymentReference": "@{triggerBody()?['InvoiceNumber']}",
"DueDate": "@{triggerBody()?['DueDate']}T00:00:00"
}
}

Compose: configuração​

A ação Compose do Power Automate contém o JSON da fatura com InvoiceId, TypeCode 380, InvoiceType RECHANGE, IssueDate e DeliveryDate, um objeto Seller com VatId e endereço, um objeto Buyer com endereço, uma matriz LineItems com ProductName, Quantity, UnitCode C62 e UnitPrice, um objeto Totals com Currency, TaxPercent e expressões float para os valores monetários e um objeto Payment com a referência do pagamento e a data de vencimento.

Os valores de texto são representados por tokens entre aspas. Moedas e quantidades são números puros, por isso são representados pelo float.

De onde vem cada parte da fatura?​

Chave JSONO que ele carregaFonte
InvoiceId, TypeCode, InvoiceTypeNúmero da fatura, código do tipo de documento 380 para fatura comercial e etiqueta impressa na páginaInvoiceNumber, depois valores fixos
IssueDate, DeliveryDateQuando a fatura foi emitida e quando o serviço foi prestadoInvoiceDate, com o sufixo T00:00:00
SellerNome, ID fiscal e endereço completoSellerName, SellerVATID, SellerStreet, SellerPostalCode, SellerCity, SellerCountry
BuyerNome e endereço do clienteBuyerName, BuyerStreet, BuyerPostalCode, BuyerCity, BuyerCountry
LineItemsDescrição, quantidade com código da unidade C62, preço unitário e total da linhaItemDescription, Quantidade, UnitPrice
TotalsMoeda, total líquido, base de cálculo do imposto, taxa e valor do IVA, total geralMoeda, VATRate e os valores calculados
PaymentMoeda, a referência que o comprador indica ao efetuar o pagamento e a data de vencimentoMoeda, InvoiceNumber, DueDate

Dica: As chaves monetárias são a única parte que precisa de cálculos aritméticos e devem ser números puros, em vez de strings entre aspas, para o que servem as expressões float. LineTotal é a quantidade multiplicada pelo preço unitário, TaxBasisTotal é a soma dos totais das linhas, TaxTotal é a base de cálculo do imposto multiplicada pela alíquota, dividida por 100, e GrandTotal é a soma dos dois. Para a linha capturada, os valores são 1005, 1005, 190,95 e 1195,95. Um "1005" entre aspas será rejeitado, enquanto um 1005 simples será aceito.


Etapa 3: De onde vem o PDF base?​

Fluxo até agora: o gatilho mais Compose.

Os arquivos ZUGFeRD possuem uma página legível, e é aqui que tudo começa.

  1. Adicionar SharePoint > Get file content using path.
  2. Configurar:
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • File Path: /ZUGFeRD Templates/BaseInvoice.pdf
    • Infer content type (avançado): Yes

Get file content using path: configuração​

Ação "Obter conteúdo do arquivo usando o caminho" no SharePoint com o endereço do site "PDF4me Support", caminho do arquivo /ZUGFeRD Templates/BaseInvoice.pdf e a opção "Inferir tipo de conteúdo" definida como "Sim".

Guarde o cabeçalho desta pasta. Ele é lido do zero a cada impressão, portanto, alterá-lo afetará a próxima fatura.


Passo 4: Como converter o JSON em um arquivo ZUGFeRD PDF/A-3?​

Fluxo até o momento: o gatilho, Compose e Get file content using path.

Esta é a ação que gera a fatura eletrônica. Ela lê o JSON, grava o XML EN 16931 e retorna um único arquivo contendo ambas as partes.

  1. Adicionar a Create ZUGFeRD Invoice a partir da conexão PDF4me PDF.
  2. Configurar:
    • ZUGFeRD version and Input Format: 2.0-JSON
    • Output Mode: XmlWithPdf
    • Invoice JSON Data: a expressão base64(outputs('Compose'))
    • Conformance Level: EN16931
    • Render Invoice on PDF: Yes
    • File Content: uma expressão base64() sobre o conteúdo de Get file content using path
    • File Name: BaseInvoice.pdf

Create ZUGFeRD Invoice: configuração​

Ação PDF4me Criar Fatura ZUGFeRD com a versão ZUGFeRD e Formato de Entrada definidos como 2.0-JSON, Modo de Saída XmlWithPdf, o campo Dados JSON da Fatura contendo a expressão base64 das saídas Compor, Nível de Conformidade EN16931, Renderizar Fatura em PDF Sim, Conteúdo do Arquivo contendo uma expressão base64 sobre o PDF base e Nome do Arquivo BaseInvoice.pdf, conectado ao PDF4me PDF

O formato de entrada determina qual campo de dados é exibido. Selecione 2.0-JSON e a ação solicitará Invoice JSON Data, e não Invoice XML Data.

O que cada configuração decide​

CampoValor aquiO que ele controla
ZUGFeRD version and Input Format2.0-JSONQual geração ZUGFeRD a saída segue e quais dados chegam em formato JSON? Essa escolha é o que faz o campo Invoice JSON Data aparecer
Output ModeXmlWithPdfRetornar um arquivo híbrido, o PDF com o XML incorporado, em vez do XML isoladamente
Invoice JSON Database64(outputs('Compose'))O objeto da fatura, codificado em base64 durante a entrada
Conformance LevelEN16931O perfil que a fatura alega atender e, portanto, quais chaves o JSON deve fornecer
Render Invoice on PDFYesDesenhe a fatura legível diretamente no PDF base, em vez de deixar a página como estava
File Content, File NameO PDF baseA página em que a fatura foi emitida e o nome do relatório de ação

Dica: A ação exibe Invoice XML Data, Invoice JSON Data ou Invoice CSV Data dependendo da metade do menu suspenso que corresponde ao formato escolhido. Preencha apenas a opção que corresponde à sua escolha. Preencher dois campos de dados na mesma execução é a causa mais comum de falhas de validação nesta ação.


Etapa 5: Onde a fatura deve ser arquivada?​

Fluxo até o momento: tudo através Create ZUGFeRD Invoice.

O número da fatura identifica o arquivo, o que permite que a biblioteca faça buscas.

  1. Adicionar SharePoint > Create file.
  2. Configurar:
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • Folder Path: /ZUGFeRD Invoices
    • File Name: ZUGFeRD_ seguido pelo token InvoiceNumber e .pdf
    • File Content: o token Body da Create ZUGFeRD Invoice

Create file: configuração​

Ação "Criar arquivo" do SharePoint com o endereço do site "PDF4me Support", caminho da pasta "/ZUGFeRD Invoices", nome do arquivo "ZUGFeRD_" seguido pelo token "InvoiceNumber" e ".pdf", e conteúdo do arquivo definido como o token "Body" da ação do PDF4me.

Para RE-2026-0007 este arquivo é ZUGFeRD_RE-2026-0007.pdf.


Etapa 6: Como você registra o resultado na solicitação?​

Fluxo até agora: tudo através de Create file.

A linha que solicitava a fatura também deveria indicar o que aconteceu com ela.

  1. Adicionar SharePoint > Update item.
  2. Configurar:
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • List Name: ZUGFeRD Requests
    • Id: o token ID do gatilho
    • Title: o token Title do gatilho
    • Status Value (avançado): Generated
    • OutputLink (avançado): o URL da biblioteca seguido por ZUGFeRD_, o token InvoiceNumber e .pdf

Update item: configuração​

Ação de atualização de item do SharePoint com o endereço do site "PDF4me Support", nome da lista "ZUGFeRD Requests", ID e título do gatilho, valor de status definido como "Gerado" e OutputLink criado a partir da URL da biblioteca de faturas do ZUGFeRD mais o número da fatura.

O link é montado a partir do URL da biblioteca e do mesmo padrão de nome usado Create file, com o espaço no nome da biblioteca já codificado como %20.


Passo 7: Como você envia a fatura para o comprador?​

Fluxo até agora: tudo através Update item.

Uma fatura eletrônica que permanece em uma biblioteca não foi emitida, portanto, a última ação consiste em entregá-la.

  1. Adicionar Office 365 Outlook > Send an email (V2).
  2. Configurar:
    • Para: o token Email do gatilho
    • Assunto: Your ZUGFeRD e-invoice seguida do token InvoiceNumber
    • Body: uma linha com o nome do comprador e da fatura, e indicando que o arquivo é um PDF/A-3 com XML EN 16931 incorporado
  3. Abra Advanced parameters e adicione o anexo:
    • Nome Attachments - 1: ZUGFeRD_ mais o token InvoiceNumber mais .pdf
    • Conteúdo Attachments - 1: o token File Content da Create ZUGFeRD Invoice
    • Importance: Normal

Send an email (V2): configuração​

Ação "Enviar um email" do Office 365 Outlook V2 com o campo "Para" preenchido com dados da coluna "Email", um assunto terminando com o número da fatura, um corpo do e-mail nomeando o comprador e descrevendo um arquivo PDF/A-3 com XML EN 16931 incorporado, um anexo chamado ZUGFeRD_ mais o número da fatura e a extensão .pdf cujo conteúdo é o token de conteúdo do arquivo PDF4me, e a importância definida como Normal.

O anexo obtém seus bytes da ação que os produziu, portanto o SharePoint nunca os lê de volta.


Execute o fluxo e verifique​

  1. Save o fluxo.
  2. Adicione uma linha às ZUGFeRD Requests com um comprador, um item de linha, ambas as datas e um endereço que você possa verificar.
  3. Abra o histórico de execução. Todas as sete ações devem estar verdes e a execução completa deve levar alguns segundos.
  4. Abra a biblioteca ZUGFeRD Invoices e verifique se o arquivo está lá, sob o número da fatura.
  5. Volte à linha: Status deve exibir Generated e OutputLink deve abrir a fatura.
  6. Abra o anexo do e-mail e verifique ambas as partes: a página deve mostrar os valores corretos e o arquivo deve conter o XML.

A captura de tela levou cerca de quatro segundos no total, com a fatura eletrônica sendo gerada em apenas um deles. O resultado, ZUGFeRD_RE-2026-0007.pdf, tem aproximadamente 331 KB e é apresentado como uma fatura alemã: vendedor Muster GmbH em Berlin com ID DE123456789, cliente Test Kunde AG em Muenchen, tipo de documento 380, um item de Consulting com IVA de 19%, valor líquido de 1.005,00 EUR, IVA de 190,95 EUR e total de 1.195,95 EUR.

O que você realmente construiu? Um sistema de faturamento eletrônico que parte dos seus próprios registros. Os dados permanecem onde o departamento financeiro os mantém, o padrão é atendido por um XML que você nunca precisou escrever, o comprador recebe um arquivo que seu software pode ler automaticamente e que sua equipe pode visualizar na tela, e a linha de solicitação registra que o arquivo foi enviado.


Variações comuns que você pode adicionar sem reconstruir​

Fatura com mais de uma linha
LineItems já é um array, então essa é a alteração mais simples no fluxo. Mantenha as linhas em uma segunda lista vinculada pelo número da fatura, busque-as com Get items e construa o array com um Select antes do Compose.
Verifique a saída antes de enviá-la
Execute as primeiras faturas em um validador ZUGFeRD e compare o resultado com o Conformance Level definido. Essa é a maneira mais rápida de detectar um erro de mapeamento enquanto o fluxo ainda é novo.
Mantenha o XML separado também
Alguns compradores desejam o arquivo estruturado separadamente. Execute a ação uma segunda vez com Output Mode definido como XmlOnly e salve o resultado na biblioteca ao lado do PDF.
Problema para diversas entidades jurídicas
O objeto Seller já vem das colunas, então uma lista pode ser emitida para duas empresas. Aponte o PDF base para um cabeçalho escolhido pela mesma coluna e a página impressa seguirá o mesmo padrão.

Como isso se compara às outras formas de gerar uma fatura ZUGFeRD​

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

ComparaçãoQuem o dirige?De onde vêm os dados?O que você mantém
Software de faturamento com exportação ZUGFeRD versus este fluxoQualquer pessoa, dentro desse produtoRegistros do próprio produtoUma assinatura, e tudo o que o produto oferece
Plataforma de faturamento eletrônico versus este fluxoFinanças, através de um portalUploads ou uma integraçãoUm contrato por documento e sua respectiva conexão
Biblioteca de desenvolvedor versus este fluxoUm desenvolvedor, dentro de um aplicativoSeu banco de dados, por meio de códigoO código, as atualizações de esquema e os lançamentos
Esse fluxoQualquer pessoa que possa adicionar uma linha à listaUma lista do SharePoint que a equipe mantémUm objeto JSON e um PDF base

Perguntas frequentes​

O que é uma fatura ZUGFeRD?​

Uma fatura ZUGFeRD é um arquivo que funciona de duas maneiras. É um PDF normal que qualquer pessoa pode abrir e ler, e dentro dele há um anexo XML contendo a mesma fatura como dados estruturados. O sistema de contabilidade do comprador lê o XML e registra a fatura sem que ninguém precise digitá-la, enquanto o responsável pelas contas a pagar ainda visualiza uma página.

O formato vem do FeRD, o fórum alemão para faturamento eletrônico, e seu equivalente francês é Factur-X, que é a mesma ideia com outro nome.

O que é o formato ZUGFeRD?​

Tecnicamente, trata-se de um contêiner PDF/A-3 com um arquivo XML incorporado na sintaxe Cross Industry Invoice e um perfil que indica o grau de completude dos dados. O perfil utilizado aqui é EN16931, que corresponde ao padrão semântico europeu para faturamento eletrônico: o conjunto de campos que EN 16931 define como o núcleo de uma fatura.

Na prática, a consequência disso para a automação é que a saída é avaliada com base no XML, e não na página. Forneça os dados solicitados pelo perfil e o arquivo é aprovado; deixe a página mais bonita e nada muda.

Como criar uma fatura ZUGFeRD?​

Você precisa de três coisas: os dados da fatura em formato estruturado, uma página para a parte que será preenchida pelo usuário e um programa que insira o XML no PDF como um anexo PDF/A-3.

Neste fluxo, os dados são uma linha do SharePoint convertida em JSON, a página é o BaseInvoice.pdf e Create ZUGFeRD Invoice executa a terceira parte com Output Mode XmlWithPdf. Se seus dados já existirem como XML Cross Industry Invoice ou como uma linha CSV, altere o formato de entrada e utilize esse formato. O restante do fluxo permanece inalterado.

Qual a diferença entre ZUGFeRD e XRechnung?​

Ambos atendem ao mesmo padrão europeu, e a diferença está na formatação. ZUGFeRD é híbrido: um PDF legível com o XML incorporado, adequado para faturas enviadas a clientes que podem abri-las manualmente. XRechnung é somente XML e é o formato exigido pelos compradores do setor público alemão.

Se você enviar faturas para empresas, o arquivo híbrido geralmente é a opção mais segura, pois pode ser lido por qualquer pessoa que o abra. Se a fatura for para um órgão público, verifique qual formato é exigido por esse órgão antes de enviar.


Solução de problemas​

A ação rejeita os dados da fatura

Abra o resultado Compose no histórico de execuções e leia-o como JSON antes de qualquer outra coisa. Uma coluna vazia deixa uma chave vazia, e um valor monetário que manteve as 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 de nível inferior.

O PDF parece estar em branco ou ainda mostra o modelo vazio

Render Invoice on PDF está definida como Não, portanto o XML foi incorporado sem exibir nada. O arquivo ainda é uma fatura eletrônica válida, mas a parte escrita à mão corresponde ao conteúdo original do PDF.

O comprador afirma que a fatura não contém XML

Verifique o conteúdo do anexo na etapa de e-mail e o File Content em Create file. Ambos devem vir da Create ZUGFeRD Invoice. Anexar o PDF base, em vez disso, envia uma página que parece correta, mas não contém nada para o software deles ler.


Próximos passos​

O mesmo padrão de sete etapas (uma linha chega, uma fatura é descrita como dados, um arquivo é produzido, arquivado, registrado e enviado) é o que toda exigência de faturamento eletrônico realmente requer, independentemente do formato que seus compradores acabem precisando.