En Italie, fiskaly prend en charge l’envoi de factures électroniques B2B et B2C, ainsi que la réception de factures électroniques B2B. Nous prenons actuellement en charge la Facture standard (Fattura, TD01). La prise en charge de la Facture simplifiée (Fattura semplificata, TD07) arrive bientôt.
La facturation électronique est obligatoire et réglementée par l’Agenzia delle Entrate (administration fiscale). Toutes les factures B2B doivent être échangées via le SDI (Sistema di Interscambio — système d’échange) au format XML FatturaPA (facture électronique) et sont légalement obligatoires depuis janvier 2019. Les factures doivent également être conservées à long terme via un archivage certifié (conservazione a norma).
Cette page couvre les exigences spécifiques à l’Italie qui complètent le Guide d’intégration général étape par étape pour intégrer un Taxpayer à la facturation électronique.
fiskaly gère les deux sens de l’échange SDI, qui fonctionnent différemment :
Envoi — B2B et B2C
fiskaly génère la FatturaPA et l'envoie au SDI, qui la valide et la transmet au destinataire de manière asynchrone. Aucune inscription au réseau n'est requise. Les destinataires professionnels et les consommateurs exigent des champs différents.
Réception — B2B uniquement
Facultative, activée pour chaque Taxpayer. Nécessite une inscription unique pour recevoir les factures de vos fournisseurs.
Au-delà de ces deux sens, chaque facture que vous envoyez et recevez est automatiquement archivée. Cela signifie une conservation certifiée à long terme (conservazione a norma) pendant les 10 années légalement requises, sans aucune configuration de votre côté.
Si vous disposez déjà d’une intégration SIGN IT, vous ne repartez pas de zéro — vous étendez votre Taxpayer existant avec les données d’enregistrement supplémentaires et mettez en service un System E_INVOICE_SERVICE. Consultez E-INVOICE IT pour les clients SIGN IT pour toutes les étapes.
Prérequis
Section intitulée « Prérequis »Ces prérequis s’appliquent à tout Taxpayer que vous intégrez pour la facturation électronique en Italie — que vous envoyiez, receviez, ou les deux. Assurez-vous de disposer des informations suivantes sur le Taxpayer avant de continuer.
E-INVOICE IT prend actuellement en charge les Taxpayers de type COMPANY. L’enregistrement d’un Taxpayer INDIVIDUAL — un indépendant ou entrepreneur individuel qui émet sous son propre codice fiscale plutôt qu’avec un numéro de TVA de société — arrive bientôt.
Données d’enregistrement spécifiques à l’Italie — transmises sous content.fiscalization.registration :
company_id— Numero Registro Imprese (numéro du registre du commerce)office— code de la province de la Camera di Commercio qui a délivré le numéro REA, p. ex.MI,RMentry— numéro REA (6 ou 7 chiffres)legal_form— forme juridique de l’entité (p. ex.LIMITED_LIABILITY_COMPANY,JOINT_STOCK_COMPANY)capital— capital social enregistré en EUR (p. ex."10000.00")shareholder_status—SOLE_SHAREHOLDERouMULTIPLE_SHAREHOLDERSliquidation_status—IN_LIQUIDATIONouNOT_IN_LIQUIDATIONtax_regime— facultatif,ORDINARY(par défaut) ouFLAT_RATE_SCHEME(Regime Forfettario)
Champs standard du Taxpayer — font partie du Taxpayer lui-même (partagés avec SIGN IT si vous l’utilisez) :
content.name— dénomination légale enregistrée de l’entreprise ou du particuliercontent.address— adresse légale enregistréecontent.address.region— Provincia (code de province, p. ex.MI,RM) ; obligatoire sur le Taxpayer et validé lors de la mise en service
Pour la facturation électronique en Italie, content.address.region (Provincia) est un champ obligatoire sur le Taxpayer. Il est validé lors de la mise en service du System E_INVOICE_SERVICE — si region est absent, la mise en service échoue. Assurez-vous qu’il soit défini ou mis à jour sur le Taxpayer au préalable.
Envoi de factures électroniques : exigences relatives au destinataire
Section intitulée « Envoi de factures électroniques : exigences relatives au destinataire »Pour envoyer une facture électronique, vous indiquez son destinataire et ses données de routage directement dans le Record de la facture. Lorsque vous créez la facture (TRANSACTION::INVOICE) avec createRecord, ajoutez le destinataire à son tableau recipients. Les champs à renseigner dépendent de la personne que vous facturez :
Destinataires professionnels (B2B)
Routés par le code destinataire SDI, ou par PEC s'ils n'ont pas de boîte SDI.
Destinataires consommateurs (B2C)
Les résidents italiens sont identifiés par le codice fiscale ; les consommateurs à l'étranger par un identifiant étranger.
Chaque destinataire porte invoicing.type = SDI. Ce qui change d’un cas à l’autre, c’est l’identification, le code destinataire et l’intervention ou non d’une PEC :
| Entreprise | Consommateur en Italie | Consommateur à l’étranger | |
|---|---|---|---|
type | BUSINESS | CONSUMER | CONSUMER |
identification | VAT — validé | TAX — codice fiscale, validé | tout type ; non validé |
invoicing.destination_code | le code du destinataire sur 7 caractères, ou "0000000", ou "XXXXXXX" | "0000000" | "XXXXXXX" |
invoicing.pec | obligatoire avec "0000000" | facultative | non utilisée |
address.region | obligatoire lorsque l’adresse est en Italie | obligatoire | non obligatoire |
name | raison sociale | gender, forename, surname | gender, forename, surname |
- Le code à 7 caractères que le destinataire vous a communiqué (p. ex.
ABC1234) : uniquement des lettres majuscules et des chiffres. "0000000": le destinataire n’a pas de boîte SDI — tous les consommateurs, ainsi que les entreprises qui reçoivent par PEC."XXXXXXX": le destinataire est à l’étranger.
Destinataires professionnels (B2B)
Section intitulée « Destinataires professionnels (B2B) »Chaque destinataire professionnel est de type BUSINESS avec un bloc invoicing renseigné, comme l’explique l’intégration générale pas à pas. Outre les informations standard exigées par toute facture électronique (nom du destinataire, adresse, identification fiscale, lignes de facture, etc.), l’Italie ajoute les champs de routage SDI présentés ci-dessus.
Les valeurs de destination_code et de pec dépendent du destinataire :
| Scénario | destination_code | pec |
|---|---|---|
| Le destinataire a une boîte SDI enregistrée | son code à 7 caractères (p. ex. ABC1234) | facultatif |
| Le destinataire n’est pas enregistré auprès du SDI | "0000000" | obligatoire |
| Le destinataire est hors d’Italie | "XXXXXXX" | non utilisé |
Une pec est une adresse Posta Elettronica Certificata — la messagerie certifiée italienne. Le SDI vérifie le domaine : une boîte ordinaire est donc rejetée.
"0000000" signifie remise par PEC, d’où le caractère obligatoire de la pec dans ce cas pour un destinataire professionnel.
recipients[].address.region (la Provincia du destinataire) n’est pas marquée comme obligatoire dans le schéma partagé de l’Unified API, mais l’Italie l’exige dès lors que l’adresse se situe en Italie. Elle n’est pas vérifiée à la création de l’enregistrement : createRecord réussit et la transmission échoue plus tard, faisant passer toute la chaîne à FAILED. Renseignez-la d’emblée plutôt que de le découvrir de façon asynchrone.
Destinataires consommateurs (B2C)
Section intitulée « Destinataires consommateurs (B2C) »Lorsque votre client est un particulier et non une entreprise, définissez recipients[].type sur CONSUMER. La facture passe par le SDI sous forme de document FatturaPA (TD01), comme une facture B2B.
Les consommateurs n’ont pas de boîte SDI, le routage fonctionne donc différemment. La façon d’identifier le consommateur dépend de sa résidence en Italie ou non :
- Résident en Italie — identifié par son codice fiscale, routé avec le code destinataire
"0000000". - Hors d’Italie — aucun codice fiscale n’existe : un identifiant étranger prend sa place et la facture est routée avec
"XXXXXXX".
Au-delà des champs du tableau ci-dessus, un destinataire consommateur porte toujours name.gender, name.forename et name.surname, ainsi que son adresse.
Consommateurs résidant en Italie
Section intitulée « Consommateurs résidant en Italie »Envoyez le codice fiscale comme identification de type TAX (16 caractères), l’adresse de résidence y compris region (Provincia), et le code destinataire "0000000". Une pec peut être ajoutée, mais elle n’est pas obligatoire.
Pour un consommateur résidant en Italie, une identification est obligatoire, elle doit être de type TAX, et le codice fiscale est vérifié dès la création de l’enregistrement : s’il est absent ou mal formé, la requête est rejetée à ce stade et aucune facture n’est créée. Le SDI le valide ensuite auprès du registre fiscal : un code bien formé mais inconnu y est rejeté.
Consommateurs hors d’Italie
Section intitulée « Consommateurs hors d’Italie »Un consommateur qui ne réside pas en Italie n’a pas de codice fiscale : envoyez à la place un identifiant étranger, généralement un numéro fiscal ou de TVA étranger.
| Champ | Valeur |
|---|---|
recipients[].identification | obligatoire ; VAT, TAX, PASSPORT, DOCUMENT ou OTHER, selon l’identifiant dont vous disposez |
recipients[].address.country | le pays du consommateur, code ISO 3166-1 alpha-2 |
recipients[].address.code | "00000" — FatturaPA n’accepte qu’un code postal à 5 chiffres |
recipients[].invoicing.destination_code | "XXXXXXX" |
L’identifiant est transmis au SDI comme IdCodice ; ni fiskaly ni le SDI n’en contrôlent la validité dès lors que le pays de l’adresse n’est pas l’Italie. La region n’est pas obligatoire pour une adresse non italienne.
"XXXXXXX" indique au SDI que le dédouanement est demandé mais que la remise via le système d’échange ne s’applique pas — le SDI n’a aucun canal pour atteindre un destinataire à l’étranger. Transmettez au consommateur son exemplaire de la facture (PDF ou équivalent) séparément, hors SDI.
gender est exigé par l’Unified API, pas par le SDI — la facture FatturaPA ne comporte aucun champ de ce type. Envoyez DIVERSE lorsque vous n’avez pas l’information.
Pour un consommateur résidant en Italie, le SDI dépose la facture originale dans son espace réservé sur le portail de l’AdE (Fatture e Corrispettivi).
Lorsque le client a besoin d’une facture plutôt que d’un ticket
Section intitulée « Lorsque le client a besoin d’une facture plutôt que d’un ticket »L’Italie déclare les deux documents par des canaux distincts — le ticket via les corrispettivi, la facture via le SDI — et rien ne les relie automatiquement.
Recueillez la demande avant la clôture de la vente. Lorsque le client vous indique qu’il a besoin d’une fattura, émettez une TRANSACTION::INVOICE à la place d’une TRANSACTION::RECEIPT. C’est le flux que fiskaly prend en charge de bout en bout aujourd’hui, que le client le demande avant ou pendant la vente.
Nous construisons un parcours pris en charge qui relie un ticket fiscalisé et une facture électronique, afin qu’une même opération porte une seule facture et une seule piste d’audit. En attendant, recueillez la demande de facture avant la clôture de la transaction.
Traitement des réponses du SDI
Section intitulée « Traitement des réponses du SDI »Contrairement à un appel d’API synchrone, le résultat du SDI est asynchrone. Après avoir créé la facture (TRANSACTION::INVOICE) avec createRecord, interrogez ou écoutez les mises à jour du Record E_INVOICE::TRANSMISSION pour savoir si le SDI l’a acceptée.
Les résultats du SDI arrivent généralement en quelques minutes. Cependant, la spécification du SDI autorise jusqu’à 48 heures.
Les trois Records atteignent leur état final ensemble :
| Record | État final |
|---|---|
E_INVOICE::TRANSMISSION | COMPLETED ou FAILED, mode=FINISHED |
TRANSACTION::INVOICE | COMPLETED ou FAILED, mode=FINISHED |
INTENTION::TRANSACTION | COMPLETED ou FAILED, mode=FINISHED |
En cas d’échec, le motif de rejet du SDI est disponible dans logs[].message sur les trois Records. Pour plus de détails, consultez How to check the status of an e-invoice sur notre page d’assistance.
Étapes d’erreur
Section intitulée « Étapes d’erreur »Les erreurs peuvent survenir à trois étapes distinctes, chacune avec un comportement différent :
| Étape | Quand | Comportement |
|---|---|---|
| Validation UAPI (synchrone) | Payload invalide | 4xx renvoyé immédiatement — aucun Record n’est créé. Corrigez le payload et réessayez sur le même INTENTION::TRANSACTION. |
| Validation pré-SDI (asynchrone) | La facture est rejetée avant d’atteindre le SDI | Toute la chaîne atteint state=FAILED — une nouvelle chaîne est requise pour réessayer. |
| Rejet du SDI (asynchrone) | Le SDI renvoie NS | Toute la chaîne atteint state=FAILED — une nouvelle chaîne est requise pour réessayer. |
Échecs et nouvelle soumission
Section intitulée « Échecs et nouvelle soumission »Si le SDI renvoie NS (Notifica di Scarto), la facture est juridiquement inexistante :
- Lisez
logs[].messagesur l’un des trois Records pour obtenir le motif de rejet du SDI - Créez une nouvelle
INTENTION::TRANSACTIONet une nouvelleTRANSACTION::INVOICEavec les données corrigées - Le même
document.numberpeut être réutilisé dans les 5 jours suivant le rejetNS - La chaîne ayant échoué reste
FAILEDde façon permanente — elle est conservée à des fins d’audit
Chaque nouvelle soumission démarre une nouvelle chaîne de transaction — UAPI la traite comme une soumission entièrement nouvelle.
Réception de factures électroniques
Section intitulée « Réception de factures électroniques »Un System E_INVOICE_SERVICE peut à la fois envoyer et recevoir des factures électroniques. La réception est facultative — un Taxpayer qui ne fait qu’émettre peut ignorer cette section.
Deux éléments distincts et indépendants entrent en jeu :
- La capacité à recevoir — fiskaly la configure automatiquement lorsque vous mettez en service le System.
- L’enregistrement du code destinataire SDI (manuel, réalisé par vous) — dans votre portail Agenzia delle Entrate (AdE), définissez le code destinataire SDI de fiskaly
JKKZDGRcomme destination SDI de votre entreprise, afin que le SDI achemine vos factures entrantes vers fiskaly.
Dans la réponse de mise en service, compliance.state vaut TRANSMISSION_ONLY. Il passe ensuite automatiquement à TRANSMISSION_RECEPTION une fois l’enregistrement du Taxpayer terminé — ce qui se produit normalement, que vous ayez ou non effectué l’enregistrement AdE ou prévu de recevoir.
TRANSMISSION_RECEPTION signifie que le System est en mesure de recevoir, mais pas que les factures entrantes sont effectivement remises au Taxpayer. Cette remise nécessite l’enregistrement AdE : tant qu’il n’est pas en place, le Taxpayer ne reçoit aucune facture, même lorsque le System est prêt. Vous pouvez effectuer l’enregistrement AdE à tout moment — par exemple, pour activer la réception sur un Taxpayer qui n’était auparavant configuré que pour l’émission.
Appelez retrieveSystem à tout moment pour lire le compliance.state actuel, qui reflète uniquement la capacité à recevoir — et non l’enregistrement AdE :
TRANSMISSION_RECEPTION— fiskaly a configuré le System pour recevoir.TRANSMISSION_ONLY— cette configuration n’est pas terminée.
Si retrieveSystem continue de renvoyer compliance.state = TRANSMISSION_ONLY après la mise en service, l’enregistrement du Taxpayer ne s’est pas terminé. Traitez-le comme une transition bloquée et contactez le support fiskaly à dev-support@fiskaly.com en indiquant le numéro de TVA du Taxpayer afin que nous puissions enquêter.
Il n’y a rien de plus à configurer pour l’acheminement : fiskaly associe automatiquement chaque facture entrante au bon Taxpayer grâce à son identifiant fiscal — c’est aussi pourquoi chaque identifiant fiscal doit appartenir à un seul Taxpayer enregistré. Vous n’avez pas besoin de configurer ni de stocker un code d’acheminement distinct.
Lorsqu’une facture arrive
Section intitulée « Lorsqu’une facture arrive »Lorsqu’une facture vous est envoyée via le SDI, fiskaly la reçoit automatiquement :
- la livraison entrante déclenche un webhook
- un enregistrement de réception (reception record) est créé pour la facture
- le XML signé, le PDF et les métadonnées sont stockés avec l’enregistrement
- les livraisons en double sont dédupliquées
En pratique, la première facture qui vous parvient de cette manière confirme aussi que la réception est correctement configurée.
Si vous intégrez E-INVOICE IT sans SIGN IT, veuillez contacter le support fiskaly à dev-support@fiskaly.com — nous vous guiderons dans la configuration du Taxpayer pour votre cas spécifique.
Archivage
Section intitulée « Archivage »La loi italienne exige que les factures électroniques soient conservées à long terme via un archivage numérique certifié (conservazione a norma) : elles doivent être conservées pendant au moins 10 ans et stockées de manière à rester immuables, authentiques et facilement récupérables, avec des signatures numériques et des horodatages (marca temporale). Conserver votre propre copie du XML ne suffit pas — fiskaly s’en charge pour vous.
Pour l’Italie, l’archivage est automatique et toujours actif : chaque facture que vous envoyez et chaque facture que vous recevez via le SDI est légalement conservée, sans configuration supplémentaire ni appel d’API de votre côté. Cela repose uniquement sur l’identifiant fiscal italien du Taxpayer, qui fait déjà partie de l’onboarding. Chaque facture conservée reçoit un reçu de conservation comme preuve de conservazione a norma. La conservation se termine généralement en quelques secondes ; le reçu lui-même peut mettre quelques minutes à être émis, après quoi fiskaly le joint automatiquement — rien n’est requis de votre côté.
Récupérez les artefacts d’une facture électronique depuis son enregistrement avec retrieveRecord, en sélectionnant l’artefact via un paramètre de requête :
compliance-artifact— le document qui fait juridiquement foi. Pour l’Italie, le XML FatturaPA validé par le SDI.archive-artifact— le reçu de conservation attestant la conservation légale (conservazione a norma), disponible sous forme de PDF lisible et de XML signé pour un usage d’audit ou juridique.
Dans l’environnement de test, l’archivage s’exécute de bout en bout, mais le résultat n’a aucune validité juridique — il est destiné uniquement aux tests d’intégration. Seules les factures traitées en live sont certifiées comme légalement conservées.