--- title: InvoiceShelf created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, accounting, invoiceshelf, invoicing, php, laravel, vue, crater-fork, docker] confidence: high contested: false sources: - https://selfh.st/apps/?tag=accounting - https://github.com/InvoiceShelf/InvoiceShelf - https://invoiceshelf.com/ --- # 🧾 InvoiceShelf > Fork moderne de **Crater Invoice**, solution open-source complète de **facturation, devis, dépenses et paiements** pour freelances et PME, écrite en Laravel + Vue.js. | Métadonnée | Valeur | | :--- | :--- | | **Site web** | https://invoiceshelf.com/ | | **GitHub** | https://github.com/InvoiceShelf/InvoiceShelf | | **License** | AGPL-3.0 | | **Langage** | PHP (Laravel 13) / Vue.js 3 | | **Étoiles** | ⭐ 1 700 (≈352 sur selfh.st) | | **Dernière MAJ** | 2026-06-04 | | **Catégorie** | [[cat-accounting]] | ## 📝 Description **InvoiceShelf** est né en 2021 du **fork de Crater Invoice** lorsque le mainteneur principal a cessé d'assurer les releases. La communauté a repris le flambeau pour proposer une solution de facturation moderne, sous AGPL-3.0, bâtie sur **Laravel 13** (PHP 8.4+) côté back et **Vue.js 3 + Vite** côté front. Le projet a depuis accumulé **132 contributeurs**, plus de 1 700 étoiles et 17 releases stables. Fonctionnellement, InvoiceShelf couvre l'intégralité du cycle de vente : gestion de **clients** (multi-adresses, multi-contacts), **devis** convertibles en factures, **factures récurrentes**, **paiements** partiels, **dépenses** catégorisées, **portail client** en marque blanche (le client voit ses factures et les règle sans créer de compte), **multi-sociétés** (plusieurs entités juridiques sur une même instance) et **champs personnalisés** sur les documents. Les exports PDF sont générés via des templates Blade configurables. L'upgrade récent vers **Laravel 13** et **Node 24** a modernisé la stack : ESLint 10, Vite 8 (Rolldown), Tailwind 4 avec configuration CSS-based. La roadmap 2026 inclut l'intégration **Stripe** pour l'acceptation directe des paiements et un **marketplace de templates**. Les apps mobiles (React Native) sont annoncées pour Android et iOS. Idéal pour : « Je veux une alternative open-source à Invoice Ninja, auto-hébergée, sans limite de clients, avec un vrai portail client et la possibilité d'ajouter mes propres champs sur les factures ». ## 🚀 Installation ### Option 1 : Docker Compose (recommandé) ```yaml # docker-compose.yml version: "3.8" services: app: image: invoiceninja/invoiceshelf:latest container_name: invoiceshelf-app restart: unless-stopped environment: APP_URL: https://invoiceshelf.example.com APP_KEY: ${APP_KEY} DB_HOST: db DB_DATABASE: invoiceshelf DB_USERNAME: invoiceshelf DB_PASSWORD: invoiceshelf REDIS_HOST: redis MAIL_MAILER: smtp MAIL_HOST: smtp.example.com MAIL_PORT: 587 MAIL_USERNAME: ${MAIL_USERNAME} MAIL_PASSWORD: ${MAIL_PASSWORD} MAIL_ENCRYPTION: tls volumes: - ./storage:/var/www/html/storage depends_on: - db - redis networks: [invoiceshelf] db: image: mysql:8.0 container_name: invoiceshelf-db restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: invoiceshelf MYSQL_USER: invoiceshelf MYSQL_PASSWORD: invoiceshelf volumes: - ./data/db:/var/lib/mysql networks: [invoiceshelf] redis: image: redis:7-alpine container_name: invoiceshelf-redis restart: unless-stopped networks: [invoiceshelf] nginx: image: nginx:alpine container_name: invoiceshelf-nginx restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf - ./certs:/etc/nginx/certs depends_on: - app networks: [invoiceshelf] networks: invoiceshelf: driver: bridge ``` `APP_KEY` se génère avec `docker run --rm invoiceninja/invoiceshelf php artisan key:generate --show`. L'installeur web se lance ensuite sur `/install`. ### Option 2 : Installation manuelle (LAMP) Prérequis : PHP 8.4+ avec extensions `bcmath, curl, gd, intl, mbstring, mysql, xml, zip`, MySQL 8 / MariaDB 10.11+, Node 24+, Composer 2. Cloner le repo, `composer install`, `npm install && npm run build`, configurer `.env`, `php artisan migrate --seed`, configurer Apache/Nginx pour pointer vers `public/`. Voir la [documentation d'installation](https://docs.invoiceshelf.com/installation.html). ## ⚙️ Configuration - **Multi-sociétés** : crée plusieurs entités juridiques, chacune avec son logo, son SIRET, son compte bancaire. - **Devises** : une devise par société, conversion automatique (taux stocké en base) à l'édition de facture. - **Taxes** : TVA, GST, taxes composées (TVA + surcharge), supports de la facturation électronique. - **Templates PDF** : modifiables via Blade, plusieurs livrés par défaut. - **Portail client** : URL dédiée par client (`/customer/portal/{token}`), aucune création de compte. - **Webhooks sortants** : notifier un ERP/CRM à chaque paiement/facture émise. - **Mises à jour in-app** : à partir de la v2.0, l'UI détecte les versions et bloque la mise à jour si PHP n'est pas compatible. - **Authentification** : email/password par défaut, OAuth2 (Google, GitHub) en option. ## 🔄 Alternatives ### Open Source - [[app-crater]] — Le projet parent (peu maintenu, InvoiceShelf est la branche vivante). - [[app-solidinvoice]] — PHP/Symfony 7, facturation pour freelances, plus léger. - [[app-akaunting]] — Comptabilité PHP, plus large fonctionnellement. - **Invoice Ninja** (v5) — Concurrent direct, modèle source-available, forké d'anciennes versions d'INV. - **Crater (original)** — Encore en ligne mais quasi-abandonné. - [[app-bigcapital]] — Comptabilité double + stock, plus ambitieux. ### Propriétaires (ce que cette app remplace) - **Invoice Ninja Cloud** — Version SaaS fermée, Pro à $20/mois. - **FreshBooks** — Facturation SaaS pour freelances. - **Wave Invoicing** — Freemium fermé. - **Zoho Invoice** — Suite Zoho, fermé. - **QuickBooks Simple Start** — Facturation de base, fermé. ## 🔒 Sécurité - **HTTPS obligatoire** : via Traefik ou Caddy en frontal, sinon Nginx avec Let's Encrypt. - **`APP_KEY` critique** : 32+ caractères, jamais commit, rotation = perte de toutes les sessions. - **2FA** : activable pour les comptes admin (TOTP + recovery codes). - **CSRF/XSS** : protection native Laravel, ne pas la désactiver. - **Permissions fichiers** : `storage/` et `bootstrap/cache/` en 775 pour l'utilisateur web. - **Mise à jour** : suivre les releases, l'updateur intégré vérifie la compatibilité PHP. - **Logs** : `storage/logs/laravel.log` à monitorer, intégration [[app-glances]]/[[app-prometheus]] possible. - **Audit** : table `audit_logs` pour tracer les connexions et modifications critiques. ## 📚 Ressources - Site officiel : https://invoiceshelf.com/ - Documentation utilisateur : https://docs.invoiceshelf.com/ - Guide développeur : https://docs.invoiceshelf.com/developer-guide.html - API : https://api-docs.invoiceshelf.com/ - Repository : https://github.com/InvoiceShelf/InvoiceShelf - Discord : https://discord.gg/eHXf4zWhsR - Crowdin (traductions) : https://crowdin.com/project/invoiceshelf - App mobile (en cours) : https://github.com/InvoiceShelf/mobile ## 🔗 Pages Liées - [[cat-accounting]] — Catégorie parente - [[app-crater]] — Projet parent (peu actif) - [[app-solidinvoice]] — PHP/Symfony 7 plus léger - [[app-akaunting]] — Comptabilité PHP plus large - [[app-bigcapital]] — Comptabilité double + stock - [[app-traefik]] — Reverse proxy HTTPS - [[recettes-docker-compose]] — Templates Docker - [[securisation-home-lab]] — Bonnes pratiques