4.4 KiB
title: Invio created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, accounting, dépenses, freelance, python, flask] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=Accounting, https://github.com/PythonicCoder/invio]
Invio 🧾
Outil léger de suivi de dépenses et de facturation minimaliste pour freelances, écrit en Python (Flask) — orienté saisie rapide et rapports mensuels.
| Métadonnée | Valeur |
|---|---|
| Site web | https://github.com/PythonicCoder/invio |
| GitHub | https://github.com/PythonicCoder/invio |
| License | MIT |
| Langage | Python (Flask) + SQLite/PostgreSQL |
| Étoiles | ⭐73 |
| Dernière MAJ | 2024-08 |
| Catégorie | cat-accounting |
Description
Invio est une application web simple écrite en Python avec le micro-framework Flask, conçue pour aider les freelances et travailleurs indépendants à suivre leurs dépenses professionnelles et à générer des factures sans la complexité d'outils plus lourds comme app-invoice-ninja ou app-akaunting. Le parti pris est la simplicité radicale : une interface épurée, peu de menus, et un workflow centré sur la saisie quotidienne de dépenses (avec catégories, montants, dates et notes).
L'application permet de créer et de gérer des clients, d'enregistrer des dépenses (avec TVA, devise, justificatif textuel), puis de générer des factures PDF à partir des prestations ou dépenses accumulées. Des tableaux de bord mensuels/annuels restituent les totaux par catégorie et par client, ce qui aide à la déclaration URSSAF, à la facturation rétroactive et au suivi de trésorerie. L'export CSV des dépenses est supporté pour réimport dans un logiciel comptable (Sage, Indy, etc.).
Le projet se distingue par sa faible empreinte : SQLite suffit en mono-utilisateur, PostgreSQL est recommandé en multi-utilisateurs. L'absence de frontend JavaScript lourd le rend utilisable sur de petits serveurs (Raspberry Pi, VPS 1 Go de RAM). La roadmap communautaire inclut un module de devis et un scan OCR de tickets via Tesseract. Idéal pour un usage personnel ou une TPE de 1 à 3 personnes.
Installation
Via Docker (placeholder à adapter)
# docker-compose.yml
services:
invio:
image: ghcr.io/pythoniccoder/invio:latest
container_name: invio
restart: unless-stopped
ports:
- "5080:5000"
environment:
SECRET_KEY: changez-moi
DATABASE_URL: sqlite:///data/invio.db
volumes:
- ./data:/app/data
Manuelle (Python ≥ 3.10)
git clone https://github.com/PythonicCoder/invio.git
cd invio
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
export FLASK_APP=invio.py
flask run --host 0.0.0.0 --port 5000
Configuration
Les principaux paramètres se règlent par variables d'environnement : SECRET_KEY (obligatoire, jeton aléatoire long), DATABASE_URL (chemin SQLite ou URL PostgreSQL postgresql://user:pwd@host/db), DEFAULT_CURRENCY (par défaut EUR), COMPANY_NAME (affiché sur les PDF). Le fichier config.py permet d'ajuster les modèles de facture (logo, mentions légales, taux de TVA par défaut).
Alternatives
- Open Source : app-akaunting (complet, mais plus lourd), app-frescom (suivi de frais), app-invoiceplane (PHP), app-firefly-iii (PFM personnel)
- Propriétaire : Indy (freelance FR), Henrri (auto-entrepreneur), FreshBooks, QuickBooks Self-Employed
Sécurité
- Changer impérativement le
SECRET_KEYpar défaut avant toute exposition réseau - Mettre le service derrière un reverse proxy HTTPS (Traefik, Caddy, Nginx + Let's Encrypt) — voir recettes-docker-compose
- Sauvegarder régulièrement le fichier SQLite ou le dump PostgreSQL
- Activer les mises à jour automatiques de l'image (Watchtower ou Diun)
- En multi-utilisateurs, créer un compte admin avec mot de passe long + 2FA si un reverse-proxy type Authelia est en place
Ressources
- Code source : https://github.com/PythonicCoder/invio
- Suivi des dépenses freelance (URSSAF) : https://www.autoentrepreneur.urssaf.fr
- Tesseract OCR (scan tickets) : https://github.com/tesseract-ocr/tesseract