> ## Documentation Index
> Fetch the complete documentation index at: https://docs.invopop.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Italy receiving invoices guide

> Receive and process electronic invoices from Italy's SDI system.

export const itImportInvoiceWorkflow = {
  "name": "Import invoice from SDI",
  "description": "Import and process an invoice received through SDI",
  "schema": "bill/invoice",
  "steps": [{
    "id": "33946e58-a094-4e9d-bef7-51e8ac1974fe",
    "name": "Import invoice from SDI",
    "provider": "gov-it.sdi.import.invoice",
    "summary": "Convert the received FatturaPA document to GOBL"
  }],
  "rescue": []
};

export const itUnregisterPartyWorkflow = {
  "name": "Unregister party from SDI",
  "description": "Stop a company receiving invoices through SDI",
  "schema": "org/party",
  "steps": [{
    "id": "0598fbd0-7ab4-11f1-8f97-792526fe02d9",
    "name": "Unregister party from SDI",
    "provider": "gov-it.sdi.unregister",
    "summary": "Stop receiving and release the fiscal ID"
  }],
  "rescue": []
};

export const itRegisterPartyWorkflow = {
  "name": "Register party with SDI",
  "description": "Register a company to receive invoices and enable archiving",
  "schema": "org/party",
  "steps": [{
    "id": "d0a624c0-7ab3-11f1-bcdd-79d761bdaace",
    "name": "Register party with SDI",
    "provider": "gov-it.sdi.register",
    "summary": "Claim the company's fiscal ID for this workspace"
  }, {
    "id": "f19737f0-7ab3-11f1-bcdd-79d761bdaace",
    "name": "Register party for e-archiving",
    "provider": "gov-it.archive.register",
    "summary": "Enable certified preservation for this company"
  }],
  "rescue": []
};

export const WorkflowDiagram = ({workflow}) => {
  const stateColors = {
    processing: "yellow",
    sent: "blue",
    received: "blue",
    registered: "green",
    completed: "green",
    error: "red"
  };
  const StateChip = ({state, label}) => <Badge size="sm" color={stateColors[state] || "gray"} icon="square-small" iconType="solid">
      {label.charAt(0).toUpperCase() + label.slice(1)}
    </Badge>;
  const providerIcons = {
    "silo.state": "https://silo.invopop.com/images/status.svg",
    "silo.close": "https://silo.invopop.com/images/check-badge.svg",
    "silo.if": "https://assets.invopop.com/apps/silo/if.svg",
    "silo.folder": "https://silo.invopop.com/images/folder.svg",
    "silo.modify": "https://silo.invopop.com/images/modify.svg",
    "silo.correct": "https://silo.invopop.com/images/replace.svg",
    "silo.sleep": "https://assets.invopop.com/icons/sleep.svg",
    silo: "https://assets.invopop.com/apps/silo/icon.svg",
    "sequence.enumerate": "https://sequence.invopop.com/images/enumerate.svg",
    "transform.job.create": "https://transform.invopop.com/images/jobs.svg",
    webhook: "https://webhook.invopop.com/icon.svg",
    lookup: "https://lookup.invopop.com/icon.png",
    dropbox: "https://dropbox.invopop.com/icon.png",
    pdf: "https://pdf.invopop.com/file-pdf.svg",
    peppol: "https://assets.invopop.com/apps/peppol/icon.svg",
    ubl: "https://assets.invopop.com/apps/ubl/logo.svg",
    cii: "https://assets.invopop.com/apps/cii/logo.svg",
    "gov-dk": "https://assets.invopop.com/flags/dk.svg",
    "gov-fi": "https://assets.invopop.com/flags/fi.svg",
    "gov-fr": "https://assets.invopop.com/flags/fr.svg",
    "chorus-pro": "https://assets.invopop.com/apps/chroruspro/icon.svg",
    "gov-es": "https://assets.invopop.com/apps/gov-es/icon.svg",
    "gov-es.sii": "https://assets.invopop.com/apps/sii/icon.svg",
    "gov-es.ticketbai": "https://assets.invopop.com/apps/ticketbai/icon.svg",
    "gov-es.facturae": "https://assets.invopop.com/apps/facturae/icon.svg",
    verifactu: "https://assets.invopop.com/apps/verifactu/icon.svg",
    "gov-pl": "https://assets.invopop.com/apps/ksef/icon.svg",
    "gov-sa": "https://assets.invopop.com/apps/zatca/icon.svg",
    "gov-ar": "https://assets.invopop.com/apps/arca/icon.svg",
    "at-pt": "https://assets.invopop.com/apps/at-pt/icon.svg",
    "sat-mx": "https://assets.invopop.com/apps/sat-mexico/icon.svg",
    "sw-sapien": "https://assets.invopop.com/apps/sw-sapien/icon.svg",
    "sdi-it": "https://assets.invopop.com/apps/sdi-italy/icon.svg",
    "ticket-it": "https://assets.invopop.com/apps/agenzia-entrate/icon.svg",
    "nfe-br": "https://assets.invopop.com/apps/notas-fiscais-eletronicas-brazil/icon.svg",
    chargebee: "https://assets.invopop.com/apps/chargebee/icon.svg",
    stripe: "https://assets.invopop.com/apps/stripe/icon.svg",
    email: "https://assets.invopop.com/apps/email/icon.svg",
    cron: "https://assets.invopop.com/apps/cron/icon.svg",
    ilyda: "https://assets.invopop.com/apps/ilyda/icon.svg",
    invoicexpress: "https://assets.invopop.com/apps/invoicexpress/icon.svg",
    plemsi: "https://assets.invopop.com/flags/co.svg"
  };
  const iconFor = provider => {
    const parts = (provider || "").split(".");
    for (let i = parts.length; i > 0; i--) {
      const url = providerIcons[parts.slice(0, i).join(".")];
      if (url) return url;
    }
    return null;
  };
  const StepIcon = ({provider}) => {
    const url = iconFor(provider);
    return <span title={provider} className="flex h-7 w-7 shrink-0 items-center justify-center rounded-md border border-gray-950/10 bg-white dark:border-white/10 dark:bg-white/5">
        {url ? <img src={url} alt="" className="h-4 w-4" /> : null}
      </span>;
  };
  const renderSummary = summary => {
    const nodes = [];
    const re = /`([^`]+)`(\{[^}]*\})?/g;
    let last = 0;
    let m;
    let k = 0;
    while ((m = re.exec(summary)) !== null) {
      if (m.index > last) nodes.push(summary.slice(last, m.index));
      const attrs = m[2] || "";
      if (attrs.indexOf(".state") >= 0) {
        const state = (attrs.match(/\.state\s+\.([\w-]+)/) || [])[1] || m[1];
        nodes.push(<StateChip key={k++} state={state} label={m[1]} />);
      } else if (attrs) {
        nodes.push(<span key={k++} className="text-sm font-medium text-gray-700 dark:text-gray-300">
            {m[1]}
          </span>);
      } else {
        nodes.push(<code key={k++} className="text-sm rounded bg-gray-100 px-1 font-mono text-sm dark:bg-white/10">
            {m[1]}
          </code>);
      }
      last = m.index + m[0].length;
    }
    if (last < summary.length) nodes.push(summary.slice(last));
    return nodes;
  };
  const NoteRow = ({text}) => <div className="mt-4 mb-1 font-mono text-sm leading-5 text-gray-400 dark:text-gray-500">{"// " + text}</div>;
  const renderSteps = (steps, counter) => (steps || []).map(step => {
    counter.n += 1;
    const n = counter.n;
    const branches = (step.next || []).filter(b => b.steps && b.steps.length > 0);
    return <div key={step.id || "step-" + n}>
          {step.notes ? <NoteRow text={step.notes} /> : null}
          <div className="mt-2.5 flex items-center">
            <span className="absolute left-0 w-10 text-center font-mono text-sm text-gray-400 select-none dark:text-gray-500">
              {n}
            </span>
            <div className="flex min-w-0 flex-1 items-center gap-2 rounded-xl border border-gray-950/5 bg-white px-2 py-2 dark:border-white/10 dark:bg-gray-900">
              <StepIcon provider={step.provider} />
              <span className="text-sm shrink-0 font-medium text-gray-900 dark:text-gray-100">{step.name}</span>
              {step.summary ? <span className="text-sm min-w-0 truncate text-gray-500 dark:text-gray-400">{renderSummary(step.summary)}</span> : null}
            </div>
          </div>
          {branches.length > 0 ? <div className="ml-5 border-l border-gray-200 -my-1 py-1 pl-6 dark:border-white/10">
              {branches.map((branch, bi) => <div key={branch.code || branch.status || bi}>
                  <div className="mt-4">
                    <span className="rounded-md bg-gray-200/70 px-2 py-1 font-mono text-sm text-gray-600 dark:bg-white/10 dark:text-gray-300">
                      {branch.code || branch.status}
                    </span>
                  </div>
                  {renderSteps(branch.steps, counter)}
                </div>)}
            </div> : null}
        </div>;
  });
  const counter = {
    n: 0
  };
  const wf = workflow || ({});
  return <div className="not-prose relative my-5 rounded-2xl border border-gray-950/5 bg-gray-50 py-3 pr-4 pb-5 pl-12 dark:border-white/10 dark:bg-white/[0.03]">
      {renderSteps(wf.steps, counter)}
      {wf.rescue && wf.rescue.length > 0 ? <div className="mt-6 border-t border-dashed border-gray-300 dark:border-white/10">
          <NoteRow text="If any step fails" />
          {renderSteps(wf.rescue, counter)}
        </div> : null}
    </div>;
};

## Introduction

In Italy, businesses receive their invoices through the *Sistema di Interscambio* (SDI), which delivers each one as a FatturaPA XML document to the channel the recipient has registered with the tax authority.

Invopop is registered as such a channel in its own right. SDI delivers invoices straight to Invopop, which works out which company each one is for, converts the FatturaPA document into [GOBL](https://docs.gobl.org) using the [GOBL FatturaPA](https://github.com/invopop/gobl.fatturapa) library, and runs your workflow on the result. The original XML is kept attached exactly as SDI delivered it, alongside the delivery metadata that came with it.

Detailed information about the SDI-specific extensions can be found in:

* [Italy SDI FatturaPA v1.x Addon Documentation](https://docs.gobl.org/addons/it-sdi-v1)
* [Italy Tax Regime Documentation](https://docs.gobl.org/regimes/it)

| -                 | Sandbox                                         | Live                                            |
| ----------------- | ----------------------------------------------- | ----------------------------------------------- |
| **Deliveries**    | Only invoices you send to yourself, looped back | Real invoices from your suppliers               |
| **Tax authority** | Nothing to register                             | Each company registers Invopop's recipient code |

## Setup

Receiving takes more setup than sending. Invopop needs to know which companies belong to your workspace, and the tax authority needs to know that those companies receive through Invopop.

<Steps>
  <Step title="Connect the Italy app">
    1. Navigate to **Configuration** → **Apps**
    2. Find **Italy** in the app discovery list
    3. Click **Connect** to activate
  </Step>

  <Step title="Set up the registration workflow">
    <Accordion title="Italian company example">
      The `tax_id` contains the company's *partita IVA* without the `IT` prefix.

      ```json Italy customer example theme={"system"}
      {
          "$schema": "https://gobl.org/draft-0/org/party",
          "name": "Cliente Esempio SpA",
          "tax_id": {
              "country": "IT",
              "code": "09876543217"
          },
          "inboxes": [
              {
                  "key": "it-sdi-code",
                  "code": "M5UXCR5"
              }
          ],
          "addresses": [
              {
                  "num": "8",
                  "street": "Via Roma",
                  "locality": "Torino",
                  "region": "TO",
                  "code": "10121",
                  "country": "IT"
              }
          ],
          "emails": [
              {
                  "addr": "acquisti@clienteesempio.it"
              }
          ]
      }
      ```
    </Accordion>

    This workflow claims a company's fiscal identity for your workspace and enables certified archiving for it.

    <Card iconType="duotone" title="Italy register party workflow" icon="code-branch" href="https://console.invopop.com/redirect/workflows/new?template=it-italy-register-party" horizontal>
      Add to my workspace →
    </Card>

    <Tabs>
      <Tab title="Workflow">
        <WorkflowDiagram workflow={itRegisterPartyWorkflow} />
      </Tab>

      <Tab title="Code">
        Copy and paste into a new [Empty Party workflow](https://console.invopop.com/redirect/workflows/new?template=empty-party) code view.

        ```json Example register party workflow theme={"system"}
        {
          "name": "Register party with SDI",
          "description": "Register a company to receive invoices and enable archiving",
          "schema": "org/party",
          "steps": [
            {
              "id": "d0a624c0-7ab3-11f1-bcdd-79d761bdaace",
              "name": "Register party with SDI",
              "provider": "gov-it.sdi.register",
              "summary": "Claim the company's fiscal ID for this workspace"
            },
            {
              "id": "f19737f0-7ab3-11f1-bcdd-79d761bdaace",
              "name": "Register party for e-archiving",
              "provider": "gov-it.archive.register",
              "summary": "Enable certified preservation for this company"
            }
          ],
          "rescue": []
        }
        ```
      </Tab>
    </Tabs>

    The party entry must carry an Italian VAT number or a *codice fiscale* — registration fails with a clear error otherwise. Re-running it on an already-registered company is safe.
  </Step>

  <Step title="Set up the import workflow">
    This workflow runs on every invoice SDI delivers. Extend it freely — generate a PDF, notify your systems through a webhook, push the invoice into an ERP.

    <Card iconType="duotone" title="Italy import invoice workflow" icon="code-branch" href="https://console.invopop.com/redirect/workflows/new?template=it-italy-import-invoice" horizontal>
      Add to my workspace →
    </Card>

    <Tabs>
      <Tab title="Workflow">
        <WorkflowDiagram workflow={itImportInvoiceWorkflow} />
      </Tab>

      <Tab title="Code">
        Copy and paste into a new [Empty Invoice workflow](https://console.invopop.com/redirect/workflows/new?template=empty-invoice) code view.

        ```json Example import invoice workflow theme={"system"}
        {
          "name": "Import invoice from SDI",
          "description": "Import and process an invoice received through SDI",
          "schema": "bill/invoice",
          "steps": [
            {
              "id": "33946e58-a094-4e9d-bef7-51e8ac1974fe",
              "name": "Import invoice from SDI",
              "provider": "gov-it.sdi.import.invoice",
              "summary": "Convert the received FatturaPA document to GOBL"
            }
          ],
          "rescue": []
        }
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="Configure the app for receiving">
    Navigate to **Configuration** → **Apps**, find the **Italy** app, click **Configure**, and select the import workflow you just created. It will run automatically whenever an invoice arrives.
  </Step>

  <Step title="Register the recipient code with the tax authority (live only)">
    <Note>
      Skip this in sandbox — there is no tax authority to tell.
    </Note>

    For each company that should receive through Invopop, register Invopop's recipient code (*codice destinatario*) at Agenzia delle Entrate:

    1. Go to the [tax authority's portal](https://ivaservizi.agenziaentrate.gov.it/portale/) and log in with credentials for the company being registered.
    2. Open the **Fatture e Corrispettivi** section.
    3. Under **Fatturazione elettronica**, choose **Registrazione delle modalità di ricezione della fattura elettronica**.
    4. Select the *Codice Destinatario* option and enter `BDCS3JD`.
    5. Click **Conferma**.

    <Tip>
      The recipient code is a routing address: it tells SDI where to deliver the company's incoming invoices. Suppliers who address an invoice to an old code will not reach you, so tell the company's suppliers whenever it changes.
    </Tip>
  </Step>

  <Step title="Run the registration workflow">
    Run the registration workflow on the company's party entry to complete the setup on the Invopop side.
  </Step>
</Steps>

<Warning>
  In live workspaces both halves are needed: the recipient code registered at Agenzia delle Entrate, and the registration workflow run in Invopop. Sending never required either.
</Warning>

## How receiving works

Every delivery goes through three stages.

1. **Receive.** SDI posts the invoice to Invopop, which stores the original FatturaPA file and its delivery metadata before doing anything else, then acknowledges the delivery. Once acknowledged, SDI considers the invoice delivered and will not send it again — which is why the original bytes are stored first. Repeat deliveries of the same invoice are recognised by SDI's delivery identifier and never duplicate.

2. **Route.** Invopop reads the addressee's fiscal ID out of the invoice itself and looks it up among the registered companies. On a match, it starts your import workflow in the owning workspace. An invoice addressed to a company nobody registered is held rather than lost, but it is not processed until that is resolved.

3. **Import.** The import step converts the FatturaPA document into a GOBL invoice and creates the entry, with two files attached: the original XML exactly as delivered (`sdi-inbound-invoice`) and SDI's delivery metadata (`sdi-inbound-metadata`), when SDI provided one.

Received invoices appear in your **Expenses** folder. If conversion fails, the step returns `KO`, but the original file stays stored — the invoice can be re-processed later without SDI needing to redeliver it.

Italian preservation rules cover the invoices you receive as well as the ones you issue. Add the **Archive document** step after the import step to preserve each one — see the [Archiving](/guides/it-sdi-archiving) guide.

## Unregistering a company

Registering a tax ID claims it for a single party record, and only one party per environment can hold a given tax ID at a time. Unregister a company when it is no longer your client, or when you need to register the same tax ID from a different party record.

<Card iconType="duotone" title="Italy unregister party workflow" icon="code-branch" href="https://console.invopop.com/redirect/workflows/new?template=it-italy-unregister-party" horizontal>
  Add to my workspace →
</Card>

<Tabs>
  <Tab title="Workflow">
    <WorkflowDiagram workflow={itUnregisterPartyWorkflow} />
  </Tab>

  <Tab title="Code">
    Copy and paste into a new [Empty Party workflow](https://console.invopop.com/redirect/workflows/new?template=empty-party) code view.

    ```json Example unregister party workflow theme={"system"}
    {
      "name": "Unregister party from SDI",
      "description": "Stop a company receiving invoices through SDI",
      "schema": "org/party",
      "steps": [
        {
          "id": "0598fbd0-7ab4-11f1-8f97-792526fe02d9",
          "name": "Unregister party from SDI",
          "provider": "gov-it.sdi.unregister",
          "summary": "Stop receiving and release the fiscal ID"
        }
      ],
      "rescue": []
    }
    ```
  </Tab>
</Tabs>

The unregister action turns off receiving and clears the company's registration, freeing the tax ID to be claimed again — from another party record in the same workspace, or from a different workspace. Running it on a company that is not registered skips rather than fails, so it is safe to re-run.

<Warning>
  Unregistering stops receiving only. Sending never required registration, so it is unaffected. Invoices addressed to the company afterwards are no longer imported into your workspace.
</Warning>

<Note>
  Unregistering does not affect legal archiving. Invoices already preserved under *conservazione a norma* stay preserved, as the law requires.
</Note>

The recipient code registration at Agenzia delle Entrate is separate and stays in place. If the company should stop receiving through Invopop altogether, update its reception settings at the [tax authority's portal](https://ivaservizi.agenziaentrate.gov.it/portale/) as well.

## Troubleshooting

| Symptom                                            | Cause                                                                                                                                                                                                       |
| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Registration fails complaining about the fiscal ID | The party entry has neither an Italian VAT number nor a *codice fiscale*. Add one and re-run.                                                                                                               |
| An expected invoice never arrives                  | The company was not registered before the delivery, so the invoice is being held — or the supplier addressed it to a different recipient code. Check the company's reception settings at the tax authority. |
| The import step fails with `KO`                    | The document has a structure the converter does not handle yet. The original file is retained, so the import can be replayed after a fix.                                                                   |

## FAQ

<AccordionGroup>
  <Accordion title="How do I import received invoices in Italy?">
    Register Invopop's recipient code (`BDCS3JD`) with the tax authority and run the registration workflow on the company's party entry. Invopop automatically receives matching invoices and routes them through the configured import workflow. See the [receiving invoices guide](/guides/it-sdi-reception).
  </Accordion>

  <Accordion title="How does Invopop convert received Italian invoices into GOBL?">
    Inbound FatturaPA XMLs are parsed via [`gobl.fatturapa`](https://github.com/invopop/gobl.fatturapa). The original signed XML is preserved as a silo entry attachment alongside the GOBL representation.
  </Accordion>

  <Accordion title="How do I test receiving invoices in the sandbox?">
    Register the company for reception in your sandbox workspace, then send a sandbox invoice addressed to it — the app loops it back to you as an inbound delivery and runs your import workflow, exactly as a real delivery would. This is the only way to receive an invoice in sandbox: there is no tax authority to register with, and no real supplier can reach it. See [receiving your own invoices](/guides/it-sdi-invoicing#receiving-your-own-invoices).
  </Accordion>

  <Accordion title="What happens if a received invoice contains errors?">
    The import step attempts to convert the FatturaPA document into [GOBL](https://docs.gobl.org). If conversion fails, the step returns `KO`, but the original file stays stored — the invoice can be re-processed later without SDI needing to redeliver it.

    If the invoice has significant structural issues that prevent conversion, you may need to contact the sender to request a corrected invoice.
  </Accordion>

  <Accordion title="How quickly are invoices received after being sent by suppliers?">
    Invoices are typically received within minutes after being sent by suppliers through SDI. The automatic import process in Invopop processes them as soon as they are received by our system.
  </Accordion>

  <Accordion title="Can I register multiple companies to receive invoices?">
    Yes, multiple companies can be registered to receive invoices through a single Invopop workspace. For each company, you must:

    1. Register the recipient code `BDCS3JD` with the Italian tax authority for that specific company
    2. Have its tax ID registered by running the registration workflow on the company's party entry
    3. Use the same import workflow configured in the app settings

    This two-step registration process (with the tax authority and with Invopop) must be completed for each company you want to register. This is particularly useful for white-labeling scenarios where a user manages multiple entities.
  </Accordion>

  <Accordion title="Can I register the same tax ID again from a different party?">
    Yes, but only one party at a time can hold a given tax ID. Run the [unregister workflow](/guides/it-sdi-reception#unregistering-a-company) on the party that currently holds it, then register the new one.

    Registering a tax ID that another party already holds fails with a clear error.

    Sandbox and live are counted separately, so the same tax ID can be registered in both at the same time.
  </Accordion>

  <Accordion title="What is the difference between registering with the tax authority and registering with Invopop?">
    The two-step registration process serves different purposes:

    1. **Registering with the Italian tax authority** - Tells SDI to route invoices addressed to your company to Invopop's channel using the *Codice Destinatario* `BDCS3JD`.

    2. **Registering with Invopop** (the registration workflow) - Tells Invopop which invoices to accept and process for your workspace.

    Both steps are necessary: the first routes the invoices to Invopop, and the second ensures Invopop knows which workspace should receive those invoices.
  </Accordion>

  <Accordion title="What format do received SDI invoices arrive in?">
    Signed FatturaPA XML (versions 1.2.x), conforming to the Agenzia delle Entrate schema. The original file is kept attached to the entry exactly as SDI delivered it, alongside SDI's delivery metadata.
  </Accordion>
</AccordionGroup>

More available in our [Italy FAQ](/faq/italy) section

***

<AccordionGroup>
  <Accordion title="🇮🇹 Invopop resources for Italy">
    |            |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
    | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | Compliance | <Icon icon="https://assets.invopop.com/flags/it.svg" /> [Invoicing compliance in Italy](/compliance/italy)<br /> <Icon icon="timeline" /> [Compliance timeline](/timelines/italy)                                                                                                                                                                                                                                                                                                                                                             |
    | Apps       | <Icon icon="https://assets.invopop.com/flags/it.svg" /> [Italy](/apps/italy)<br /><Icon icon="https://assets.invopop.com/apps/sdi-italy/icon.svg" /> [SDI Italy](/apps/sdi-italy)<br /><Icon icon="https://assets.invopop.com/apps/agenzia-entrate/icon.svg" /> [Smart Receipts Italy](/apps/smart-receipts-italy)                                                                                                                                                                                                                            |
    | Guides     | <Icon icon="book" /> SDI — [Issuing invoices](/guides/it-sdi-invoicing) · [Status](/guides/it-sdi-status) · [Receiving invoices](/guides/it-sdi-reception) · [Archiving](/guides/it-sdi-archiving)<br /><Icon icon="book" /> [SDI sending guide (legacy)](/guides/it-sdi-sending)<br /><Icon icon="book" /> [SDI receiving guide (legacy)](/guides/it-sdi-receiving)<br /><Icon icon="book" /> [Smart Receipts supplier registration](/guides/it-ticket-supplier)<br /><Icon icon="book" /> [Smart Receipts issuing guide](/guides/it-ticket) |
    | FAQ        | <Icon icon="square-question" /> [Italy FAQ](/faq/italy)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
    | GOBL       | <Icon icon="https://assets.invopop.com/icons/gobl.svg" />  [Italy Tax Regime](https://docs.gobl.org/regimes/it)<br /> <Icon icon="https://assets.invopop.com/icons/gobl.svg" /> [Italy SDI FatturaPA Addon](https://docs.gobl.org/addons/it-sdi-v1)<br /> <Icon icon="https://assets.invopop.com/icons/gobl.svg" /> [Italy AdE Ticket Addon](https://docs.gobl.org/addons/it-ticket-v1)                                                                                                                                                       |
    | GitHub     | <Icon icon="github" /> [gobl.fatturapa](https://github.com/invopop/gobl.fatturapa)                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
  </Accordion>
</AccordionGroup>

<Card title="Participate in our community" icon="forumbee" href="https://community.invopop.com" arrow="true" horizontal>
  Ask and answer questions about invoicing in Italy →
</Card>
