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.

Prérequis

  • • Un compte EFact avec une clé API secrète (sk_live_xxx ou sk_test_xxx)
  • • 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 immédiatement le fichier XML UBL 2.1 conforme, et place la facture en file d'attente pour un traitement asynchrone (signature électronique et transmission DGI). Elle vous retourne instantanément un client_secret unique.

É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 PENDING SIGNEDTRANSMITTED ACCEPTED ou REJECTED. Interrogez itz.invoices.retrieveStatus(id)jusqu'à obtenir un statut final.

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