---
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
