Quickstart - Intégration en 15 minutes
Ce guide permet d'intégrer EFact dans une application existante, de créer une facture, puis de consulter son statut jusqu'à ACCEPTED.
En bref
Émettre une première facture électronique conforme DGI avec EFact prend environ 15 minutes : installez le SDK Node.js ou Python, configurez votre clé API, puis appelez invoices.create(). EFact génère le XML UBL 2.1, signe en XAdES et transmet à la DGI ; le statut passe à ACCEPTED en quelques secondes.
Prérequis
- • Un compte EFact avec une clé API secrète (
efact_sk_...) - • Node.js ≥ 18 (pour le SDK Node)
Étape 1 - Installer le SDK backend
Node.js / TypeScript
npm install @itzenata/efact-nodeÉtape 2 - Créer une Invoice
Node.js / TypeScript
import { EFact, CreateInvoiceRequestPaymentMethodEnum } from '@itzenata/efact-node'
const efact = new EFact(process.env.EFACT_SECRET_KEY!)
const invoice = await efact.invoices.create({
invoiceNumber: 'INV-2026-042',
invoiceDate: '2026-06-19',
currency: 'MAD',
paymentMethod: CreateInvoiceRequestPaymentMethodEnum.BankTransfer,
buyerIce: '001234567890123', // ICE - 15 chiffres
buyerName: 'Client SARL',
buyerAddress: 'Casablanca, Maroc',
lines: [
{
lineNumber: 1,
description: 'Service de conseil',
quantity: 1,
unitPrice: 12000,
vatRate: 20,
},
],
})
console.log(invoice.id, invoice.status) Ce qui se passe côté EFact : Notre API valide votre requête, génère le fichier XML UBL 2.1 conforme et appose la signature électronique XAdES de manière synchrone : la facture retournée est déjà au statut SIGNED. La transmission à la DGI se fait ensuite de manière asynchrone ; suivez-la via le statut.
Étape 3 - Consulter le statut
Node.js / TypeScript
const status = await efact.invoices.retrieveStatus(invoice.id)
if (status.status === 'ACCEPTED') {
console.log('Référence DGI :', status.dgiReference)
} else if (status.status === 'REJECTED') {
console.log('Motif de rejet :', status.dgiErrorMessage)
}Le statut passe par SIGNED → TRANSMITTED → ACCEPTED ou REJECTED. Interrogez efact.invoices.retrieveStatus(id)jusqu'à obtenir un statut final.
Simulateur DGI: la plateforme nationale d'e-facturation de la DGI n'est pas encore ouverte aux intégrations. La clairance (statuts ACCEPTED / REJECTED, référence, QR code) est aujourd'hui assurée par notre simulateur, qui reproduit le flux officiel. Le basculement vers la plateforme officielle se fera sans changement côté client. En savoir plus
Résultat attendu
En moins de 15 minutes, votre application :
- 1. Crée une Invoice via 3 lignes de SDK
- 2. Consulte le statut de la facture jusqu'à clairance DGI
Étapes suivantes
Questions fréquentes
Combien de temps faut-il pour émettre sa première facture avec EFact ?
Comptez environ 15 minutes : installez le SDK (@itzenata/efact-node ou itzenata-efact), configurez votre clé API, puis appelez invoices.create() avec les données de la facture. EFact génère le XML UBL 2.1, applique la signature et transmet à la DGI. Le statut passe à ACCEPTED en quelques secondes dans le simulateur.
De quoi ai-je besoin pour démarrer l'intégration EFact ?
Il vous faut un compte EFact avec une organisation configurée (mentions légales et certificat de signature), une clé API secrète (efact_sk_) et le SDK officiel Node.js/TypeScript. Aucune infrastructure de signature ni de transmission DGI n'est à mettre en place de votre côté.
Comment suivre le statut d'une facture après sa création ?
Après create(), la facture est PENDING puis progresse jusqu'à ACCEPTED ou REJECTED. Interrogez invoices.retrieveStatus(id) avec un intervalle de 2 à 5 secondes. Une fois ACCEPTED, vous récupérez la référence DGI et les artefacts (XML signé, PDF). En production, un webhook remplacera le polling.