यह लेख वर्तमान में केवल अंग्रेज़ी में उपलब्ध है। अनुवाद जल्द आ रहा है।
Odoo Italy Localization 2026: SDI, Fattura Elettronica & IVA Setup
Italy pioneered e-invoicing in the European Union by mandating Fattura Elettronica through the Sistema di Interscambio (SDI) for B2G in 2014, B2B in 2019, and small flat-rate taxpayers in 2024. Every invoice in Italy — whether B2G, B2B, or B2C — flows through SDI, the centralized clearance platform operated by the Agenzia delle Entrate. The XML format (FatturaPA) is strictly defined, and SDI rejects any invoice that fails validation. Odoo's l10n_it_edi module provides one of the most refined SDI integrations in any ERP, reflecting Italy's role as a major Odoo market.
Key Takeaways
- Agenzia delle Entrate administers IVA (22%), IRES (24% corporate), IRAP (3.9% regional), and IRPEF
- Fattura Elettronica via SDI mandatory for all transactions since 2024 (including small flat-rate)
- Odoo
l10n_it_ediprovides FatturaPA XML generation, SDI submission, and esterometro reporting- Esterometro: cross-border invoices reported to SDI in TD17/18/19/27/28 codes since 2022
- Split payment regime applies to public sector invoices (PA pays VAT directly to tax authority)
- Reverse charge applies to specific sectors (construction, scrap metals, gold)
- Statutory reports include LIPE (quarterly VAT communication), Modello IVA (annual), 770
Italy Tax Framework Overview
Agenzia delle Entrate enforces:
- IVA: 22% standard rate; 10% reduced (food in restaurants, transport, some construction); 5% (specific medical, social services); 4% (food essentials, books); 0% on exports and intra-EU supplies
- IRES (Corporate Income Tax): 24%
- IRAP (Regional Tax on Production): 3.9% standard, varies by region (3.9% to 8.5% by sector)
- IRPEF: Progressive personal income tax (23% to 43%)
- INPS / INAIL: Social security and worker insurance contributions
Italy's anti-fraud architecture relies on SDI as a clearance layer — invoices are validated structurally before reaching the buyer. Combined with required quarterly LIPE communications and the annual Modello IVA, the regime provides strong audit visibility.
Required Odoo Localization Modules
| Module | Purpose | Edition |
|---|---|---|
l10n_it | Italy chart of accounts and IVA | Community |
l10n_it_edi | Fattura Elettronica via SDI | Enterprise (Community fork available) |
l10n_it_edi_doi | Lettera d'intento (export declarations) | Enterprise |
l10n_it_stock_ddt | DDT (transport documents) | Enterprise / Community |
l10n_it_reports | LIPE, IVA annual, intrastat | Enterprise |
account_reports | Tax report engine | Enterprise |
hr_payroll_l10n_it | INPS, IRPEF, TFR payroll | Enterprise / Custom |
Odoo Enterprise provides the most complete Italian implementation including SDI submission via certified channels (PEC email or web service). Community deployments often use OCA Italy modules (odoo-italia-associazione) for SDI submission via partner intermediaries.
Chart of Accounts Setup
Italy's chart follows the Civil Code requirements (Art. 2424-2425) plus tax-specific adaptations. The l10n_it chart provides:
- A: Crediti verso soci
- B: Immobilizzazioni
- C: Attivo circolante (including IVA a credito)
- D: Ratei e risconti attivi
- A passivo: Patrimonio netto
- B passivo: Fondi per rischi e oneri
- D passivo: Debiti (including IVA a debito, debiti tributari)
- C/E conto economico: Costi e ricavi
Configure the company record with:
- Codice Fiscale (16 char tax ID for individuals, 11 digits for companies)
- Partita IVA (11 digits, can match Codice Fiscale for companies)
- REA registration (Repertorio Economico Amministrativo)
- ATECO code (industry classification)
- PEC email (certified electronic mail for SDI alternative submission)
IVA Configuration
Configure IVA tax records with proper SDI nature codes (Natura):
| Tax Name | Rate | Type | Natura Code |
|---|---|---|---|
| IVA 22% Vendite | 22% | Sales | (no code, taxable) |
| IVA 10% Vendite | 10% | Sales | (no code, taxable) |
| IVA 5% Vendite | 5% | Sales | (no code, taxable) |
| IVA 4% Vendite | 4% | Sales | (no code, taxable) |
| Operazioni non soggette | 0% | Sales | N2.2 (other) |
| Operazioni esenti | 0% | Sales | N4 |
| Cessioni intracomunitarie | 0% | Sales | N3.2 |
| Esportazioni | 0% | Sales | N3.1 |
| Reverse charge | 22% | Sales | N6.x (sector-specific) |
| Split payment | 22% | Sales | (special handling for PA) |
Natura codes describe the reason for non-taxation in the FatturaPA. Wrong codes cause SDI rejection or buyer-side reconciliation issues.
<record id="account_tax_it_n3_2_intra_eu" model="account.tax">
<field name="name">Cessione Intracomunitaria 0% (N3.2)</field>
<field name="amount">0</field>
<field name="amount_type">percent</field>
<field name="type_tax_use">sale</field>
<field name="l10n_it_natura">N3.2</field>
<field name="l10n_it_law_reference">art. 41 DL 331/93</field>
</record>
Fattura Elettronica via SDI
The SDI workflow:
- Invoice approved in Odoo
l10n_it_edigenerates FatturaPA XML per current schema- Adds digital signature (CAdES-BES, .xml.p7m) using the company's certificate
- Submits to SDI via:
- SdI web service (preferred for high volume)
- PEC email
- SDIcoop (ftpsftp)
- SDI validates structure and partner data
- SDI delivers to buyer:
- For B2G: directly to PA's IPA inbox
- For B2B/B2C: to buyer's SDI inbox (Codice Destinatario or PEC)
- Buyer's response (acceptance/rejection) flows back to seller
Required FatturaPA fields:
- Codice Destinatario (7 chars for B2B/B2C, 6 chars for B2G)
- Tipo Documento (TD01 invoice, TD04 credit note, TD17/18/19 cross-border self-billed/intra/extra)
- Cedente (seller) and Cessionario (buyer) details
- Line items with TipoDato fields, plus relevant Natura codes
- IVA breakdown per rate
Esterometro (Cross-Border)
Since 2022, cross-border transactions (with foreign suppliers/customers) must be reported to SDI using specific document types:
- TD17: Self-billed invoice for purchases of services from non-residents
- TD18: Intra-EU acquisitions of goods
- TD19: Extra-EU import where IVA is settled via reverse charge
- TD27: Self-billing for inventory withdrawals
- TD28: Self-billing for cost adjustments
The seller (Italian buyer in this case) issues a self-bill to themselves through SDI. This replaced the legacy esterometro batch quarterly file from 2022 onward.
Split Payment
For invoices to public administration (PA) entities, split payment applies — the PA pays the supplier the net (excluding VAT) and pays the VAT directly to the tax authority. The supplier's invoice still shows VAT but the supplier doesn't receive it.
Configure split payment as a special tax flag in Odoo. The FatturaPA includes the EsigibilitaIVA="S" attribute for split payment lines.
Reverse Charge Sectors
Specific sectors apply reverse charge under domestic Italian rules:
- Construction services (sub-contractor relationships)
- Scrap metals
- Gold and other precious metals
- Mobile phones, integrated circuits (specific cases)
- Cleaning, demolition
The supplier issues an invoice without VAT (Natura N6.x); the buyer self-charges VAT through their own books.
LIPE - Quarterly VAT Communication
LIPE (Liquidazioni Periodiche IVA) is a quarterly digital communication submitted to Agenzia delle Entrate by the end of the second month following the quarter. It reports the IVA position (collected, deducted, balance) for each month of the quarter.
Odoo's l10n_it_reports generates LIPE in the prescribed XML format.
Payroll Considerations
Italian payroll is highly regulated by national contracts (Contratti Collettivi Nazionali di Lavoro, CCNL):
| Item | Employee | Employer | Notes |
|---|---|---|---|
| INPS Pension Contribution | ~9.19% | ~23.81% | Variable by sector |
| INAIL (Workers' Insurance) | N/A | Variable (0.4%-13%) | By risk category |
| IRPEF | Per progressive scale | N/A | Withheld monthly |
| Addizionale Regionale/Comunale | Per region/municipality | N/A | Annual, settled via withholding |
| TFR (Trattamento di Fine Rapporto) | N/A | ~6.91% accrual | End-of-service indemnity |
TFR is a substantial liability accrued at ~6.91% of annual salary (or transferred monthly to a pension fund). Odoo must accrue TFR per employee per month against a long-term liability account.
Reporting Requirements
An Italian Odoo deployment must produce:
- LIPE: Quarterly IVA communication
- Modello IVA Annuale: Annual VAT return (by April 30)
- Esterometro / TD17-19: Real-time per cross-border transaction
- Intrastat: Monthly (or quarterly) for intra-EU goods/services
- Modello 770: Annual tax withholding declaration
- Modello Redditi: Annual income tax return
- Bilancio: Annual statutory financial statements (XBRL filed with chamber of commerce)
Implementation Checklist
- Confirm Codice Fiscale, Partita IVA, REA, ATECO, PEC
- Procure digital signature certificate for SDI
- Install
l10n_itandl10n_it_edi; configure SDI submission method - Verify chart of accounts; map IVA control accounts
- Configure IVA rates with proper Natura codes for non-taxable scenarios
- Set up TD17/18/19/27/28 workflows for cross-border
- Configure split payment flag for PA invoices
- Configure reverse charge for relevant sectors
- Test SDI submission in test environment
- Build LIPE and Modello IVA exports per Agenzia delle Entrate format
Common Pitfalls
Wrong Natura code: SDI strictly validates Natura codes. N1 is now obsolete (split into N1.1, N1.2, etc. since 2021). Using legacy codes causes rejection.
Codice Destinatario errors: B2B buyers provide either Codice Destinatario (7 chars) or PEC email. Hard-coding "0000000" without registering on SDI causes invoice loss.
Missing TD17/18/19 for cross-border: Foreign supplier invoices must be reported as self-bills. Skipping triggers Agenzia audit adjustments.
Split payment misapplication: Not all PA invoices are split payment; some PAs are excluded. Verify per buyer.
TFR under-accrual: TFR liability grows substantially. Failing to accrue monthly creates surprise expenses on staff departures.
ECOSIRE provides Odoo localization for Italy, including SDI integration, esterometro automation, and TFR-compliant payroll. Contact us for implementation or explore our accounting services.
Frequently Asked Questions
Does Odoo Community support SDI?
Native l10n_it_edi is in Odoo Enterprise. Community deployments typically use OCA Italy modules (odoo-italia-associazione's l10n_it_fatturapa and related modules). Both approaches are mature and production-tested. Choice depends on overall Odoo licensing strategy.
What's the difference between TD01 and TD17?
TD01 is a standard outbound invoice (you to your customer). TD17 is a self-bill for purchases of services from non-residents — you issue an invoice to yourself, reporting the foreign vendor's services through SDI. TD18 is for EU goods acquisitions, TD19 for non-EU imports where IVA is reverse-charged.
How do we handle B2C with no Codice Destinatario?
For B2C and B2B without explicit Codice Destinatario, use "0000000" (seven zeros) and the buyer's Codice Fiscale or Partita IVA. SDI delivers to the buyer's SDI inbox if registered, otherwise just stores the invoice for the buyer to retrieve via the Agenzia portal.
Are flat-rate taxpayers (Regime Forfettario) required to use SDI?
Yes, since 2024 (extended after multiple delays). Forfettari must issue Fattura Elettronica through SDI just like ordinary taxpayers. The XML differs slightly (no IVA, with specific Natura code N2.2 for "operazioni non soggette per regime forfettario"). Configure a separate fiscal position.
Can we batch-submit invoices to SDI?
SDI supports batch submission through the web service. Odoo's l10n_it_edi typically submits per invoice as they're approved, but high-volume scenarios can implement queued batch submission. PEC email submission is one-at-a-time and not suitable for high-volume.
लेखक
ECOSIRE TeamTechnical Writing
The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.
ECOSIRE
Odoo ERP के साथ अपना व्यवसाय बदलें
आपके संचालन को सुव्यवस्थित करने के लिए विशेषज्ञ ओडू कार्यान्वयन, अनुकूलन और समर्थन।
संबंधित लेख
How to Add a Custom Button to an Odoo Form View (2026)
Add custom action buttons to Odoo 19 form views: Python action method, view inheritance, conditional visibility, confirmation dialogs. Production-tested.
How to Add a Custom Field in Odoo Without Studio (2026)
Add custom fields via custom module in Odoo 19: model inheritance, view extension, computed fields, store/non-store decisions. Code-first, version-controlled.
How to Add a Custom Report in Odoo Using External Layout
Build a branded PDF report in Odoo 19 using web.external_layout: QWeb template, paperformat, action binding. With print logo + footer overrides.