- Description
- Actions
- Workflows
- Documents
The SDI (Sistema di Interscambio) is Italy’s central hub for transmitting, validating, and delivering all electronic invoices throughout the country. It is managed by the Italian tax authority (Agenzia delle Entrate).Electronic invoicing is mandatory for all businesses in Italy. The SDI system operates using a standardized XML format called FatturaPA, which ensures all invoices contain the required information and comply with the strict validation rules established by the Italian tax authority.Invopop simplifies SDI integration by allowing you to work with GOBL format instead of XML, providing synchronous validation before submission, and offering a simple API integration with automatic handling of SDI notifications and status updates. Invopop has partnered with A-Cube to provide SDI integration services.Key Features
- Workflow Automation: This app provides automated workflows for sending and receiving invoices through the SDI system.
- FatturaPA XML Generation: Automatically converts GOBL documents into compliant FatturaPA XML format.
- Real-Time Status Updates: Automatically handles SDI notifications and status updates, including delivery confirmations and acceptance/rejection notifications.
- Bidirectional Support: Send invoices to SDI and receive invoices from suppliers through the same app.
- Customer Registration: Register companies to receive invoices through SDI with a simple workflow step.
- GOBL FatturaPA Integration: Uses the open-source GOBL FatturaPA library for conversions.
The following workflow actions will be available once you install and enable this app:
3
Issue GOBL invoices in the Italian SDI using the FatturaPA format.

3
Import invoices from the Italian SDI using the FatturaPA format.
Send FatturaPA to SDI (Italy)
Register party with SDI (Italy)
Register a GOBL party to receive invoices to the Italian SDI.
Import FatturaPA from SDI (Italy)
The following workflows are available to make your integration easier. Use them as templates to build upon.
SDI Italy send invoice workflow
SDI Italy send invoice workflow
This workflow automates FatturaPA invoice generation and submission to SDI.Add to my workspace →
Example SDI send invoice workflow with states
Copy
Ask AI
{
"name": "SDI send invoice",
"description": "Generate and issue an invoice through SDI",
"schema": "bill/invoice",
"steps": [
{
"id": "1a692ae0-cd12-11ef-998c-e97f18c9212e",
"name": "Set State",
"provider": "silo.state",
"summary": "Set state to `processing`{.state .processing}",
"config": {
"state": "processing"
}
},
{
"id": "1855b430-cd12-11ef-998c-e97f18c9212e",
"name": "Sign Envelope",
"provider": "silo.close"
},
{
"id": "2042f860-cd12-11ef-998c-e97f18c9212e",
"name": "Send to SDI (Italy)",
"provider": "sdi-it.send",
"summary": "Sandbox · Accepted by PA (Notifica esito)",
"config": {
"environment": "sandbox",
"response": "NE"
}
},
{
"id": "236965b0-cd12-11ef-998c-e97f18c9212e",
"name": "Generate PDF",
"provider": "pdf",
"summary": "Italian",
"config": {
"date_format": "%Y-%m-%d",
"locale": "it",
"logo_height": 40
}
},
{
"id": "2b6db450-cd12-11ef-998c-e97f18c9212e",
"name": "Set State",
"provider": "silo.state",
"summary": "Set state to `sent`{.state .sent}",
"config": {
"state": "sent"
}
}
],
"rescue": [
{
"id": "2d5d7660-cd12-11ef-998c-e97f18c9212e",
"name": "Set State",
"provider": "silo.state",
"summary": "Set state to `error`{.state .error}",
"config": {
"state": "error"
}
}
]
}
SDI Italy register customer workflow
SDI Italy register customer workflow
This workflow registers a company to receive invoices through SDI.Add to my workspace →
Example SDI supplier registration workflow with states
Copy
Ask AI
{
"name": "SDI register customer",
"description": "Register a company to receive invoices through SDI",
"schema": "org/party",
"steps": [
{
"id": "2a34f560-fd13-11ef-998c-e97f18c9212e",
"name": "Set State",
"provider": "silo.state",
"summary": "Set state to `processing`{.state .processing}",
"config": {
"state": "processing"
}
},
{
"id": "3b5c7890-fd13-11ef-998c-e97f18c9212e",
"name": "Register SDI Customer (Italy)",
"provider": "sdi-it.register",
"summary": "Register company as receiver",
"config": {
"environment": "production"
}
},
{
"id": "4c6d8910-fd13-11ef-998c-e97f18c9212e",
"name": "Set State",
"provider": "silo.state",
"summary": "Set state to `registered`{.state .registered}",
"config": {
"state": "registered"
}
}
],
"rescue": [
{
"id": "5d7e9a20-fd13-11ef-998c-e97f18c9212e",
"name": "Set State",
"provider": "silo.state",
"summary": "Set state to `error`{.state .error}",
"config": {
"state": "error"
}
}
]
}
SDI Italy import invoices workflow
SDI Italy import invoices workflow
This workflow imports and processes invoices received through SDI.Add to my workspace →
Example SDI import invoice workflow with states
Copy
Ask AI
{
"name": "Import SDI Invoices",
"description": "Import and process invoices received through SDI",
"schema": "bill/invoice",
"steps": [
{
"id": "6e8f0b30-fd13-11ef-998c-e97f18c9212e",
"name": "Import from SDI (Italy)",
"provider": "sdi-it.import",
"summary": "Convert received FatturaPA to GOBL",
"config": {
"environment": "production"
}
},
{
"id": "7f9a1c40-fd13-11ef-998c-e97f18c9212e",
"name": "Generate PDF",
"provider": "pdf",
"summary": "Italian",
"config": {
"date_format": "%Y-%m-%d",
"locale": "it",
"logo_height": 40
}
},
{
"id": "8a0b2d50-fd13-11ef-998c-e97f18c9212e",
"name": "Set State",
"provider": "silo.state",
"summary": "Set state to `sent`{.state .sent}",
"config": {
"state": "sent"
}
}
],
"rescue": [
{
"id": "9b1c3e60-fd13-11ef-998c-e97f18c9212e",
"name": "Set State",
"provider": "silo.state",
"summary": "Set state to `error`{.state .error}",
"config": {
"state": "error"
}
}
]
}
B2C Standard Invoice
B2C Standard Invoice
In this example, we’re issuing a standard B2C invoice from an Italian supplier to a consumer.Notice:
- the minimal version (
sdi-b2c.min.mdx) contains only the essential fields required to create the invoice, - the
it-sdi-v1addon ensures the document will be validated using the SDI (Sistema di Interscambio) rules built into the GOBL library, - customer details may be simplified for B2C transactions as per Italian requirements,
- there are no totals or calculations in the minimal version; all these will be calculated automatically when running
gobl build, - the built version (
sdi-b2c.mdx) shows the normalized document with calculated totals, line item sums, IVA (VAT) breakdowns, and automatically generated fields, and, - make sure to process it with the SDI workflow to transmit the invoice to the Italian tax authority.
Copy
Ask AI
{
"$schema": "https://gobl.org/draft-0/bill/invoice",
"$regime": "IT",
"$addons": [
"it-sdi-v1"
],
"series": "FT",
"code": "020",
"issue_date": "2024-07-12",
"currency": "EUR",
"tax": {
"prices_include": "VAT"
},
"supplier": {
"name": "Company Name S.r.l.",
"tax_id": {
"country": "IT",
"code": "12345678903"
},
"addresses": [
{
"num": "102",
"street": "Via California",
"locality": "Palermo",
"region": "PA",
"code": "33213",
"country": "IT"
}
],
"registration": {
"capital": "50000.00",
"currency": "EUR",
"office": "RM",
"entry": "123456"
},
"ext": {
"it-sdi-fiscal-regime": "RF01"
}
},
"customer": {
"name": "Customer Name S.r.l.",
"tax_id": {
"country": "IT"
},
"identities": [
{
"key": "it-fiscal-code",
"code": "RSSGNN60R30H501U"
}
],
"addresses": [
{
"num": "23",
"street": "Via dei Mille",
"locality": "Firenze",
"region": "FI",
"code": "00100",
"country": "IT"
}
]
},
"lines": [
{
"quantity": "1",
"item": {
"name": "Cleaning services",
"price": "125.00"
},
"taxes": [
{
"cat": "VAT",
"rate": "standard"
}
]
}
]
}
B2B Invoice
B2B Invoice
In this example, we’re issuing a standard B2B invoice from an Italian supplier to another Italian business customer.Notice:
- both supplier and customer have their Partita IVA (VAT number) and Codice Fiscale properly specified,
- the minimal version contains only essential fields;
gobl buildhandles all calculations, - when running
gobl build, the system automatically calculates totals, applies IVA rates, and normalizes the document according to SDI requirements, - the built version shows all calculated fields including tax breakdowns, line totals, payment terms, and final amounts,
- the
it-sdi-v1addon validates the document structure for B2B transactions, and, - the invoice will be transmitted through the SDI system and delivered to the customer’s designated channel.
Copy
Ask AI
{
"$schema": "https://gobl.org/draft-0/bill/invoice",
"$regime": "IT",
"$addons": [
"it-sdi-v1"
],
"series": "SAMPLE",
"code": "002",
"issue_date": "2023-05-21",
"currency": "EUR",
"tax": {
"prices_include": "VAT"
},
"supplier": {
"name": "Hotel California",
"tax_id": {
"country": "IT",
"code": "12345678903"
},
"addresses": [
{
"num": "102",
"street": "Via California",
"locality": "Palermo",
"region": "PA",
"code": "33213",
"country": "IT"
}
],
"registration": {
"capital": "50000.00",
"currency": "EUR",
"office": "RM",
"entry": "123456"
},
"ext": {
"it-sdi-fiscal-regime": "RF01"
}
},
"customer": {
"name": "Mela S.r.l.",
"tax_id": {
"country": "IT",
"code": "13029381004"
},
"inboxes": [
{
"key": "it-sdi-code",
"code": "M5UXCR5"
}
],
"addresses": [
{
"num": "23",
"street": "Via dei Mille",
"locality": "Firenze",
"region": "FI",
"code": "00100",
"country": "IT"
}
]
},
"lines": [
{
"quantity": "1",
"item": {
"name": "Tassa di Soggiorno",
"price": "1.00"
},
"taxes": [
{
"cat": "VAT",
"rate": "exempt",
"ext": {
"it-sdi-exempt": "N4"
}
}
]
},
{
"quantity": "1",
"item": {
"name": "Camera Matrimoniale",
"price": "125.00"
},
"taxes": [
{
"cat": "VAT",
"rate": "intermediate"
}
]
}
]
}
B2B Invoice with Additional Fields
B2B Invoice with Additional Fields
In this example, we’re issuing a comprehensive B2B invoice with additional optional fields such as ordering information, payment details, and document references.Notice:
- this invoice demonstrates advanced SDI features like CIG/CUP codes, payment methods, and bank details,
- the minimal version includes ordering and payment details;
gobl buildcalculates all totals, - when running
gobl build, the system validates all additional fields according to SDI specifications and calculates totals, - the built version shows the complete document with all calculated fields, tax breakdowns, and properly formatted additional information,
- additional fields like
ordering,payment, and document references are important for public administration invoices (B2G), and, - the addon ensures all optional fields are properly validated and formatted for SDI transmission.
Copy
Ask AI
{
"$schema": "https://gobl.org/draft-0/bill/invoice",
"$regime": "IT",
"$addons": [
"it-sdi-v1"
],
"$tags": [
"freelance"
],
"series": "SAMPLE",
"code": "001",
"issue_date": "2023-03-02",
"currency": "EUR",
"supplier": {
"name": "MªF. Services",
"tax_id": {
"country": "IT",
"code": "12345678903"
},
"people": [
{
"name": {
"given": "GIANCARLO",
"surname": "ROSSI"
}
}
],
"addresses": [
{
"num": "1",
"street": "VIALE DELLA LIBERTÀ",
"locality": "ROMA",
"region": "RM",
"code": "00100",
"country": "IT"
}
],
"emails": [
{
"addr": "billing@example.com"
}
],
"telephones": [
{
"num": "999999999"
}
],
"registration": {
"capital": "50000.00",
"currency": "EUR",
"office": "RM",
"entry": "123456"
},
"ext": {
"it-sdi-fiscal-regime": "RF02"
}
},
"customer": {
"name": "MARIO LEONI",
"tax_id": {
"country": "IT",
"code": "09876543217"
},
"people": [
{
"name": {
"prefix": "Dott.",
"given": "MARIO",
"surname": "LEONI"
}
}
],
"inboxes": [
{
"key": "it-sdi-code",
"code": "M5UXCR5"
}
],
"addresses": [
{
"num": "1",
"street": "VIALE DELI LAVORATORI",
"locality": "ROMA",
"region": "RM",
"code": "00100",
"country": "IT"
}
],
"emails": [
{
"addr": "mario@example.com"
}
]
},
"lines": [
{
"quantity": "20",
"item": {
"name": "Development of accounting software",
"price": "10.00",
"unit": "h"
},
"taxes": [
{
"cat": "VAT",
"rate": "standard"
}
]
}
],
"payment": {
"instructions": {
"key": "credit-transfer",
"credit_transfer": [
{
"iban": "IT60X0542811101000000123456",
"name": "MªF. Services"
}
]
},
"terms": {
"due_dates": [
{
"date": "2023-09-01",
"percent": "100%"
}
]
}
}
}
VAT Exempt Invoice
VAT Exempt Invoice
In this example, we’re issuing an invoice for goods or services that are exempt from VAT (IVA).Notice:
- the line item includes a tax with
"key": "exempt"indicating this is a VAT-exempt transaction, - the minimal version omits the exemption code extension (
it-sdi-exempt), which will be automatically added duringgobl build, - when running
gobl build, the system calculates totals with zero VAT and validates the exemption structure, - the built version shows the complete document with the exemption code extension (e.g.,
"it-sdi-exempt": "N4") applied to the tax rate, - exemption codes must comply with SDI requirements—consult the complete list of exemption reasons in the GOBL documentation,
- common exemption codes include N4 (exempt), N3.1 (exports), N3.2 (intra-community supplies), and N6.x (reverse charge scenarios), and,
- the SDI validates that exempt invoices include proper exemption codes before transmission.
Copy
Ask AI
{
"$schema": "https://gobl.org/draft-0/bill/invoice",
"$regime": "IT",
"$addons": [
"it-sdi-v1"
],
"code": "INVOICE-001",
"supplier": {
"name": "Example IT Supplier S.r.l.",
"tax_id": {
"country": "IT",
"code": "12345678903"
},
"addresses": [
{
"street": "Via Roma, 123",
"locality": "Milan",
"code": "20121",
"country": "IT"
}
],
"emails": [
{
"addr": "info@supplier.it"
}
]
},
"customer": {
"name": "Example IT Customer S.p.A.",
"tax_id": {
"country": "IT",
"code": "13029381004"
},
"addresses": [
{
"street": "Via Dante, 456",
"locality": "Rome",
"code": "00100",
"country": "IT"
}
]
},
"lines": [
{
"quantity": "10",
"item": {
"name": "Tax Exempt Service",
"price": "100.00"
},
"taxes": [
{
"cat": "VAT",
"key": "exempt"
}
]
}
]
}
Credit Note
Credit Note
In this example, we’re issuing a credit note (nota di credito) to correct or refund a previously issued invoice.Notice:
- the
typefield is set tocredit-noteto indicate this is a corrective document, - the
precedingfield references the original invoice being corrected, - the minimal version contains only essential correction details;
gobl buildcalculates negative amounts, - when running
gobl build, the system automatically calculates negative totals, IVA refunds, validates the credit note structure, and applies SDI rules, - the built version shows all calculated fields including negative amounts for the refund and proper tax adjustments,
- credit notes must be properly linked to the original invoice and transmitted through SDI, and,
- the SDI system validates the credit note format before accepting and forwarding it to the recipient.
Copy
Ask AI
{
"$schema": "https://gobl.org/draft-0/bill/invoice",
"$regime": "IT",
"$addons": [
"it-sdi-v1"
],
"$tags": [
"freelance"
],
"type": "credit-note",
"series": "CN",
"code": "001",
"issue_date": "2024-10-09",
"currency": "EUR",
"preceding": [
{
"uuid": "0190c0ec-8109-756b-a4f0-88c4b542ab6e",
"type": "standard",
"issue_date": "2023-03-02",
"series": "SAMPLE",
"code": "001"
}
],
"supplier": {
"name": "MªF. Services",
"tax_id": {
"country": "IT",
"code": "12345678903"
},
"people": [
{
"name": {
"given": "GIANCARLO",
"surname": "ROSSI"
}
}
],
"addresses": [
{
"num": "1",
"street": "VIALE DELLA LIBERTÀ",
"locality": "ROMA",
"region": "RM",
"code": "00100",
"country": "IT"
}
],
"registration": {
"capital": "50000.00",
"currency": "EUR",
"office": "RM",
"entry": "123456"
},
"ext": {
"it-sdi-fiscal-regime": "RF02"
}
},
"customer": {
"name": "MARIO LEONI",
"tax_id": {
"country": "IT",
"code": "09876543217"
},
"people": [
{
"name": {
"prefix": "Dott.",
"given": "MARIO",
"surname": "LEONI"
}
}
],
"inboxes": [
{
"key": "it-sdi-code",
"code": "M5UXCR5"
}
],
"addresses": [
{
"num": "1",
"street": "VIALE DELI LAVORATORI",
"locality": "ROMA",
"region": "RM",
"code": "00100",
"country": "IT"
}
],
"emails": [
{
"addr": "mario@example.com"
}
]
},
"lines": [
{
"quantity": "20",
"item": {
"name": "Development of accounting software",
"price": "10.00",
"unit": "h"
},
"taxes": [
{
"cat": "VAT",
"rate": "standard"
}
]
}
],
"payment": {
"instructions": {
"key": "credit-transfer",
"credit_transfer": [
{
"iban": "IT60X0542811101000000123456",
"name": "MªF. Services"
}
]
}
}
}
🇮🇹 Invopop resources for Italy
🇮🇹 Invopop resources for Italy
Participate in our community
Ask and answer questions about SDI Italy App →