7.7 KiB
title: Invoice Ninja created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, accounting, invoice, facturation, laravel, php, crm, paiements] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Accounting, https://github.com/invoiceninja/invoiceninja, https://invoiceninja.com/]
Invoice Ninja 🦊
Plateforme complète de facturation, devis, gestion clients et paiements en ligne — alternative open source à FreshBooks et Harvest, en Laravel.
| Métadonnée | Valeur |
|---|---|
| Site web | https://invoiceninja.com/ |
| GitHub | https://github.com/invoiceninja/invoiceninja |
| License | AGPL-3.0 (code) + Elastic License v2 (certaines briques) |
| Langage principal | PHP (Laravel) + Vue.js (React Native pour les apps mobiles) |
| Étoiles GitHub | ⭐2649 |
| Dernière MAJ | 2026-05-28 |
| Catégorie | cat-accounting |
Description
Invoice Ninja est une plateforme de facturation et de gestion commerciale écrite en Laravel (PHP 8+) avec un frontend Vue.js. L'outil s'adresse aux freelances, agences et PME qui ont besoin d'émettre des factures professionnelles, suivre leurs paiements, gérer leurs clients et accepter des règlements en ligne — le tout depuis une interface web élégante et une API REST documentée.
Les fonctionnalités natives couvrent la création de factures/devis/avoirs en PDF personnalisable, la gestion des clients et contacts, le suivi des temps (timesheet) et la conversion temps → facture, la gestion des dépenses et notes de frais, les rappels automatiques de paiement, la facture récurrente/abonnement, et un portail client où le destinataire peut consulter et payer ses factures. Les passerelles de paiement (Stripe, PayPal, Mollie, Checkout, Braintree, Square, GoCardless, etc.) sont intégrables via des modules et permettent l'encaissement direct depuis la facture.
Le projet est distribué sous une double licence : le code principal est AGPL-3.0 (donc libre et auto-hébergeable), mais l'éditeur a progressivement basculé certaines briques (notamment le v5 et le SDK mobile) sous Elastic License v2, ce qui interdit la revente en SaaS concurrent. Pour un auto-hébergeur, l'usage reste gratuit et conforme à l'esprit open source. La v5 (UI refondue) coexiste avec la v4 (LTS) qui reste très utilisée.
Installation
Via Docker (recommandé)
# docker-compose.yml
services:
server:
image: invoiceninja/invoiceninja:latest
container_name: invoice-ninja
restart: unless-stopped
depends_on:
db:
condition: service_healthy
ports:
- "8080:80"
environment:
- APP_URL=https://facture.example.com
- APP_KEY=base64:GénérerAvecArtisanKey:Generate
- DB_HOST=db
- DB_DATABASE=ninja
- DB_USERNAME=ninja
- DB_PASSWORD=ChangeMoiDbPass
- MAIL_HOST=smtp.example.com
- MAIL_PORT=587
- MAIL_USERNAME=facture@example.com
- MAIL_PASSWORD=ChangeMoiMailSMTP
- MAIL_FROM_ADDRESS=facture@example.com
- MAIL_FROM_NAME="Ma Société"
- PHANTOMJS_PDF_GENERATOR=false
volumes:
- ninja-data:/var/www/html/storage
- ninja-public:/var/www/html/public
- ninja-logs:/var/www/html/storage/logs
db:
image: mysql:8.0
container_name: ninja-db
restart: unless-stopped
environment:
- MYSQL_DATABASE=ninja
- MYSQL_USER=ninja
- MYSQL_PASSWORD=ChangeMoiDbPass
- MYSQL_RANDOM_ROOT_PASSWORD=ChangeMoiRootMysql
volumes:
- ninja-db:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 10
# Cron pour les relances et factures récurrentes
cron:
image: invoiceninja/invoiceninja:latest
container_name: ninja-cron
restart: unless-stopped
depends_on:
- server
entrypoint: |
sh -c 'while true; do
php /var/www/html/artisan schedule:run;
sleep 60;
done'
volumes:
ninja-data:
ninja-public:
ninja-logs:
ninja-db:
Installation manuelle
- Pré-requis : PHP 8.1+, MySQL 8 ou MariaDB 10.5+, Composer, Node 18+ (build), Nginx, Redis (optionnel mais recommandé pour le cache).
git clone https://github.com/invoiceninja/invoiceninja.git && cd invoiceninjacomposer install --no-devpuisphp artisan key:generate- Configurer
.env(DB, APP_URL, MAIL, REDIS). php artisan migrate --seedpour initialiser la base.npm ci && npm run buildpour le frontend.- Servir
public/via Nginx + PHP-FPM, en redirigeant toutes les requêtes versindex.php. - Configurer un cron :
* * * * * cd /var/www/invoiceninja && php artisan schedule:run >> /dev/null 2>&1.
Configuration
- Premier compte : créer un super-admin via
php artisan ninja:create-account --email=admin@example.com --password=.... - Personnalisation PDF : designer les templates (logos, couleurs, mentions légales FR : SIRET, TVA intracommunautaire, numéro RCS).
- Numérotation : format configurable par type de document (ex :
F{YYYY}{MM}{SEQ}pour des factures numérotées par mois). - Devises : multi-devises activable, taux de change stockés par facture (figés à l'émission).
- Paiements en ligne : configurer au moins Stripe ou Mollie dans
Settings → Payment Gateways— la clé API secrète reste côté serveur. - Espace client : activable par client, permet de consulter / payer / refuser une facture sans login tiers.
- Intégrations : Zapier, webhooks sortants, API REST v1 (très utilisée par les intégrateurs).
Alternatives
Open source
- app-akaunting — concurrent direct, plus axé comptabilité pure qu'UX facturation.
- app-invoiceplane — facturation PHP minimaliste, plus léger, sans le volet paiement en ligne aussi riche.
- app-odoo — ERP complet avec module facturation très puissant, mais lourd.
- Crater — facturation open source plus jeune, stack Node.js/React, interface moderne.
- SolidInvoice — fork/équivalent PHP pour la facturation simple.
Propriétaires
- FreshBooks — référence pour les freelances, non libre et données hébergées.
- Harvest + Forecast — suivi du temps et facturation, lissé sur le cloud.
- Wave — gratuit en ligne, modèle freemium publicitaire.
- Pennylane — français, plus axé compta + sync bancaire que facturation pure.
Sécurité
- HTTPS obligatoire : les factures portent des informations clients et des liens de paiement — à chiffrer en transit.
APP_KEY: clé de chiffrement Laravel pour les sessions/cookies — sauvegarder hors conteneur, sa perte rend les sessions illisibles.- Stockage S3 : pour les PDF de factures à fort volume, basculer le disque sur S3 (ou MinIO auto-hébergé) plutôt que le volume local.
- Sauvegardes :
mysqldumpquotidien +tardeninja-data(logos, PDF générés, documents attachés). - Rotation des clés API : Stripe/Mollie — surveiller l'usage, configurer des alertes.
- Mises à jour : suivre la v5 stable ; les montées de version impliquent souvent des migrations DB.
Ressources
- Site officiel : https://invoiceninja.com/
- Documentation : https://invoiceninja.readthedocs.io/
- Dépôt GitHub : https://github.com/invoiceninja/invoiceninja
- API REST : https://api-docs.invoiceninja.com/
- Forum communautaire : https://forum.invoiceninja.com/
- selfh.st : https://selfh.st/apps/?tag=Accounting
Pages Liées
- cat-accounting (catégorie parente)
- app-akaunting — comptabilité Laravel, plus complète
- app-invoiceplane — facturation PHP simple
- app-crater — alternative Node.js moderne
- recettes-docker-compose — templates de déploiement
- securisation-home-lab — bonnes pratiques