Invopopโs Smart Receipts provider allows you to generate and issue electronic tickets (documento commerciale/scontrino elettronico) in Italy.The documento commerciale is a digital fiscal document that records sales transactions and transmits them to the Agenzia delle Entrate (AdE). This digital receipt replaces traditional paper receipts while maintaining full fiscal compliance and serves as official proof of purchase for your customers.Italian law requires businesses to transmit sales data digitally through either a certified Registratore Telematico (RT) or the AdEโs online portal. Smart Receipts streamlines this process by providing a secure interface to relay your sales data to the AdE through a local provider.Important distinctions for the Documento Commerciale:
It is not an invoice (fattura) - invoices require detailed buyer information and follow different tax rules.
It does not replace transport documents (documento di trasporto).
It is not a simple internal receipt - it serves an official fiscal function requiring AdE transmission.
It must include VAT at the time of sale - deferred VAT payment is not permitted.
The AdE portal provides functionality to create tickets, void them entirely, and process refunds at the item level. Invopopโs Smart Receipts implementation supports all these operations, allowing you to manage your electronic tickets programmatically through our API or manually via the Console.The AdE portal provides functionality to create tickets, void them entirely, and process refunds at the item level. Invopopโs Smart Receipts implementation supports all these operations, allowing you to manage your electronic tickets programmatically through our API or manually via the Console.
These instructions work in both sandbox and live environments. The only differences are in supplier data and registration details when using test environments.
Before starting, review the workflows guide to understand the general setup process.In Console, create a new workflow and choose Empty Party workflow as the base. Then name the workflow with a descriptive label such as โSmart Receipt Post-registrationโ.This worfkow is composed by a single step:
Set State - To Registered.
Though you can customize it to suit your needs (adding a webhook, or an email notification after a supplier has been registered.)
2
Connect the Italian Smart Receipts app
Navigate to Configuration โ Apps.
Find Italian Smart Receipts in the app discovery list.
Click Connect to activate.
Click the Configure button on the app, and choose the โPost-registration workflowโ we created in the previous step.Click the Save button.
3
Configure the supplier registration workflow
Template
Code
Build from scratch
Smart receipts supplier registration workflow
This workflow will issue a registration request for a supplier to complete in order to issue receipts through SDI.
Before starting, review the workflows guide to understand the general setup process.In Console, create a new workflow and choose Empty Party workflow as the base. Then name the workflow with a descriptive label such as โSDI Register Supplierโ.The new workflow will need to perform three steps:
Sign the Envelope
Register the Issuer
Set State - with configuration set to processing.
Add any additional steps you may need, and save the new workflow.
4
Prepare Invoice Workflow
Template
Code
Build from scratch
Smart Receipts issue receipt workflow
This workflow will issue a Smart Receipt through Italyโs AdE.
Before starting, review the workflows guide to understand the general setup process.In Console, create a new workflow and choose Empty Invoice workflow as the base. Then name the workflow with a descriptive label such as โIssue Italian Smart Receiptsโ.The new workflow will need to perform three steps:
Add Sequential Code - with dynamic sequences, and name like โItalian Smart Receiptsโ.
Send a receipt to AdE.
Generate PDF - configured for your environment.
Set State - to sent.
Finally, in the Error Handling area, add the Set State action and select Error.Add any additional steps you may need, and save the new workflow.
5
Prepare Void Workflow
Template
Code
Build from scratch
Smart Receipts void receipt workflow
This workflow will void Smart Receipts from the AdE.
Example Smart Receipts void receipt workflow with states
{ "name": "Smart Receipts void receipt", "description": "Voids an Italian 'documento commerciale'", "schema": "bill/invoice", "steps": [ { "id": "02a62be0-2b2e-11f0-984e-0542d5f28f0b", "name": "Void a receipt in AdE", "provider": "ticket-it.void" }, { "id": "1583e220-2b2e-11f0-984e-0542d5f28f0b", "name": "Set State", "provider": "silo.state", "summary": "Set state to `void`{.state .void}", "config": { "state": "void" } } ], "rescue": [ { "id": "25c98860-2b2e-11f0-984e-0542d5f28f0b", "name": "Set State", "provider": "silo.state", "summary": "Set state to `error`{.state .error}", "config": { "state": "error" } } ]}
Before starting, review the workflows guide to understand the general setup process.In Console, create a new workflow and choose Empty Invoice workflow as the base. Then name the workflow with a descriptive label such as โVoid Italian Smart Receiptsโ.The new workflow will need to perform three steps:
Void a receipt in AdE.
Set State - to sent.
Finally, in the Error Handling area, add the Set State action and select Error.Add any additional steps you may need, and save the new workflow.
Each company who will issue e-receipts must first register as a supplier in Invopop. In this section weโll first explain how to register a supplier using the registration workflow we setup, and then how to issue and void invoices on behalf of that supplier, with the corresponding workflows.As usual, the recommended approach for running jobs is to perform two steps; first upload the document to the silo, second create a job.
You can register suppliers either manually via the Invopop Console or programmatically via the API. The process is essentially the same, so for this guide weโll demonstrate the manual process.
Suppliers in Italy using this system must generate and provide their AdE
credentials so that invoices can be processed on their behalf. This is not an automated service and can only be
performed manually by a representative of the supplier.
Navigate to Contacts โ Suppliers in the sidebar
Click + New Supplier
In the editor, enter the supplier details
Hereโs an example using test data (only valid for sandbox environments):
You may notice that we included the Italian fiscal code in the supplier, this is not necessary at the moment but will be asked for, if not provided, during the registration process.
Tap Build, ensure there are no errors, and click Save.We should now see the document. Find and click the Select Workflow button. Select the Register Supplier workflow created during setup, and click Run Workflow.The execution should be successful, and the silo entry will now be in the Processing state. Tap the Meta tab to see the registration link:
You can access the registration link via the API by fetching the silo
entry and reading the meta row where
the key is set to registration-link.
Tap the registration link and a new browser window will be presented with a form to upload the credentials for the supplier. Note that this form can be shared directly with the supplier if required.
The details from this form are sent securely to local partner who will be responsible for sending them to the AdE.
We will update the supplier with the provided codice fiscale for future use but will not store any type of credentials.
These credentials will expire every 90 days. You must first update your credentials on the official AdE web portal, then enter these new credentials in our registration form. You can use the same registration link to update your credentials.
Use these GOBL document examples as templates in the Invopop Console or when creating silo entries via the API.For proper validation and normalization, set these properties in your GOBL Invoices:
While Invopop attempts to set these automatically based on other invoice fields, we recommend defining them explicitly.The example below shows a simple B2C invoice from an Italian supplier. Key points to note:
The it-ticket-v1 addon ensures validation using AdE CF V1 rules
Extensions (ext) fields specify values that cannot be determined otherwise:
Items have an extension identifying them as goods or services
VAT exemptions require an Italian exemption code
The prices_include field indicates that item prices include VAT
VAT for โCleaning Productsโ automatically sets to the standard rate
Totals and calculations are generated automatically
The AdE will automatically generate a document number for the invoice. Once the invoice is sent, you will find the document number in a stamp inside the document header.
After the AdE accepts the invoice, they add a reference to each line item. This reference, stored in the it-ticket-line-ref extension, is essential for processing refunds. The example below shows a complete invoice with these references.
When a customer requests a refund for specific items, you can process it by issuing a corrective invoice. Since this is still considered sending an invoice, you can use the same workflow as before.To create a corrective invoice take a original GOBL Invoice and:
Set the type field to corrective
Add a reference to the original invoice using the preceeding object
Include the original document number stamp from the first invoice
Keep the lines and quantities you want to refund
The example below shows a corrective invoice that refunds two units of โCleaning Productsโ from the original invoice. The corrective invoice:
Preserves the it-ticket-line-ref extension from the original invoice
References the original invoice using the preceeding object
Maintains the same line item references for accurate tracking
Please contact the Invopop support team if you have any questions that are not listed here.
Is this a substitute for SDI?
AdE CF is not a substitute for SDI. Invopop works with SDI to issue electronic invoices using the FatturaPA and is the main tool available to issue electronic invoices in Italy. AdE CF should only be used when customer information is not available, like in online B2C scenarios.
How do I correct mistakes in an issued AdE CF invoice?
You cannot modify an AdE CF invoice after issuing it. Instead you must:
Void the incorrect invoice using the โVoid AdE CF Invoicesโ workflow
Issue a new invoice with the correct information
Do I still need to add a series and code to the invoice?
We recommend adding a series and code to the invoice so that you can keep track internally even though the AdE will generate a document number.