How FatturaPA Works
The Clearance Model
Unlike Peppol’s federated four-corner model, Italy uses a centralized clearance model. Every invoice must pass through the SDI before it is legally considered issued. The flow works as follows:
Step 1: The supplier generates a FatturaPA XML file and transmits it to the SDI. Transmission can happen via certified email (PEC), web upload, SFTP, or web services (SDICoop).
Step 2: The SDI validates the file against the XML schema and runs format-level checks (correct structure, mandatory fields present, valid codes).
Step 3: If validation passes, the SDI forwards the invoice to the recipient using the routing code (Codice Destinatario) or PEC address specified in the invoice.
Step 4: The SDI sends a delivery notification (Ricevuta di Consegna) back to the supplier confirming successful delivery. If validation fails, a rejection notification (Notifica di Scarto) is returned with error codes.
The entire cycle — from submission to delivery or rejection — typically completes within seconds to minutes, though the SDI allows up to 5 days for processing.
XML Structure
A FatturaPA XML document is divided into a header and one or more body sections:
| Section | Element | Purpose |
|---|---|---|
| Header | FatturaElettronicaHeader | Transmission data, supplier/customer details |
| Transmission | DatiTrasmissione | SDI routing info, format code (FPA12/FPR12), Codice Destinatario |
| Supplier | CedentePrestatore | Seller identification, VAT number, address |
| Customer | CessionarioCommittente | Buyer identification, fiscal code, address |
| Body | FatturaElettronicaBody | Invoice lines, totals, payment terms, attachments |
| General Data | DatiGenerali | Document type (TD01–TD29), date, number, currency |
| Line Items | DettaglioLinee | Individual line descriptions, quantities, prices, VAT rates |
| Summary | DatiRiepilogo | VAT summary per rate, total tax amounts |
| Payment | DatiPagamento | Payment method, terms, bank details (IBAN) |
Transmission Format Codes
The FormatoTrasmissione field identifies the invoice type and determines routing rules:
| Code | Target | Codice Destinatario Length |
|---|---|---|
| FPA12 | Public Administration (PA) | 6 characters (IPA office code) |
| FPR12 | Private parties (B2B/B2C) | 7 characters (SDI channel code) |
For B2B invoices where the recipient has not registered a channel code, the Codice Destinatario is set to 0000000 and the recipient’s PEC (certified email) address is used instead.
Document Type Codes
The TipoDocumento field classifies the transaction. Key codes include:
| Code | Description |
|---|---|
| TD01 | Invoice (Fattura) |
| TD04 | Credit note (Nota di credito) |
| TD05 | Debit note (Nota di debito) |
| TD06 | Fee/commission (Parcella) |
| TD16–TD19 | Reverse charge integrations |
| TD24 | Deferred invoice (Fattura differita) |
| TD29 | Irregular supplier invoice report (introduced in specs v1.9) |
Digital Signature and Transmission
FatturaPA files must be digitally signed using CAdES (.p7m) or XAdES format before submission. The file naming convention follows a strict pattern: IT + VAT number + _ + progressive number (e.g., IT01234567890_00001.xml). Each file name must be unique across all submissions — reusing a file name triggers error 00002.
Why FatturaPA Matters
The Largest E-Invoicing Market in Europe
With over 2 billion invoices processed annually, Italy’s SDI handles more e-invoice volume than any other system in the EU. The mandate covers every domestic transaction — no exemptions remain as of January 2024.
For businesses operating in Italy, there is no alternative channel. You cannot send a PDF invoice, a paper invoice, or a Peppol invoice for domestic Italian transactions. Everything goes through the SDI in FatturaPA format.
Real-Time Tax Authority Visibility
The clearance model means the Agenzia delle Entrate sees every invoice in real time. This has had measurable impact on tax compliance: Italy reported that the first year of mandatory B2B e-invoicing generated approximately €3.5 billion in additional tax revenue through reduced VAT fraud and improved compliance.
This real-time visibility model is now being studied and replicated across the EU. The European Commission’s ViDA (VAT in the Digital Age) initiative draws directly on Italy’s experience with centralized clearance.
Mandate Extended Through 2027
The European Council authorized Italy to continue operating the SDI clearance system through December 31, 2027. This gives businesses long-term certainty that FatturaPA compliance is a sustained requirement, not a temporary measure.
Why ERP Vendors Must Support FatturaPA
If your ERP or accounting software serves Italian businesses, FatturaPA support is a hard requirement. The proprietary XML schema is structurally different from UBL and CII — you cannot reuse a Peppol or EN 16931 integration. The document type codes, the Natura (VAT exemption reason) codes, and the SDI error handling all require Italy-specific implementation.
The structural approach: validate every FatturaPA invoice against the full SDI schema and business rules before submission. Catching errors before they reach the SDI prevents rejected invoices, delayed payments, and compliance gaps.
Invoice Navigator validates FatturaPA invoices against all SDI schema and business rules, catching format errors, invalid codes, and structural issues before submission to the Sistema di Interscambio.
Common FatturaPA Rejection Errors
The SDI returns specific error codes when an invoice fails validation. These are the most common rejections:
Error 00002 — Duplicate file name. Every file sent to the SDI must have a unique name across all previous submissions. The naming convention (IT + VAT number + progressive number) means your system must track the sequence. Resubmitting a corrected invoice with the same file name will be rejected.
Error 00200 — File does not conform to format. The XML does not match the FatturaPA schema. Common causes: wrong element order, missing mandatory elements, or invalid data types. The SDI checks strict schema conformance before any business-level validation.
Error 00305 — Invalid buyer VAT number (IdFiscaleIVA). The buyer’s VAT identification number does not pass format or existence checks. A frequent mistake is placing the Codice Fiscale in the IdFiscaleIVA field — these are different identifiers in Italy.
Error 00311 — Invalid Codice Destinatario. The 6-character (PA) or 7-character (B2B) routing code is not recognized. For PA invoices, verify the code against the IPA (Indice delle Pubbliche Amministrazioni) directory.
Error 00400 — Natura missing with zero VAT rate. When the VAT rate is 0%, you must specify a Natura code explaining the exemption reason (e.g., N1 for excluded transactions, N2.2 for non-subject, N4 for exempt). Omitting it is the single most common validation error for cross-border or exempt transactions.
Error 00403 — Invoice date later than receipt date. The SDI rejects invoices where the document date is in the future relative to when the SDI received the file. This catches clock synchronization issues and backdating attempts.
Error 00476 — Non-Italian country code. At least one party (supplier or buyer) must have "IT" as the country code in their tax identification. Fully foreign-to-foreign transactions do not belong in the SDI.
For the full error library with fix guidance: All validation errors →
FatturaPA vs. Other Systems
FatturaPA vs. Peppol — FatturaPA is a centralized clearance system; Peppol is a federated network. Italy uses FatturaPA/SDI domestically and is adopting Peppol for cross-border B2G and B2B. You cannot substitute one for the other for Italian domestic transactions. Compare in detail →
FatturaPA vs. Factur-X / ZUGFeRD — Factur-X embeds structured data in a PDF. FatturaPA is pure XML with no PDF component. Italy does not accept Factur-X for domestic e-invoicing — only FatturaPA XML transmitted through the SDI.
FatturaPA vs. XRechnung — Both are national implementations, but XRechnung is a CIUS of EN 16931 (based on UBL/CII), while FatturaPA uses a proprietary XML schema. XRechnung travels over Peppol; FatturaPA travels through the SDI. Structurally incompatible formats.
FatturaPA vs. France’s Factur-X/PPF — France’s upcoming system uses certified platforms (PDP) and accepts Factur-X, UBL, and CII. Italy’s system accepts only FatturaPA XML. France follows a Y-model with multiple platforms; Italy is fully centralized through a single gateway.
How to Get Started
Step 1: Understand Your Obligations
If you issue invoices to Italian businesses or consumers, you must use FatturaPA format and transmit through the SDI. This applies to all Italian VAT-registered entities regardless of size or turnover, including flat-rate regime (regime forfettario) taxpayers as of January 2024.
Step 2: Choose a Transmission Channel
You can submit invoices to the SDI through several channels:
- PEC (Posta Elettronica Certificata) — Certified email, simple but manual
- SDICoop — Web services API for automated submission
- SDIFTP — Secure FTP for batch processing
- SPCoop — For public administration connections
- Web portal — Manual upload via Fatture e Corrispettivi portal
Most businesses use an intermediary (intermediario) that handles SDI transmission on their behalf, similar to using a Peppol Access Point.
Step 3: Obtain Digital Certificates
FatturaPA files must be digitally signed. You need a qualified electronic signature certificate from an accredited Italian or EU provider. The signature can be CAdES (.p7m envelope) or XAdES (inline XML signature).
Step 4: Generate Valid FatturaPA XML
Your system must produce XML that conforms to the FatturaPA schema. Key required elements: supplier and buyer tax identifiers, document type code (TipoDocumento), VAT breakdown with Natura codes where applicable, payment information, and correct Codice Destinatario routing.
Step 5: Validate Before Submission
Run every invoice through schema and business rule validation before sending it to the SDI. This prevents rejections and the operational overhead of correcting and resubmitting failed invoices.
Validate a FatturaPA invoice now →
For API integration: Developer documentation →
For sandbox testing: Sandbox environment →
Validate Your FatturaPA Invoice
Check if your invoice passes all SDI schema and business rules before submission. Free online validator — no signup required.
Try Free Validator