La fattura elettronica, e ciò che la fa scartare
Una fattura elettronica non è una fattura in PDF. È un file che una macchina legge, e che la macchina del vostro cliente rifiuta al minimo scostamento. Ecco che cosa chiede la norma europea, in che cosa il caso italiano è diverso, e con che cosa verificarlo senza mandare la vostra fatturazione da nessuno.
In Italia c'è lo SdI, e questa pagina non parla di quello
L'Italia è arrivata prima di tutti. Dal 1° gennaio 2019 la fattura elettronica è obbligatoria fra soggetti residenti, in formato FatturaPA, e passa dal Sistema di Interscambio dell'Agenzia delle Entrate, che la consegna al destinatario e la scarta con un codice se non va. Per le pubbliche amministrazioni l'obbligo è ancora precedente.
FatturaPA è un formato nazionale, e non è quello di cui parla questa pagina. Ha il proprio schema, la propria firma, il proprio canale. Il verificatore di questo sito legge la norma europea EN 16931 nelle sue due sintassi — quella di Factur-X e ZUGFeRD, e quella di Peppol UBL —, cioè quello che vi arriva dai vostri clienti e fornitori esteri e quello che parte verso di loro.
E i due mondi si toccano più di quanto si creda. Le fatture transfrontaliere passano dallo SdI dal luglio 2022, l'Italia è un nodo Peppol per gli appalti pubblici, e un'impresa che lavora con la Francia o la Germania riceve dei Factur-X che nessun portale italiano le spiega. È lì che serve una verifica.
Che cos'è un Factur-X, in un minuto
Un Factur-X è un PDF/A-3 — un PDF d'archivio, leggibile da qualunque lettore — che porta in allegato un file XML strutturato secondo la sintassi CII di UN/CEFACT. L'essere umano legge il PDF, la macchina legge l'XML, e i due dovrebbero dire la stessa cosa.
Il formato è pubblicato insieme dal FNFE-MPE francese e dal FeRD tedesco: Factur-X e ZUGFeRD sono tecnicamente lo stesso formato, sotto due nomi. Una fattura tedesca valida lo è anche in Francia, e viceversa.
La norma ammette una seconda sintassi, e ignorarlo costa caro. La EN 16931 consente lo stesso contenuto in UBL (OASIS): è la forma di Peppol BIS Billing 3.0 e della XRechnung tedesca, e circola quasi sempre come file XML da solo, senza PDF attorno — il PDF leggibile da una persona è facoltativo nella norma. Il nostro verificatore legge entrambe le sintassi, e un XML depositato senza PDF viene letto così com'è.
Questa doppia natura spiega la maggior parte degli scarti: un documento può essere un PDF perfetto con un XML sbagliato, un XML perfetto dentro un PDF fabbricato male, o entrambi giusti ma che si contraddicono.
Perché una fattura viene scartata: quattro strati
Il contenitore. Il PDF è un vero PDF/A-3? I caratteri sono tutti incorporati, l'intento di output è presente, il documento non è cifrato? È l'errore tecnico più frequente, e non ha niente a che vedere con la contabilità.
L'allegato. L'XML c'è, si chiama factur-x.xml, è dichiarato come UN'ALTRA FORMA del documento (/AFRelationship /Alternative) e non come un allegato qualsiasi? Un XML perfetto riposto sotto un nome sbagliato non verrà letto.
La grammatica. L'XML rispetta la sua sintassi: i tag giusti, nell'ordine giusto, con le cardinalità giuste?
Le regole di business. È lo strato che scarta di più: il totale documento dev'essere l'imponibile più l'IVA, l'IVA dev'essere la somma delle sue ripartizioni, un'esenzione deve dichiarare il proprio motivo. Queste regole portano dei codici (BR-CO-15, BR-E-10), ed è quello che il portale del vostro cliente vi restituirà.
Il rapporto nomina il codice, la causa e la correzione, e rimanda alla pagina che lo sviluppa. Tutti gli ottantasette codici hanno la loro pagina in italiano, come nelle altre cinque lingue del sito.
La trappola dei profili, che nessuno dice abbastanza forte
Factur-X ha cinque profili: MINIMUM, BASIC WL, BASIC, EN 16931 ed EXTENDED. Non portano le stesse cose, ed è lì che si gioca la partita.
MINIMUM e BASIC WL sono veri profili Factur-X che NON sono conformi alla EN 16931: non portano alcuna riga di fattura. Sono testate contabili, pensate per l'imputazione. Molti programmi li producono per impostazione predefinita, e chi li usa crede di emettere una fattura elettronica conforme fino al primo scarto.
Il profilo si dichiara nell'XML stesso, ed è quel valore che i controlli guardano. Una fattura che contiene righe ma si dichiara MINIMUM sarà giudicata su ciò che dichiara.
Perché verificare qui, e non altrove
I validatori in linea esistono, e funzionano. Hanno tutti lo stesso difetto: bisogna caricargli la fattura. E una fattura porta un IBAN, un fatturato, l'identità di un cliente, a volte uno sconto negoziato che nessun concorrente dovrebbe conoscere.
Qui non parte niente. Il file è letto dal browser, sulla vostra macchina, e la politica di sicurezza della pagina vieta qualunque connessione in uscita: connect-src 'self'. Non è una promessa, è una regola applicata dal vostro browser, e potete verificarla voi stessi in trenta secondi.
Conseguenza diretta: quante fatture volete. Non c'è un server da pagare dietro, quindi nessuna tariffa a documento, nessun account da creare, nessun limite di volume. Uno studio commercialista può passarci l'intero portafoglio dei suoi clienti senza che un solo file esca dall'ufficio.
Quello che questo strumento non fa
Non validiamo la FatturaPA, e non parliamo allo SdI. Il formato italiano nazionale ha il proprio schema e il proprio canale; il nostro motore legge la EN 16931 nelle sue due sintassi (CII e UBL). Se il vostro file è una FatturaPA, questo strumento non è il vostro — e preferiamo scriverlo qui piuttosto che rispondervi «questo non è una fattura».
Non siamo un intermediario né un fornitore di servizi di trasmissione. Non trasmettiamo niente all'amministrazione né al vostro cliente: leggiamo un file e vi diciamo che cosa non va.
Non rilasciamo alcun attestato di conformità, e il rapporto non dice mai «fattura conforme». Dice «nessun errore rilevato sulle N regole testate», dove N è il numero di controlli realmente eseguiti, perché è questo che è vero.
La conformità PDF/A non è verificata in modo esaustivo. Il riferimento del settore, veraPDF, non ha un equivalente che giri in un browser: verifichiamo la quindicina di condizioni che causano la grande maggioranza degli scarti reali, e la chiamiamo una verifica preliminare, non una certificazione.
Non correggiamo la vostra fattura al posto vostro nel vostro programma. Lo strumento vi dice quale campo, quale riga, quale valore era atteso: la correzione definitiva si fa nel programma che ha prodotto il file, ed è l'unico posto in cui reggerà.