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

Node.js Create Invoice
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

Poll Invoice Status
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 TRANSMITTEDACCEPTED 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. 1. Crée une Invoice via 3 lignes de SDK
  2. 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.