eliDocs
Country Guides

Italy

What Beliq validates in Italy's FatturaPA (FPR12) XML, and where the SDI clearance boundary sits.

Italy’s domestic Fattura elettronica uses XML defined by the national FatturaPA specifications and W3C XML Schemas published on fatturapa.gov.it. This is not EN 16931 UBL/CII and there are no BR-* Schematron rule IDs on Beliq’s validation path.

Italy runs a clearance model (the Sistema di Interscambio), so Beliq does not count it among its pinned, authority-verified live-coverage countries. The engine can emit and validate FatturaPA XML, as described below, but treat that as a document-layer capability rather than verified coverage: there is no authority-published set of known-bad examples to test against, so validation is best-effort against the XSD graph. SDI submission always stays with your channel provider.

Where Beliq fits

  • Generate ordinaria (FPR12) XML via standard: "fatturapa" and default profile ordinaria.
  • Validate and parse detected FatturaPA XML against the authority XSD graph vendored in the engine (bundle pin in API responses as italyFatturapaRuntimeVersion).

SDI file messaggio XSD

The Italian Sistema di Interscambio also uses file messaggio XML (receipts, notifications, scarti) defined separately from FatturaPA invoice bodies. Beliq vendored the authority MessaggiTypes_v1.1.xsd graph for offline resolution (see Validation artifacts for the pinned version). POST /v1/validate can run XSD-only structural validation on these documents when you pass format=sdi_messaggio or when the root element is a known messaggio type in namespace http://www.fatturapa.gov.it/sdi/messaggi/v1.0. That path is not FatturaPA invoice validation and does not assert ControlliFEL business rules. SDI submission, signing, and transport remain out of scope by product decision.

What Beliq does not do (SDI boundary)

Beliq is not a Sistema di Interscambio (SDI) operator. It does not:

  • Sign invoices or act as your certified interchange party.
  • Transmit files to SDI or operate message flows (receipts, scarti, and so on).

You remain responsible for signing, routing (codice destinatario / PEC), and transmission through your chosen channel provider or in-house process.

Integration architecture (Beliq vs SDI channel)

Beliq focuses on document correctness for the formats it supports:

Concern In Beliq today Outside Beliq (your stack / partner)
FatturaPA invoice XML (FPR12 / PA / semplificata XSD graph) Generate, Validate, Parse Digital signature, archiving policy, transmission
SDI file messaggio XML (MessaggiTypes XSD) Validate only — format=sdi_messaggio or auto-detect on known roots Receipt handling in your back office; SDI SOAP/FTP flows
SDI network interchange (submission, operator status) Not offered — see boundary above End-to-end channel with the Sistema di Interscambio

Authority documentation (Italian) for the interchange system — specifications, PDFs, and machine-readable WSDL/XSD downloads — is published on the national portal, starting from the Documentazione Sistema d’Interscambio hub. The Specifiche tecniche relative al Sistema di Interscambio (PDF) (version as linked; the authority may publish updates) and the overview File fatture e messaggi page describe how invoice files and file messaggio types relate. Beliq does not embed or automate those transport protocols in this release.

For file messaggio validation examples and response fields (italySdiMessaggiXsdBundle, …), use the Validate API reference — in particular the format=sdi_messaggio query parameter and the Italy SDI section at the top of that page.

Generating FatturaPA ordinaria

Use output: "xml" (hybrid PDF is only available for ZUGFeRD / Factur-X). Optional invoice.italy carries routing and document codes — see the Generate reference for field lists aligned with the public API.

generate-fatturapa.sh
curl -X POST https://api.beliq.eu/v1/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "standard": "fatturapa",
    "profile": "ordinaria",
    "output": "xml",
    "invoice": {
      "number": "123",
      "issueDate": "2014-12-18",
      "currencyCode": "EUR",
      "seller": {
        "name": "Test Seller",
        "vatId": "IT01234567890",
        "address": { "city": "Roma", "countryCode": "IT" }
      },
      "buyer": {
        "name": "Test Buyer",
        "vatId": "IT98765432109",
        "address": { "city": "Milano", "countryCode": "IT" }
      },
      "lines": [
        {
          "description": "Service",
          "quantity": 1,
          "unitCode": "C62",
          "unitPrice": 100.00,
          "lineTotal": 100.00,
          "vatRate": 22,
          "vatCategoryCode": "S"
        }
      ],
      "totalNetAmount": 100.00,
      "totalTaxAmount": 22.00,
      "totalGrossAmount": 122.00,
      "italy": {
        "codiceDestinatario": "0000000",
        "tipoDocumento": "TD01"
      }
    }
  }'

Validation behaviour

On /v1/validate and /v1/generate, structural failures surface with ruleId: "XSD" in the validation result. Additional ControlliFEL / prose-and-table rules from the Italian specification are not replicated as code in this release.

Further reading