Passa al contenuto principale

Fattura elettronica ZUGFeRD da un elenco di SharePoint: converti JSON in XML EN 16931 e PDF/A-3 in Power Automate con PDF4me

· 29 minuti di lettura
SEO and Content Writer

PDF4me Create ZUGFeRD Invoice è un'azione di Power Automate che trasforma i dati di una fattura in una fattura elettronica ibrida PDF/A-3. Puntata a un elenco di SharePoint, l'azione prende il JSON generato da un'azione Compose da ogni riga, scrive autonomamente il file XML conforme EN 16931, disegna la fattura leggibile sul PDF di base, archivia il risultato e lo invia via e-mail all'acquirente.

Cercando ZUGFeRD ci si imbatte in una di queste tre soluzioni: una spiegazione del formato, un validatore che verifica la correttezza di un file già in possesso, oppure una libreria in PHP, Java o C# per sviluppatori di software di fatturazione. Tutte e tre presuppongono che la fattura esista già da qualche parte. La domanda a cui nessuna di queste soluzioni risponde è quella che un team finanziario si pone realmente: i dati della fattura si trovano in un elenco, in un foglio di calcolo, in qualsiasi sistema registri le vendite, e devono essere elaborati come fattura elettronica conforme. Questo flusso rappresenta proprio quel passaggio intermedio mancante, in sette fasi e senza bisogno di scrivere codice.

Il flusso in sintesi
1. When an item is created
Trigger di SharePoint sull'elenco denominato ZUGFeRD Requests. Ogni riga corrisponde a una fattura.
2. Compose
Crea un oggetto JSON di fattura a partire dalle seguenti righe: venditore, acquirente, articolo, totale, pagamento.
3. Get file content using path
Legge il BaseInvoice.pdf, ovvero la pagina su cui è disegnata la fattura.
4. Create ZUGFeRD Invoice
PDF4me PDF. Formato di input 2.0-JSON, XmlWithPdf, conformità EN16931, fattura generata.
5. Create file
Salva il PDF ibrido nella libreria ZUGFeRD Invoices.
6. Update item
Status dei timbri Generated e OutputLink di nuovo sulla stessa riga.
7. Send an email (V2)
Invia la fattura all'indirizzo dell'acquirente indicato nella riga.
La versione breve

Una riga viene inserita in un elenco di SharePoint con il venditore, l'acquirente, una voce e le date. Quattro secondi dopo, in una raccolta documenti, si trova una fattura PDF/A-3: una pagina leggibile, con il codice XML EN 16931 incorporato, che il software dell'acquirente può elaborare. Non è necessario scrivere manualmente il codice XML. La fattura viene descritta come un breve oggetto JSON e PDF4me genera automaticamente lo schema. La riga riceve lo stato e un link, e l'acquirente riceve il file via e-mail.

Domande e risposte basate sul perché​

Perché conservare i dati delle fatture in un elenco di SharePoint? Perché questo è il formato in cui i dati sono già presenti nella maggior parte dei piccoli team finanziari: una riga per ogni fattura, compilata da una persona. Le colonne corrispondono uno a uno ai campi richiesti dallo standard, il che significa che la corrispondenza è visibile a chiunque apra l'elenco e una nuova fattura corrisponde a una nuova riga anziché a un nuovo file in una cartella monitorata.

Perché descrivere la fattura in formato JSON invece di scrivere in XML? Perché la sintassi Cross Industry Invoice è prolissa e rigida: namespace annidati, nomi di elementi che nessuno ricorda, codici che devono essere posizionati esattamente nel punto giusto. L'oggetto JSON esprime la stessa informazione in una frazione delle righe, con chiavi che corrispondono ai termini commerciali che rappresentano. PDF4me lo converte nello schema, quindi la parte in cui è più facile commettere errori è quella che non devi gestire.

Perché generare la fattura su un PDF di base? Perché un file ZUGFeRD è composto da due parti che devono essere coerenti. Il file XML è destinato al software dell'acquirente, mentre la pagina stampata è per chi la apre. Render Invoice on PDF disegna la fattura sulla pagina di base utilizzando gli stessi dati che hanno generato il file XML, in modo che le due parti non possano mai differire, come accade quando il layout viene gestito separatamente.

Perché PDF/A-3 e non un normale PDF? Perché PDF/A-3 è il formato di archiviazione che consente di allegare file, e l'XML incorporato rappresenta proprio quell'allegato. È anche la parte che rende la fattura leggibile anche a distanza di anni: i caratteri e i profili colore vengono mantenuti all'interno del file, un aspetto fondamentale per un documento che la maggior parte delle aziende è tenuta a conservare per un decennio.


Cosa riceverai​

Input: una riga con il numero di fattura, le date, la valuta, il blocco venditore, il blocco acquirente e una voce. Output: una fattura ZUGFeRD PDF/A-3 nella libreria ZUGFeRD Invoices, la riga aggiornata con il suo stato e un link, e un'e-mail all'acquirente con la fattura in allegato.

Elemento dell'elenco SharePoint RE-2026-0007 in Richieste ZUGFeRD che mostra InvoiceNumber RE-2026-0007, InvoiceDate 12.10.2026, DueDate 11.11.2026, Valuta EUR, SellerName Muster GmbH, SellerStreet Hauptstrasse 1, SellerPostalCode 10115, SellerCity Berlin, SellerCountry DE, SellerPATID DE123456789, BuyerName Test Kunde AG, BuyerStreet Bahnhofstrasse 5, BuyerPostalCode 80331, BuyerCity Muenchen, BuyerCountry DE, ItemDescription Consulting, Quantity 10,00, UnitPrice 100,50, VATRate 19, una colonna Email e Stato Generato

Una riga per fattura. Ogni colonna in questo riquadro diventa una chiave nel JSON generato dal flusso.

Elenco della libreria di fatture ZUGFeRD di SharePoint, dai file ZUGFeRD_RE-2026-0001.pdf fino a ZUGFeRD_RE-2026-0004.pdf e al più recente ZUGFeRD_RE-2026-0007.pdf, tutti modificati dall'account Pdf4me Flow.

Un file per ogni numero di fattura, scritto dal conto di flusso.

Outlook mostra l'e-mail con l'allegato ZUGFeRD_RE-2026-0007.pdf e la fattura tedesca visualizzata aperta nel riquadro di anteprima: venditore Muster GmbH a Berlino con partita IVA DE123456789, cliente Test Kunde AG a Monaco di Baviera, fattura RE-2026-0007 del 12.10.2026, tipo di documento 380, una riga di consulenza con IVA al 19%, netto 1.005,00 euro e totale 1.195,95 euro

La metà leggibile dello stesso file, così come la vede l'acquirente.


Di cosa hai bisogno​

  • Power Automate. Apri Power Automate. Un flusso cloud automatizzato su connettori standard. SharePoint, Office 365 Outlook e PDF4me non richiedono un piano premium.
  • Chiave API di PDF4me. Ottieni la tua chiave API. Questo flusso utilizza una connessione PDF4me, PDF4me PDF.
  • Un elenco di SharePoint per le richieste. L'elenco acquisito si chiama ZUGFeRD Requests e include i InvoiceNumber, InvoiceDate, DueDate, Valuta, il blocco Seller (nome, via, codice postale, città, paese, ID IVA), il blocco Buyer, ItemDescription, Quantità, UnitPrice, VATRate, una colonna Email, una colonna di scelta Status e una colonna OutputLink in cui il flusso scrive.
  • Un PDF di base per la fattura. Il flusso acquisito mantiene BaseInvoice.pdf in una libreria chiamata ZUGFeRD Templates. Questa è la pagina su cui viene disegnata la fattura, quindi la tua intestazione va inserita qui.
  • Una libreria per le fatture finali. Il flusso acquisito scrive in ZUGFeRD Invoices.
  • I tuoi dati di venditore, incluso il ID IVA. Questi dati vanno inseriti nelle colonne dell'elenco, in modo che lo stesso flusso possa emettere fatture per più di un'entità legale.
Parti da un oggetto JSON funzionante
Se preferisci visualizzare la struttura prima di creare il Compose, ecco la struttura completa ZUGFeRD 2.0 EN16931 con tutte le chiavi accettate dal profilo. Incollala in Compose e sostituisci i valori con i tuoi token.
Scarica sample-invoice-zugferd-2.0-en16931.json

Il flusso in sintesi​

  1. When an item is created (SharePoint), viene monitorata la lista denominata ZUGFeRD Requests.
  2. Compose crea il JSON della fattura a partire dalla riga.
  3. Get file content using path /ZUGFeRD Templates/BaseInvoice.pdf.
  4. Create ZUGFeRD Invoice (PDF4me PDF) converte il JSON in XML EN 16931 e restituisce il PDF ibrido.
  5. Create file (SharePoint) e salvalo come ZUGFeRD_<invoice number>.pdf.
  6. Update item (SharePoint) imposta Status su Generated e compila OutputLink.
  7. Send an email (V2) (Office 365 Outlook) invia la fattura all'acquirente.

Panoramica completa del flusso​

Cronologia di esecuzione di Power Automate che mostra sette azioni completate con successo in ordine: Quando viene creato un elemento a 0,2 secondi, Componi a 0 secondi, Ottieni il contenuto del file tramite percorso a 0,2 secondi, Crea fattura ZUGFeRD a 1 secondo, Crea file a 2 secondi, Aggiorna elemento a 0,4 secondi e Invia un'e-mail V2 a 0,4 secondi

Quattro secondi e qualcosa dall'inizio alla fine, e la fattura elettronica in sé richiede circa un secondo. La fase più lenta è la scrittura del file da parte di SharePoint.


Passaggio 1: Come si fa a generare una fattura elettronica al ricevimento di una richiesta?​

Flusso finora: ancora niente, questo è il trigger.

L'aggiunta di una riga è il modo in cui viene richiesta una fattura, quindi questo è il segnale.

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

When an item is created: configurazione​

SharePoint Quando viene creato un elemento, attiva il trigger con l'indirizzo del sito PDF4me Support all'indirizzo ynoox1.sharepoint.com/sites/PDF4meSupport e il nome dell'elenco ZUGFeRD Requests, senza parametri avanzati impostati.

Ogni colonna della nuova riga diventa un token che le successive sei azioni potranno utilizzare.


Passaggio 2: Come si crea il file JSON della fattura a partire dalle colonne dell'elenco?​

Flusso finora: il trigger di SharePoint.

Un'azione Compose descrive l'intera fattura. Qui i nomi delle colonne corrispondono ai nomi previsti dallo standard e il tutto è sufficientemente breve da poter essere letto su una sola schermata.

  1. Aggiungi Data Operation > Compose.
  2. Incolla l'oggetto sottostante nel campo Input e sostituisci ogni valore con il token corrispondente.
{
"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: configurazione​

Azione Compose di Power Automate contenente il JSON della fattura con InvoiceId, TypeCode 380, InvoiceType RECHNUNG, IssueDate e DeliveryDate, un oggetto Venditore con VatId e indirizzo, un oggetto Acquirente con indirizzo, un array LineItems con ProductName, Quantity, UnitCode C62 e UnitPrice, un oggetto Totals con Currency, TaxPercent ed espressioni float per i valori monetari e un oggetto Pagamento con il riferimento del pagamento e la data di scadenza

I valori testuali sono token racchiusi tra virgolette. Il denaro e le quantità sono numeri semplici, motivo per cui vengono elaborati tramite float.

Da dove proviene ciascuna parte della fattura​

Chiave JSONCosa trasportaFonte
InvoiceId, TypeCode, InvoiceTypeNumero di fattura, codice tipo documento 380 per fattura commerciale e etichetta stampata sulla paginaInvoiceNumber, quindi valori fissi
IssueDate, DeliveryDateQuando è stata emessa la fattura e quando è stato erogato il servizioInvoiceDate, con suffisso T00:00:00
SellerNome, ID IVA e indirizzo completoSellerName, SellerVATID, SellerStreet, SellerPostalCode, SellerCity, SellerCountry
BuyerNome e indirizzo del clienteBuyerName, BuyerStreet, BuyerPostalCode, BuyerCity, BuyerCountry
LineItemsDescrizione, quantità con codice unità C62, prezzo unitario e totale della rigaItemDescription, Quantità, UnitPrice
TotalsValuta, totale netto, base imponibile, aliquota e importo IVA, totale complessivoValuta, VATRate e importi calcolati
Paymentla valuta, il riferimento che l'acquirente indica al momento del pagamento e la data di scadenzaValuta, InvoiceNumber, DueDate

Suggerimento. Le chiavi relative al denaro sono l'unica parte che richiede calcoli aritmetici e devono risultare come numeri semplici anziché come stringhe racchiuse tra virgolette, per le quali esistono le espressioni float. LineTotal è la quantità moltiplicata per il prezzo unitario, TaxBasisTotal è la somma dei totali di riga, TaxTotal è la base imponibile moltiplicata per l'aliquota divisa per 100 e GrandTotal è la somma dei due valori. Per la riga acquisita, i valori sono 1005, 1005, 190,95 e 1195,95. Un "1005" racchiuso tra virgolette verrà rifiutato, mentre un semplice 1005 è accettato.


Passaggio 3: Da dove proviene il PDF di base?​

Flusso finora: il trigger più Compose.

I file ZUGFeRD hanno una pagina leggibile, ed è da qui che inizia.

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

Get file content using path: configurazione​

SharePoint Ottieni il contenuto del file utilizzando l'azione percorso con supporto indirizzo sito PDF4me, percorso file /ZUGFeRD Templates/BaseInvoice.pdf e tipo di contenuto inferito impostato su Sì

Conserva la tua carta intestata in questo file. Viene letta di nuovo a ogni ciclo di fatturazione, quindi modificarla influirà sulla fattura successiva.


Passaggio 4: Come si converte un file JSON in un PDF/A-3 ZUGFeRD?​

Flusso finora: il trigger, Compose e Get file content using path.

Questa è l'azione che genera la fattura elettronica. Legge il file JSON, genera autonomamente il file XML conforme EN 16931 e restituisce un unico file contenente entrambe le parti della fattura.

  1. Aggiungi Create ZUGFeRD Invoice dalla connessione PDF4me PDF.
  2. Configura:
    • ZUGFeRD version and Input Format: 2.0-JSON
    • Output Mode: XmlWithPdf
    • Invoice JSON Data: l'espressione base64(outputs('Compose'))
    • Conformance Level: EN16931
    • Render Invoice on PDF: Yes
    • File Content: un'espressione base64() sul contenuto da Get file content using path
    • File Name: BaseInvoice.pdf

Create ZUGFeRD Invoice: configurazione​

Azione PDF4me Crea fattura ZUGFeRD con versione ZUGFeRD e formato di input impostato su 2.0-JSON, modalità di output XmlWithPdf, il campo Dati JSON fattura contenente l'espressione base64 degli output Compose, livello di conformità EN16931, renderizza fattura su PDF Sì, contenuto del file contenente un'espressione base64 sul PDF di base e nome file BaseInvoice.pdf, connesso a PDF4me PDF

Il formato di input determina quale campo dati viene visualizzato. Selezionando 2.0-JSON, l'azione richiederà Invoice JSON Data, non Invoice XML Data.

Ciò che decide ogni impostazione​

CampoValore quiCiò che controlla
ZUGFeRD version and Input Format2.0-JSONQuale generazione ZUGFeRD segue l'output e che i dati arrivino in formato JSON. Questa scelta è ciò che fa apparire il campo Invoice JSON Data
Output ModeXmlWithPdfRestituisci un file ibrido, ovvero il PDF con l'XML incorporato, anziché il solo XML
Invoice JSON Database64(outputs('Compose'))L'oggetto fattura, codificato base64 durante l'inserimento
Conformance LevelEN16931Il profilo che la fattura dichiara di soddisfare e quindi quali chiavi deve fornire il JSON
Render Invoice on PDFYesDisegna la fattura leggibile sul PDF di base invece di lasciare la pagina così com'era
File Content, File NameIl PDF di baseLa pagina su cui è disegnata la fattura e il nome a cui l'azione fa riferimento

Suggerimento. L'azione mostra Invoice XML Data, Invoice JSON Data o Invoice CSV Data a seconda della sezione Formato del menu a tendina. Compila solo il campo corrispondente alla tua scelta. Inserire due campi dati nella stessa esecuzione è la causa più comune di errori di convalida in questa azione.


Passaggio 5: Dove va archiviata la fattura?​

Flusso finora: tutto tramite Create ZUGFeRD Invoice.

Il numero di fattura identifica il file, consentendo così di effettuare ricerche nella libreria.

  1. Aggiungi SharePoint > Create file.
  2. Configura:
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • Folder Path: /ZUGFeRD Invoices
    • File Name: ZUGFeRD_ seguito dal token InvoiceNumber e dall'estensione .pdf
    • File Content: il token Body da Create ZUGFeRD Invoice

Create file: configurazione​

Azione di creazione file di SharePoint con indirizzo del sito Supporto PDF4me, percorso cartella /ZUGFeRD Invoices, nome file ZUGFeRD_ seguito dal token InvoiceNumber e .pdf, e contenuto file impostato sul token Body dall'azione PDF4me

Per RE-2026-0007 viene scritto ZUGFeRD_RE-2026-0007.pdf.


Passaggio 6: Come si registra il risultato della richiesta?​

Flusso finora: tutto tramite Create file.

Nella riga in cui si richiede la fattura dovrebbe essere specificato anche cosa ne è stato.

  1. Aggiungi SharePoint > Update item.
  2. Configura:
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • List Name: ZUGFeRD Requests
    • Id: il token ID del trigger
    • Title: il token Title dal trigger
    • Status Value (avanzato): Generated
    • OutputLink (avanzato): l'URL della libreria seguito da ZUGFeRD_, il token InvoiceNumber e .pdf

Update item: configurazione​

Aggiornamento elemento SharePoint con indirizzo sito Supporto PDF4me, nome elenco Richieste ZUGFeRD, ID e titolo dal trigger, valore di stato impostato su Generato e collegamento di output creato dall'URL della libreria Fatture ZUGFeRD più il numero di fattura

Il collegamento viene creato a partire dall'URL della libreria e dallo stesso modello di nome Create file utilizzato, con lo spazio nel nome della libreria già codificato come %20.


Passaggio 7: Come si invia la fattura all'acquirente?​

Flusso finora: tutto tramite Update item.

Una fattura elettronica che rimane in una libreria non è stata emessa, quindi l'ultima azione ne determina la consegna.

  1. Aggiungi Office 365 Outlook > Send an email (V2).
  2. Configura:
    • A: il token Email dal trigger
    • Oggetto: Your ZUGFeRD e-invoice seguita dal token InvoiceNumber
    • Body: una riga che indica l'acquirente e la fattura, e specifica che il file è un PDF/A-3 con XML EN 16931 incorporato
  3. Apri Advanced parameters e aggiungi l'allegato:
    • Nome Attachments - 1: ZUGFeRD_ più il token InvoiceNumber più .pdf
    • Contenuto Attachments - 1: il token File Content da Create ZUGFeRD Invoice
    • Importance: Normal

Send an email (V2): configurazione​

Azione di invio email V2 di Office 365 Outlook con A preso dalla colonna Email, un oggetto che termina con il numero di fattura, un corpo che nomina l'acquirente e descrive un PDF/A-3 con XML EN 16931 incorporato, un allegato denominato ZUGFeRD_ più il numero di fattura e .pdf il cui contenuto è il token Contenuto file PDF4me e Importazione Normale

L'allegato prende i suoi byte dall'azione che lo ha generato, quindi SharePoint non li legge mai.


Esegui il flusso e verifica​

  1. Save il flusso.
  2. Aggiungi una riga alle ZUGFeRD Requests con un acquirente, una voce, entrambe le date e un indirizzo che puoi verificare.
  3. Apri la cronologia delle esecuzioni. Tutte e sette le azioni dovrebbero essere verdi e l'intera esecuzione dovrebbe durare pochi secondi.
  4. Apri la libreria ZUGFeRD Invoices e verifica che il file sia presente con il numero di fattura corrispondente.
  5. Torna alla riga: Status dovrebbe essere Generated e OutputLink dovrebbe aprire la fattura.
  6. Apri l'allegato dell'email e controlla entrambe le parti: la pagina dovrebbe mostrare gli importi corretti e il file dovrebbe contenere al suo interno il codice XML.

L'esecuzione del processo ha richiesto circa quattro secondi in totale, di cui uno dedicato alla generazione della fattura elettronica. Il risultato, ZUGFeRD_RE-2026-0007.pdf, ha una dimensione di circa 331 KB e si presenta come una fattura tedesca: venditore Muster GmbH di Berlin con ID IVA DE123456789, cliente Test Kunde AG di Muenchen, tipo di documento 380, una riga relativa alla Consulting con IVA al 19%, importo netto 1.005,00 EUR, IVA 190,95 EUR e un totale di 1.195,95 EUR.

Cosa hai effettivamente realizzato? Un sistema di fatturazione elettronica che parte dai tuoi archivi. I dati rimangono dove li conserva il reparto finanziario, lo standard è rispettato grazie a un file XML che non hai mai dovuto scrivere, l'acquirente riceve un file che il suo software può leggere automaticamente e il suo personale può visualizzarlo a schermo, e la riga della richiesta registra l'avvenuta emissione.


Varianti comuni che puoi aggiungere senza dover ricostruire​

Fattura su più righe
LineItems è già un array, quindi questa è la modifica più semplice al flusso. Mantieni le righe in un secondo elenco collegato tramite il numero di fattura, recuperale con Get items e crea l'array con un Select prima di Compose.
Controlla l'output prima che venga inviato
Eseguite le prime fatture tramite un validatore ZUGFeRD e confrontate i risultati con il Conformance Level impostato. È il modo più rapido per individuare un errore di mappatura mentre il flusso è ancora nuovo.
Conserva anche il file XML separatamente
Alcuni acquirenti desiderano il file strutturato separatamente. Richiama l'azione una seconda volta con Output Mode impostata su XmlOnly e salva il risultato nella libreria accanto al PDF.
Problema che riguarda diverse entità giuridiche
L'oggetto Seller deriva già dalle colonne, quindi un singolo elenco può essere generato per due aziende. Basta impostare il PDF di base su una carta intestata scelta dalla stessa colonna e la pagina stampata verrà generata di conseguenza.

Come si confronta questo con gli altri metodi di emissione di una fattura ZUGFeRD​

Ogni riga descrive l'alternativa. L'ultima riga rappresenta questo flusso.

ConfrontoChi lo gestisce?Da dove provengono i datiCiò che mantieni
Software di fatturazione con esportazione ZUGFeRD vs questo flussoChiunque, all'interno di quel prodottoI dati propri del prodottoUn abbonamento e tutto ciò che il prodotto supporta
Piattaforma di fatturazione elettronica vs questo flussoFinanza, attraverso un portaleCaricamenti o un'integrazioneUn contratto per documento e una connessione ad esso
Libreria per sviluppatori vs questo flussoUno sviluppatore, all'interno di un'applicazioneIl tuo database, tramite codiceIl codice, gli aggiornamenti dello schema e le release
Questo flussoChiunque può aggiungere una riga di elencoUn elenco SharePoint che il team tieneUn oggetto JSON e un PDF di base

Domande frequenti​

Che cos'è una fattura ZUGFeRD?​

Una fattura ZUGFeRD è un singolo file che funziona in due modi. È un normale PDF che può essere aperto e letto, e al suo interno si trova un allegato XML contenente la stessa fattura come dati strutturati. Il sistema contabile dell'acquirente legge l'XML e registra la fattura senza che nessuno debba inserirla manualmente, mentre l'addetto alla contabilità fornitori continua a visualizzare la pagina.

Il formato proviene da FeRD, il forum tedesco per la fatturazione elettronica, e la sua controparte francese è Factur-X, che è la stessa idea con un nome diverso.

Cos'è il formato ZUGFeRD?​

Tecnicamente si tratta di un contenitore PDF/A-3 con un file XML incorporato nella sintassi Cross Industry Invoice e un profilo che indica il livello di completezza dei dati. Il profilo utilizzato in questo caso è EN16931, che corrisponde allo standard semantico europeo per la fatturazione elettronica: l'insieme di campi che EN 16931 definisce come il nucleo di una fattura.

La conseguenza pratica per un'automazione è che l'output viene valutato in base al file XML, non alla pagina. Se si forniscono i dati richiesti dal profilo, il file viene accettato; se si migliora l'aspetto della pagina, non cambia nulla.

Come creare una fattura ZUGFeRD?​

Ti servono tre cose: i dati della fattura in un formato strutturato, una pagina per la parte umana e un programma che scriva l'XML nel PDF come allegato PDF/A-3.

In questo flusso, i dati sono una riga di SharePoint convertita in JSON, la pagina è BaseInvoice.pdf e Create ZUGFeRD Invoice si occupa della terza parte con Output Mode XmlWithPdf. Se i dati esistono già come file XML Cross Industry Invoice o come riga CSV, è sufficiente modificare il formato di input e utilizzare quello. Il resto del flusso rimane invariato.

Qual è la differenza tra ZUGFeRD e XRechnung?​

Entrambi soddisfano lo stesso standard europeo, la differenza sta nel formato. ZUGFeRD è un formato ibrido: un PDF leggibile con l'XML al suo interno, adatto alle fatture inviate ai clienti che potrebbero aprirle manualmente. XRechnung è invece un formato esclusivamente XML ed è quello richiesto dagli enti pubblici tedeschi.

Se inviate documenti ad aziende, il formato ibrido è generalmente la scelta più sicura, perché è leggibile da chiunque lo apra. Se invece emettete una fattura a un ente pubblico, verificate quale formato è richiesto da tale ente prima di inviare la fattura.


Risoluzione dei problemi​

L'azione rifiuta i dati della fattura

Apri l'output Compose nella cronologia delle esecuzioni e leggilo come JSON prima di qualsiasi altra cosa. Una colonna vuota lascia una chiave vuota e un valore monetario che ha mantenuto le virgolette viene visualizzato come testo dove è previsto un numero. Entrambi producono un oggetto che sembra corretto ma la conversione fallisce comunque.

Un validatore rifiuta il livello di conformità

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. È necessario fornire le chiavi mancanti o passare a un profilo di livello inferiore.

Il PDF appare vuoto o mostra ancora il modello vuoto

Render Invoice on PDF è impostata su No, quindi l'XML è stato incorporato senza visualizzare nulla. Il file è comunque una fattura elettronica valida, ma la parte relativa all'utente corrisponde al contenuto del PDF di base.

L'acquirente afferma che la fattura non contiene XML

Verifica il contenuto dell'allegato nella fase di invio dell'e-mail e il File Content in Create file. Entrambi devono provenire da Create ZUGFeRD Invoice. Allegare il PDF di base, invece, invia una pagina che sembra corretta ma non contiene nulla che il loro software possa leggere.


Prossimi passi​

Lo stesso schema in sette fasi (arriva una riga, una fattura viene descritta come dato, viene prodotto un file, archiviato, registrato e inviato) è ciò che in realtà richiede ogni mandato di fatturazione elettronica, indipendentemente dal formato di cui i vostri acquirenti avranno bisogno.