E-invoicing Italy

FatturaPA validator

Check a fattura elettronica against the schema and the checks the Sistema di Interscambio runs on the file, with the error codes its rejection receipts use, before you send it. Nothing is uploaded.

E-invoicing in Italy in short

Since 1 January 2019, invoices between businesses and to consumers resident or established in Italy are electronic and go through the Sistema di Interscambio (SdI), run by Agenzia delle Entrate; an invoice issued any other way counts as not issued. Invoices to the public administration go through the SdI as well. Sellers in the flat-rate regime (forfettari) joined on 1 July 2022 if their income was over 25,000 euros, and all of them on 1 January 2024. Since 1 July 2022 transactions with parties outside Italy are reported through the SdI too, in the same format. Invoices whose data go to the Sistema tessera sanitaria (healthcare) are not sent through the SdI.

From 1 January 2027 these rules move into the new VAT code, the Testo unico IVA (D.Lgs. 10/2026, articles 74, 77 and 78), in place of D.Lgs. 127/2015.

The format is FatturaPA: one schema (version 1.2.3) for invoices to the public administration (FPA12) and between private parties (FPR12), and a simplified invoice (FSM10) for amounts up to 400 euros. The technical specifications in use are version 1.9.1, from 15 May 2026.

How to check a FatturaPA invoice

  1. Open the validator with the FatturaPA profile, or the simplified invoice one. A file opened or pasted picks the right one from its document element.
  2. Paste the XML or drop the file (a signed .xml works; extract a .p7m first), then press Validate.
  3. Each finding has the SdI's code and its Italian description, as on a rejection receipt, with an English rendering under it; click the code for what it checks and how to fix it.

What is checked

The schema first, then the SdI's checks on the content of the file, as Agenzia delle Entrate describes them in Appendice 1 of the technical specifications 1.9.1 and in the pseudocode of its Elenco dei controlli: VAT rates and nature codes (SDI-00400, SDI-00445), line totals with cascading discounts (SDI-00423), the taxable amount and VAT of each summary (SDI-00422, SDI-00421), the recipient code against the format (SDI-00427), document types TD16 to TD29, invoices repeated in one file and, for simplified invoices, the 400 euro limit (SDI-00460).

Agenzia delle Entrate publishes no machine-readable rules, so these are written by us from its documents and tested on its example invoices and on altered copies of them. Where the documents leave room we take the lenient reading, to avoid failing an invoice the SdI accepts: the Italian specifications allow one euro on SDI-00422 (the English translation says one cent).

Checks that need the SdI's records are not run: the Anagrafe Tributaria and IndicePA lookups of VAT numbers, tax codes and recipient codes (00300 to 00327, 00311, 00312), invoices sent before (00404), declarations of intent (00477), the file name and the signature. Instead we check the check digits of every Italian partita IVA and codice fiscale (XV-IT-02, XV-IT-05 and the others), which the lookup cannot pass without.

Profiles to check with

  • FatturaPA 1.2.3: The Italian e-invoice: the XML that invoices to the public administration, between businesses and to consumers are sent in through the SdI (Sistema di Interscambio), checked against the schema and the SdI's own checks on the file. Validate
  • FatturaPA simplified 1.0.2: The Italian simplified e-invoice (fattura semplificata, art. 21-bis DPR 633/72) sent through the SdI, checked against the schema and the SdI's own checks on the file. Validate

Rules invoices break most

Each one has a page with what it checks, its test and, for many, how to fix it.

  • SDI-00423: 2.2.1.11 <PrezzoTotale> non calcolato secondo le regole definite nelle specifiche tecniche
  • SDI-00422: 2.2.2.5 <ImponibileImporto> non calcolato secondo le regole definite nelle specifiche tecniche
  • SDI-00421: 2.2.2.6 <Imposta> non calcolato secondo le regole definite nelle specifiche tecniche
  • SDI-00400: 2.2.1.14 <Natura> non presente a fronte di 2.2.1.12 <AliquotaIVA> pari a zero
  • SDI-00445: Non è più ammesso il valore generico N2, N3 o N6 come codice natura dell'operazione
  • SDI-00427: 1.1.4 <CodiceDestinatario> di 7 caratteri a fronte di 1.1.3 <FormatoTrasmissione> con valore FPA12 o 1.1.4 <CodiceDestinatario> di 6 caratteri a fronte di 1.1.3...

Questions

Is the invoice uploaded?

No. The schema check and the SdI checks both run in your browser. Only the API and URL monitors validate on our servers.

Does a valid result mean the SdI will accept the invoice?

It means the file passes the schema and every SdI check that can be made on the file alone. The SdI also looks up VAT numbers, tax codes and recipient codes in its records and checks for invoices sent before, which this check cannot do.

Can I check a signed .p7m file?

Not directly: a .p7m wraps the XML in a CAdES signature. Extract the XML first, for example with the tool of your signing software, and check that. Signed .xml files (XAdES) open as they are.

Can I check invoices from code?

Yes: the API and the command-line client with --schema fatturapa-1.2.3 or fatturapa-semplificata-1.0.2, or --schema auto for a folder of mixed invoices.

Official sources

Other countries