AutoFacture DZ
Outil de facturation conçu pour les auto-entrepreneurs algériens : des indépendants qui doivent émettre des factures conformes sans passer par des logiciels de comptabilité pensés pour les grandes entreprises.
Le créneau
L'Algérie a instauré le statut d'auto-entrepreneur il y a quelques années : il permet aux freelances et aux petits commerçants d'exercer légalement avec des obligations fiscales simplifiées. La contrepartie : chaque transaction doit faire l'objet d'une facture conforme, et les déclarations trimestrielles exigent des données structurées.
La plupart des auto-entrepreneurs se rangent dans l'une de ces trois catégories :
- Les freelances (développeurs, designers, traducteurs) qui facturent des clients à l'international
- Les petits commerçants qui vendent des marchandises localement
- Les prestataires de services (photographes, consultants, professeurs particuliers) qui facturent des particuliers
Les exigences de facturation sont précises :
- La numérotation des factures doit être séquentielle (aucun trou autorisé)
- Certaines mentions sont obligatoires : NIF (numéro d'identification fiscale), numéro de la carte d'auto-entrepreneur, nom, nom du client, date, lignes de prestation avec montants
- L'auto-entrepreneur ne facture pas la TVA, et la facture doit l'indiquer
- Les déclarations demandent un chiffre d'affaires qui correspond exactement aux factures
La plupart des auto-entrepreneurs utilisent soit des modèles Word (sources d'erreurs, numérotation non séquentielle), soit des outils de facturation génériques qui ne connaissent pas les règles fiscales algériennes. Les rares logiciels de comptabilité disponibles sont conçus pour de véritables sociétés et coûtent plus cher que ce que gagnent la plupart des auto-entrepreneurs.
Ce que fait AutoFacture
Vous saisissez une seule fois les informations de votre activité (NIF, numéro de carte d'auto-entrepreneur, nom, adresse, activité), vous ajoutez les informations du client et les lignes de facture, et le système génère une facture PDF conforme. Il suit aussi votre chiffre d'affaires trimestriel et prépare le récapitulatif de déclaration.
Génération des factures
Le pipeline de génération PDF :
- L'utilisateur remplit le formulaire de facture (client, lignes, notes)
- Le système valide tous les champs obligatoires
- Un numéro de facture est attribué à partir d'un compteur séquentiel (par utilisateur et par année :
INV-2026-0001) - Un template Blade génère la facture en HTML
- Chrome headless (via Puppeteer) convertit le HTML en PDF
- Le PDF est stocké et le lien de téléchargement est renvoyé
Pourquoi Puppeteer plutôt que dompdf ou TCPDF ? Parce que le modèle de facture contient du texte en arabe dans l'en-tête (la raison sociale et l'adresse en arabe), et que les bibliothèques PDF en PHP gèrent mal l'arabe et l'écriture de droite à gauche (RTL). Puppeteer l'affiche parfaitement, puisqu'il utilise le même moteur de rendu que Chrome.
Le modèle reprend les mentions obligatoires d'une facture d'auto-entrepreneur :
┌─────────────────────────────────────────────┐
│ [Business Logo] [Business Name AR/FR] │
│ NIF: xxxxxxx Carte AE: xxxxxxx │
│ Address line 1, Address line 2 │
├─────────────────────────────────────────────┤
│ Invoice #: INV-2026-0042 Date: 2026-08-15│
│ Client: Client Name │
│ Client NIF: xxxxxxx │
├─────────────────────────────────────────────┤
│ Description Qty Unit Price Total │
│ ───────────────────────────────────────── │
│ Web development 1 15,000 DA 15,000│
│ Hosting (1 month) 1 2,000 DA 2,000│
├─────────────────────────────────────────────┤
│ Total: 17,000 DA │
│ TVA non applicable (auto-entrepreneur) │
├─────────────────────────────────────────────┤
│ Payment terms: Net 30 days │
│ Bank: BNA Account: xxxxxxxxxxx │
└─────────────────────────────────────────────┘
Calcul de l'impôt
Le régime de l'auto-entrepreneur remplace les impôts habituels par un impôt forfaitaire unique sur le chiffre d'affaires déclaré, dans la limite d'un plafond annuel. Le taux et le plafond sont des paramètres, pas du code : ils sont fixés par les lois de finances et peuvent changer d'une année à l'autre.
Le calcul s'exécute à chaque enregistrement de facture, et non au moment de la déclaration. L'utilisateur voit ainsi en permanence ce qu'il doit au fisc et peut s'organiser en conséquence.
Suivi du chiffre d'affaires
Le tableau de bord affiche :
- Le chiffre d'affaires mensuel (mois en cours et mois précédents)
- Le chiffre d'affaires trimestriel cumulé, comparé au seuil d'imposition
- L'impôt dû (calculé en temps réel)
- Le nombre de factures (par mois et au total)
- Les paiements en attente (factures marquées comme impayées)
Le récapitulatif de déclaration est généré automatiquement : un tableau du chiffre d'affaires par mois, du taux applicable et de l'impôt calculé. L'utilisateur peut l'imprimer ou reporter les chiffres dans le formulaire de déclaration officiel.
Multi-devises
Beaucoup d'auto-entrepreneurs facturent des clients étrangers en EUR ou en USD. Le système :
- Enregistre la devise et le montant d'origine sur la facture
- Conserve le taux de change en vigueur au moment de la création de la facture (taux officiel de la Banque d'Algérie)
- Affiche la contre-valeur en dinars (DZD) pour le calcul de l'impôt
- Fait figurer sur le PDF à la fois le montant d'origine et sa contre-valeur en DZD
Détails techniques
Stack : Laravel + Inertia.js + Vue.js + Tailwind CSS
La génération des PDF a été la partie la plus intéressante techniquement. J'ai essayé trois approches :
- dompdf : bibliothèque PHP qui convertit du HTML en PDF. Échec sur le texte arabe (affiché sous forme de carrés) et sur les mises en page CSS complexes
- TCPDF : meilleure prise en charge de l'arabe, mais support CSS très limité. Le rendu de la facture ne ressemblait en rien à la maquette
- Puppeteer (Chrome headless) : rend le template HTML exactement comme prévu, gère parfaitement l'arabe et le RTL, et prend en charge toutes les fonctionnalités CSS
L'approche Puppeteer nécessite une instance de Chrome headless sur le serveur. J'utilise puppeteer avec une image Docker personnalisée qui embarque Chrome. La génération prend environ 2 à 3 secondes par facture, ce qui reste acceptable pour une action déclenchée par l'utilisateur.
Base de données : le schéma est simple : users, clients, invoices, invoice_items, tax_settings. La partie intéressante, c'est la numérotation des factures : ni trou ni doublon, même si deux factures sont créées au même instant. Chaque utilisateur a une ligne de compteur par année, verrouillée dans la transaction qui crée la facture :
DB::transaction(function () use ($user, $data) {
// One counter row per user and year, locked for the duration of the transaction.
$counter = InvoiceCounter::where('user_id', $user->id)
->where('year', now()->year)
->lockForUpdate()
->firstOrFail();
$counter->increment('last_number');
return $user->invoices()->create([
...$data,
'number' => sprintf('INV-%d-%04d', $counter->year, $counter->last_number),
]);
});
La seconde requête attend que la première soit validée, puis prend le numéro suivant. Si l'insertion échoue, la transaction est annulée et le numéro n'est jamais consommé : aucun trou.
Résultats
- Utilisé par plus de 150 auto-entrepreneurs
- Plus de 2 000 factures conformes générées
- Temps moyen de création d'une facture : moins de 2 minutes
- Aucun problème de conformité signalé
- Disponibilité de 99,8 %
Besoin d'un logiciel sur mesure ?
Vous êtes auto-entrepreneur ou dirigez une petite entreprise et vous avez besoin d'un outil adapté à votre activité ? Découvrez mes services ou contactez-moi pour en discuter.
Vous avez un projet similaire ?
Expliquez-moi où vous en êtes et ce qui vous bloque. Réponse rapide sur WhatsApp, devis gratuit.