Introduction
Electronic invoicing is mandatory for essentially every VAT-registered business in Italy. The Sistema di Interscambio (SDI) is the tax authority’s central hub: it validates every invoice and delivers it to the buyer. The legal invoice is the cleared FatturaPA XML file. Invopop converts your GOBL invoice into FatturaPA and transmits it over its own accredited SDICoop channel, registered with the tax authority in Invopop’s name. Nothing sits between your workspace and SDI. Companion guides: Status for what SDI reports back about an invoice, Receiving invoices, and Archiving.Setup
All of the following steps must be carried out from the Invopop Console.Connect the Italy app
- Navigate to Configuration → Apps
- Find Italy in the app discovery list
- Click Connect to activate
Configure the sending workflow
Italy send invoice workflow
- Workflow
- Code
Configure the status workflow
Italy import invoice status workflow
- Workflow
- Code
Sending invoices
Invopop uses the GOBL FatturaPA library to process conversions. When creating invoices for SDI, you need to:- Set the
regimefield toITin your GOBL invoice - Add the
it-sdi-v1addon to enable Italian-specific validations and extensions
How the send step works
The step generates the FatturaPA XML, submits it to SDI, and attaches the transmitted file to the invoice entry. It completes as soon as SDI accepts the file for processing — it does not wait for SDI to decide what happens next, so a verdict that takes days never holds your workflow open. The step returns:OKwhen SDI accepted the file. The result carries SDI’s identifier for the submission (sdi_id), which every later notification about this invoice shares.KOwhen the invoice couldn’t be converted or SDI refused the submission outright.
Invoice statuses
SDI’s verdict on an invoice arrives after the send step has finished, as a notification recorded against the invoice: delivered, rejected, undeliverable, or — for public administrations — accepted or refused by the buyer. Each notification and what it means for the invoice is covered in the Status guide.Archiving (conservazione a norma)
Italian law requires issued electronic invoices to be preserved long-term through a certified process. Add the Archive document step after the send step to preserve each invoice as you issue it. See the Archiving guide for the full setup.Testing in the sandbox
There is no public SDI test environment you can point a workflow at. In sandbox, the app plays SDI’s part itself: it accepts the file, then feeds the status notifications a real exchange would produce back through the same intake the live channel uses. Your workflow cannot tell the difference, and nothing leaves the platform.Choosing the outcome
You choose which outcome to rehearse by setting a reserved codice destinatario on the customer. In GOBL that is an inbox with the keyit-sdi-code:
it-sdi-v1 addon validates invoices against the same rules SDI applies, so an invoice that builds cleanly should only rarely be rejected live — though edge cases can still slip through.Receiving your own invoices
Send a sandbox invoice to a company you have registered for reception and the app also loops it back to you as an inbound delivery, running your import workflow exactly as a live delivery would. This is the only way to receive an invoice in sandbox, and a convenient way to exercise sending and receiving in a single run.Example invoices
B2B Invoice
B2B Invoice
- 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.
B2G Invoice
B2G Invoice
- 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 B2G transactions, and, - the invoice will be transmitted through the SDI system and delivered to the customer’s designated channel.
Stamp Duty Invoice (Marca da Bollo)
Stamp Duty Invoice (Marca da Bollo)
- the
chargesarray includes an entry with"key": "stamp-duty", amount"2.00", and reasonImposta di bollo, - the minimal version is otherwise the same as the B2B example;
gobl buildrecalculates totals including the charge, - the built version shows
totals.chargeand a higherpayable/total_with_taxthan the plain B2B invoice, - the
it-sdi-v1addon continues to validate the document for SDI transmission.
B2B Invoice with Additional Fields
B2B Invoice with Additional Fields
- 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.
VAT Exempt Invoice
VAT Exempt Invoice
- 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.
Credit Note
Credit Note
- 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.
FAQ
How do I configure my workspace for Italian invoicing?
How do I configure my workspace for Italian invoicing?
How do I issue a documento commerciale (scontrino)?
How do I issue a documento commerciale (scontrino)?
Where do I find Italy-specific GOBL documentation?
Where do I find Italy-specific GOBL documentation?
it-sdi-v1 addon documents required FatturaPA fields.Why is my invoice processing taking so long?
Why is my invoice processing taking so long?
How do I know if my invoice was delivered successfully?
How do I know if my invoice was delivered successfully?
RC (ricevuta di consegna) notification, recorded on the invoice as a status entry with the GOBL status acknowledged. A rejection arrives as NS with status error. Every notification and what it means is covered in the status guide.How do I test different SDI outcomes in the sandbox?
How do I test different SDI outcomes in the sandbox?
SIMNS00 to simulate a rejection. The sandbox simulates SDI end to end and feeds back the notifications a real exchange would produce; any ordinary code resolves to a successful delivery. The full list of reserved codes is in the issuing guide.How do I add codice fiscale and Partita IVA?
How do I add codice fiscale and Partita IVA?
- Partita IVA (VAT number): Automatically extracted from the
tax_id/codefield. - Codice Fiscale (fiscal code): Must be specified as an identity with the key
it-fiscal-code.
🇮🇹 Invopop resources for Italy
🇮🇹 Invopop resources for Italy