Files
2026-06-09 18:40:21 +02:00

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

  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

Pages Liées