Format TEIF et Spécifications Techniques de la Facturation Électronique en Tunisie

La facturation électronique en Tunisie repose sur un format de données standardisé appelé TEIF — Tunisian Electronic Invoice Format. Comprendre ce format est indispensable pour tout développeur ou responsable technique chargé d'intégrer la plateforme El Fatoora dans un système d'information. Ce guide couvre la structure XML, les champs obligatoires, la signature numérique, le QR code et les deux modes d'intégration disponibles.
Ce tutoriel est le cinquième épisode de notre série Facturation Électronique en Tunisie. Il suppose que vous êtes déjà inscrit sur la plateforme El Fatoora. Si ce n'est pas le cas, consultez d'abord l'épisode 4 : Guide d'inscription étape par étape.
Qu'est-ce que le TEIF ?
Le TEIF (Tunisian Electronic Invoice Format) est le standard national tunisien pour l'échange électronique de factures entre entreprises et entre entreprises et administrations (B2B et B2G). Il est défini par Tunisie TradeNet (TTN) en coordination avec la Direction Générale des Impôts (DGI) et l'Agence Nationale de Certification Électronique (ANCE).
Le TEIF s'appuie sur le langage XML (eXtensible Markup Language) et est gouverné par un schéma XSD (XML Schema Definition) qui définit la structure obligatoire et les règles de validation de chaque document.
Versions actuelles :
- Version 1.8.7 : version stable en production depuis janvier 2026
- Version 1.9.x : en cours de finalisation, non encore déployée en production
Le TEIF est aligné sur les standards internationaux de facturation électronique, notamment UBL 2.1 (Universal Business Language) et CII (Cross Industry Invoice), tout en intégrant les spécificités fiscales tunisiennes (TVA tunisienne, droits de timbre, taxation sur les articles soumis à régime spécial).
Structure du schéma XML/XSD
Un document TEIF est un fichier XML structuré en plusieurs sections hiérarchiques. Voici la structure de haut niveau :
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:tn:gov:dgi:teif:1.8"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:tn:gov:dgi:teif:1.8 TEIF_v1.8.7.xsd">
<!-- Section 1 : En-tête de la facture -->
<Header>
<InvoiceID>FAC-2026-001234</InvoiceID>
<IssueDate>2026-02-22</IssueDate>
<IssueTime>14:30:00</IssueTime>
<InvoiceTypeCode>380</InvoiceTypeCode>
<DocumentCurrencyCode>TND</DocumentCurrencyCode>
<TaxCurrencyCode>TND</TaxCurrencyCode>
</Header>
<!-- Section 2 : Parties (émetteur et destinataire) -->
<Parties>
<Supplier>...</Supplier>
<Customer>...</Customer>
</Parties>
<!-- Section 3 : Lignes de facturation -->
<InvoiceLines>
<InvoiceLine>...</InvoiceLine>
</InvoiceLines>
<!-- Section 4 : Totaux fiscaux -->
<TaxTotal>...</TaxTotal>
<!-- Section 5 : Montants globaux -->
<LegalMonetaryTotal>...</LegalMonetaryTotal>
<!-- Section 6 : Signature numérique (ajoutée après génération) -->
<Signature>...</Signature>
<!-- Section 7 : Cachet électronique visible (QR Code) -->
<VisibleElectronicSeal>...</VisibleElectronicSeal>
</Invoice>Champs obligatoires et règles de validation
Le schéma TEIF distingue trois niveaux de champs : obligatoires (M — Mandatory), conditionnels (C — Conditional) et optionnels (O — Optional).
Section Header — Champs obligatoires
| Champ | Type | Description | Exemple |
|---|---|---|---|
InvoiceID | String (max 50) | Numéro unique de la facture | FAC-2026-001234 |
IssueDate | Date (YYYY-MM-DD) | Date d'émission | 2026-02-22 |
IssueTime | Time (HH:MM:SS) | Heure d'émission | 14:30:00 |
InvoiceTypeCode | Code (3 chiffres) | Type de document | 380 (facture), 381 (avoir) |
DocumentCurrencyCode | ISO 4217 | Devise de la facture | TND |
DueDate | Date | Date d'échéance de paiement | 2026-03-22 |
Codes de type de document
| Code | Type de document |
|---|---|
380 | Facture commerciale standard |
381 | Avoir (note de crédit) |
383 | Note de débit |
386 | Acompte / facture de prépaiement |
389 | Auto-facturation |
Section Supplier (Émetteur) — Champs obligatoires
<Supplier>
<PartyIdentification>
<ID schemeID="TN_MF">12345678A000000</ID> <!-- Matricule fiscal -->
</PartyIdentification>
<PartyName>
<Name>Société Exemple SARL</Name>
</PartyName>
<PostalAddress>
<StreetName>Avenue Habib Bourguiba</StreetName>
<CityName>Tunis</CityName>
<PostalZone>1000</PostalZone>
<CountrySubentity>Tunis</CountrySubentity>
<Country>
<IdentificationCode>TN</IdentificationCode>
</Country>
</PostalAddress>
<TaxScheme>
<ID>TVA</ID>
<TaxTypeCode>VAT</TaxTypeCode>
</TaxScheme>
</Supplier>Règles importantes :
- Le
schemeID="TN_MF"est obligatoire pour le matricule fiscal tunisien - L'adresse doit correspondre exactement à celle déclarée à la DGI
- Le code pays doit être
TNpour les entreprises tunisiennes
Section InvoiceLine — Structure d'une ligne
<InvoiceLine>
<ID>1</ID> <!-- Numéro séquentiel de la ligne -->
<InvoicedQuantity unitCode="C62">10</InvoicedQuantity>
<LineExtensionAmount currencyID="TND">500.000</LineExtensionAmount>
<Item>
<Name>Prestation de développement web</Name>
<SellersItemIdentification>
<ID>PROD-001</ID>
</SellersItemIdentification>
<ClassifiedTaxCategory>
<ID>S</ID> <!-- S=Standard, Z=Zéro, E=Exonéré -->
<Percent>19</Percent>
<TaxScheme>
<ID>TVA</ID>
</TaxScheme>
</ClassifiedTaxCategory>
</Item>
<Price>
<PriceAmount currencyID="TND">50.000</PriceAmount>
<BaseQuantity unitCode="C62">1</BaseQuantity>
</Price>
</InvoiceLine>Taux de TVA tunisiens applicables
| Code | Taux | Application |
|---|---|---|
S (Standard) | 19% | Taux général |
S (Réduit 1) | 13% | Services financiers, assurances |
S (Réduit 2) | 7% | Produits alimentaires de base, médicaments |
Z (Zéro) | 0% | Exportations, produits exonérés |
E (Exonéré) | - | Secteurs spécifiques exonérés par la loi |
Intégration de la signature numérique
La signature numérique est le mécanisme qui garantit l'authenticité et l'intégrité d'une facture TEIF. Elle est basée sur le standard XMLDSig (XML Digital Signature) du W3C, en utilisant l'algorithme RSA-SHA256.
Comment la signature est intégrée dans le XML
La signature est ajoutée dans la section <Signature> du document XML après la génération du contenu de la facture :
<Signature Id="TEIF-SIG-001">
<SignedInfo>
<CanonicalizationMethod
Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod
Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<Reference URI="">
<Transforms>
<Transform
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod
Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<DigestValue>
<!-- Hash SHA256 du document canonicalisé -->
7H3fKpL2mN9oQr1sT4uVwX6yZ8aB0cD2eF4gH6iJ8kL=
</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>
<!-- Valeur de la signature RSA encodée en Base64 -->
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>
<!-- Certificat TUNTRUST en Base64 -->
MIIDpDCCAoygAwIBAgIUX7k2Y...
</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>Processus de signature en 4 étapes
- Génération du XML de la facture (sans la section Signature)
- Canonicalisation du document XML selon l'algorithme C14N
- Calcul du hash SHA-256 du document canonicalisé
- Chiffrement du hash avec la clé privée du certificat TUNTRUST → valeur de signature
La vérification de la signature par TTN suit le processus inverse : recalcul du hash et déchiffrement de la signature avec la clé publique du certificat.
Important : La signature invalide toute modification ultérieure du document. Une facture modifiée après signature doit être resignée.
Génération du QR Code (Cachet Électronique Visible)
Le Cachet Électronique Visible (CEV) est un QR code imprimé sur la facture qui permet à tout tiers (client, auditeur, administration fiscale) de vérifier rapidement l'authenticité de la facture en scannant le code.
Contenu encodé dans le QR Code
Le QR code contient une URL de vérification pointant vers le portail El Fatoora, avec les paramètres suivants encodés :
| Paramètre | Description |
|---|---|
iid | Identifiant unique TTN de la facture (hash) |
sid | Identifiant du fournisseur (matricule fiscal) |
dt | Date et heure d'émission |
amt | Montant total TTC |
sig | Signature de contrôle (hash tronqué) |
Exemple d'URL encodée dans le QR code :
https://verify.elfatoora.tn/v?iid=a3f7e2b1c9d4&sid=12345678A000000&dt=20260222143000&amt=619.000&sig=f4e2a1b3
Intégration dans le XML TEIF
<VisibleElectronicSeal>
<QRCode format="QR_CODE" version="2">
<!-- Données du QR code encodées en Base64 -->
aHR0cHM6Ly92ZXJpZnkuZWxmYXRvb3JhLnRuL3Y/...
</QRCode>
<SealDescription>Facture électronique certifiée TTN</SealDescription>
<SealDate>2026-02-22T14:30:00</SealDate>
</VisibleElectronicSeal>Le QR code doit être généré après la signature numérique, car il contient une référence au hash de la facture signée.
Modes d'intégration : Web Mode vs EDI Mode
Web Mode
Dans le Web Mode, le processus de facturation se déroule entièrement via l'interface web du portail El Fatoora :
- L'utilisateur se connecte sur elfatoora.tn
- Il saisit les données de la facture dans un formulaire
- Le portail génère le XML TEIF automatiquement
- L'utilisateur signe électroniquement via son certificat (ou Mobile-ID)
- La facture est transmise et validée en temps réel
Avantages : Aucun développement, mise en production immédiate Limites : Pas d'automatisation, saisie manuelle uniquement
EDI Mode (API)
Dans le EDI Mode, votre système d'information génère les factures TEIF et les soumet automatiquement via l'API REST de TTN :
Flux d'intégration :
Votre ERP/CRM
│
▼ (génère XML TEIF)
Middleware de signature
│
▼ (XML signé)
API TTN (HTTPS/REST)
│
▼ (validation + horodatage)
Plateforme El Fatoora ──► DGI (déclaration fiscale automatique)
│
▼ (accusé de réception)
Votre système (stockage + archivage)
Endpoints API TTN (EDI Mode)
| Endpoint | Méthode | Description |
|---|---|---|
/api/v1/auth/token | POST | Obtenir un token d'accès OAuth2 |
/api/v1/invoices | POST | Soumettre une nouvelle facture |
/api/v1/invoices/{id} | GET | Récupérer le statut d'une facture |
/api/v1/invoices/{id}/ack | GET | Télécharger l'accusé de réception |
/api/v1/invoices/{id}/pdf | GET | Télécharger la version PDF |
/api/v1/invoices/search | GET | Rechercher des factures |
URL de base :
- Sandbox :
https://api-sandbox.elfatoora.tn - Production :
https://api.elfatoora.tn
Cycle de vie d'une facture
Une facture TEIF passe par plusieurs statuts tout au long de son cycle de vie :
CREATED → SIGNED → SUBMITTED → VALIDATING → VALID
│
└── INVALID (avec code d'erreur)
| Statut | Description | Action requise |
|---|---|---|
CREATED | XML généré, non encore signé | Signer le document |
SIGNED | Document signé, non encore soumis | Soumettre à l'API |
SUBMITTED | Reçu par TTN, validation en cours | Attendre |
VALIDATING | Vérification en cours (< 30 secondes) | Attendre |
VALID | Facture acceptée, archivée | Conserver l'accusé |
INVALID | Rejetée pour non-conformité | Corriger et resoumettre |
CANCELLED | Annulée par émission d'un avoir | Vérifier l'avoir associé |
Archivage des factures
La réglementation tunisienne impose une durée d'archivage minimale de 5 ans pour toutes les factures électroniques. TTN propose un service d'archivage géré avec les tarifs suivants :
| Service | Tarif |
|---|---|
| Stockage XML/données | 0,190 DT par tranche de 50 Ko |
| Copie PDF de la facture | 0,250 DT par unité |
| Copie XML de la facture | 0,250 DT par unité |
| Consultation via portail | Incluse dans l'abonnement |
| Export d'archives | Sur demande, tarif variable |
Calcul estimatif : Un fichier XML TEIF moyen pèse entre 5 et 15 Ko selon le nombre de lignes. Pour une entreprise émettant 500 factures/mois, le coût d'archivage représente environ 0,95 à 2,85 DT/mois, ce qui est négligeable.
Options d'archivage :
- Archivage TTN (recommandé) : TTN gère la conservation, la sécurité et la disponibilité
- Archivage propre : Vous conservez les fichiers XML et PDF sur vos propres serveurs, à condition de respecter les normes de sécurité DGI
- Archivage hybride : TTN + copie locale synchronisée
Exemple complet d'une facture TEIF
Voici une facture simple mais complète au format TEIF 1.8.7, pour une prestation de service avec TVA à 19% :
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:tn:gov:dgi:teif:1.8"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:tn:gov:dgi:teif:1.8 TEIF_v1.8.7.xsd">
<Header>
<InvoiceID>FAC-2026-001234</InvoiceID>
<IssueDate>2026-02-22</IssueDate>
<IssueTime>14:30:00</IssueTime>
<InvoiceTypeCode>380</InvoiceTypeCode>
<DocumentCurrencyCode>TND</DocumentCurrencyCode>
<TaxCurrencyCode>TND</TaxCurrencyCode>
<DueDate>2026-03-22</DueDate>
<Note>Facture pour services de développement web — Projet NoqtaApp v2</Note>
</Header>
<Parties>
<Supplier>
<PartyIdentification>
<ID schemeID="TN_MF">12345678A000000</ID>
</PartyIdentification>
<PartyName>
<Name>Tech Solutions SARL</Name>
</PartyName>
<PostalAddress>
<StreetName>12 Rue des Entrepreneurs</StreetName>
<CityName>Tunis</CityName>
<PostalZone>1002</PostalZone>
<CountrySubentity>Tunis</CountrySubentity>
<Country><IdentificationCode>TN</IdentificationCode></Country>
</PostalAddress>
<Contact>
<Telephone>+216 71 000 000</Telephone>
<ElectronicMail>facturation@tech-solutions.tn</ElectronicMail>
</Contact>
</Supplier>
<Customer>
<PartyIdentification>
<ID schemeID="TN_MF">98765432B000111</ID>
</PartyIdentification>
<PartyName>
<Name>Client Entreprise SA</Name>
</PartyName>
<PostalAddress>
<StreetName>45 Avenue de la République</StreetName>
<CityName>Sfax</CityName>
<PostalZone>3000</PostalZone>
<CountrySubentity>Sfax</CountrySubentity>
<Country><IdentificationCode>TN</IdentificationCode></Country>
</PostalAddress>
</Customer>
</Parties>
<InvoiceLines>
<InvoiceLine>
<ID>1</ID>
<InvoicedQuantity unitCode="HUR">20</InvoicedQuantity>
<LineExtensionAmount currencyID="TND">1000.000</LineExtensionAmount>
<Item>
<Name>Développement front-end React</Name>
<ClassifiedTaxCategory>
<ID>S</ID>
<Percent>19</Percent>
<TaxScheme><ID>TVA</ID></TaxScheme>
</ClassifiedTaxCategory>
</Item>
<Price>
<PriceAmount currencyID="TND">50.000</PriceAmount>
<BaseQuantity unitCode="HUR">1</BaseQuantity>
</Price>
</InvoiceLine>
<InvoiceLine>
<ID>2</ID>
<InvoicedQuantity unitCode="HUR">10</InvoicedQuantity>
<LineExtensionAmount currencyID="TND">400.000</LineExtensionAmount>
<Item>
<Name>Intégration API et tests</Name>
<ClassifiedTaxCategory>
<ID>S</ID>
<Percent>19</Percent>
<TaxScheme><ID>TVA</ID></TaxScheme>
</ClassifiedTaxCategory>
</Item>
<Price>
<PriceAmount currencyID="TND">40.000</PriceAmount>
<BaseQuantity unitCode="HUR">1</BaseQuantity>
</Price>
</InvoiceLine>
</InvoiceLines>
<TaxTotal>
<TaxAmount currencyID="TND">266.000</TaxAmount>
<TaxSubtotal>
<TaxableAmount currencyID="TND">1400.000</TaxableAmount>
<TaxAmount currencyID="TND">266.000</TaxAmount>
<TaxCategory>
<ID>S</ID>
<Percent>19</Percent>
<TaxScheme><ID>TVA</ID></TaxScheme>
</TaxCategory>
</TaxSubtotal>
</TaxTotal>
<LegalMonetaryTotal>
<LineExtensionAmount currencyID="TND">1400.000</LineExtensionAmount>
<TaxExclusiveAmount currencyID="TND">1400.000</TaxExclusiveAmount>
<TaxInclusiveAmount currencyID="TND">1666.000</TaxInclusiveAmount>
<PayableAmount currencyID="TND">1666.000</PayableAmount>
</LegalMonetaryTotal>
<!-- Sections Signature et QR Code ajoutées par le processus de signature -->
</Invoice>Points d'attention dans cet exemple :
- Les montants utilisent 3 décimales (format DT tunisien :
1400.000) - Le code unité
HURcorrespond aux heures (selon la norme UN/ECE 20) - Les montants de la ligne (
LineExtensionAmount) sont hors TVA TaxInclusiveAmount=TaxExclusiveAmount+TaxAmount(1400 + 266 = 1666)
Points de contrôle avant soumission
Avant de soumettre une facture TEIF, vérifiez systématiquement ces points :
- Validation XSD réussie (aucune erreur de schéma)
- Matricule fiscal de l'émetteur conforme au format
TN_MF - Somme des
LineExtensionAmount=TaxExclusiveAmount -
TaxInclusiveAmount=TaxExclusiveAmount+ totalTaxAmount - Date d'émission au format ISO 8601 (
YYYY-MM-DD) - Signature numérique valide (vérifiée avec la clé publique)
- QR code généré après la signature
Navigation dans la série
- Épisode précédent : Inscription à El Fatoora : Guide Pratique Étape par Étape
- Épisode suivant : Intégration dans votre logiciel de comptabilité (à venir)
Pour une implémentation technique complète avec des exemples de code Node.js/TypeScript, consultez notre épisode 7 : Intégration de l'API TTN pour les développeurs.
Besoin d'une intégration sur mesure de la facturation électronique dans votre système ? Noqta.tn accompagne les entreprises tunisiennes dans leur transformation numérique. Contactez notre équipe technique pour un audit gratuit de votre système existant.
Discutez de votre projet avec nous
Nous sommes ici pour vous aider avec vos besoins en développement Web. Planifiez un appel pour discuter de votre projet et comment nous pouvons vous aider.
Trouvons les meilleures solutions pour vos besoins.
Articles connexes

Intégrer l'API TTN dans Votre Système : Guide Technique Développeur
Guide technique avancé pour développeurs : intégration de l'API TTN pour la facturation électronique en Tunisie, signature TUNTRUST, génération XML TEIF et exemples de code Node.js/TypeScript.

Inscription à El Fatoora : Guide Pratique Étape par Étape
Guide complet étape par étape pour s'inscrire à la plateforme El Fatoora de Tunisie TradeNet : prérequis, documents nécessaires, portail d'adhésion et validation technique.

Construire un Agent IA Autonome avec Agentic RAG et Next.js
Apprenez a construire un agent IA qui decide de maniere autonome quand et comment recuperer des informations depuis des bases de donnees vectorielles. Un guide pratique complet avec Vercel AI SDK et Next.js, accompagne d'exemples executables.