166 lines
7.7 KiB
Markdown
166 lines
7.7 KiB
Markdown
---
|
|
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é)
|
|
|
|
```yaml
|
|
# 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
|
|
|
|
1. Pré-requis : PHP 8.1+, MySQL 8 ou MariaDB 10.5+, Composer, Node 18+ (build), Nginx, Redis (optionnel mais recommandé pour le cache).
|
|
2. `git clone https://github.com/invoiceninja/invoiceninja.git && cd invoiceninja`
|
|
3. `composer install --no-dev` puis `php artisan key:generate`
|
|
4. Configurer `.env` (DB, APP_URL, MAIL, REDIS).
|
|
5. `php artisan migrate --seed` pour initialiser la base.
|
|
6. `npm ci && npm run build` pour le frontend.
|
|
7. Servir `public/` via Nginx + PHP-FPM, en redirigeant toutes les requêtes vers `index.php`.
|
|
8. 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** : `mysqldump` quotidien + `tar` de `ninja-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
|