Aller au contenu principal

Analyses financières en temps réel avec Fava et Beancount

Introduction

Beancount est un système de comptabilité en partie double open-source qui utilise des fichiers texte brut comme grand livre. Il met l'accent sur la simplicité, la transparence et la flexibilité dans le suivi des finances. Fava est une interface web puissante pour Beancount, offrant un environnement interactif pour consulter les rapports, les visualisations et gérer votre grand livre. Dans ce rapport, nous explorons les capacités fondamentales de Beancount et Fava, et comment réaliser des analyses financières en temps réel ou quasi réel avec ces outils. Nous couvrons des conseils de configuration pour l'automatisation et l'actualisation des données, les fonctionnalités de visualisation de Fava (pour des vues instantanées des flux de trésorerie et la détection de tendances), l'intégration avec des tableaux de bord externes (Grafana, Metabase, etc.), des exemples de tableaux de bord personnalisés et de plugins, des cas d'utilisation pour les finances personnelles et les petites entreprises, des comparaisons avec d'autres plateformes (Power BI, QuickBooks), ainsi que les avantages et inconvénients de l'utilisation de Fava+Beancount pour obtenir des informations basées sur les données.

analytics

Capacités fondamentales de Beancount et Fava

Beancount (Moteur de comptabilité en texte brut)

  • Grand livre en partie double en texte brut : Beancount stocke les transactions dans un seul fichier texte .beancount (ou plusieurs fichiers inclus ensemble). Chaque transaction doit être équilibrée (total des débits = total des crédits) entre les comptes, garantissant l'intégrité comptable. Le format texte brut signifie que vos données sont lisibles par l'homme, contrôlables par version et ne sont verrouillées par aucun fournisseur.
  • Comptes hiérarchiques et flexibles : Vous pouvez définir n'importe quel compte (par exemple Assets:Bank:Checking, Expenses:Food:Coffee) dans une hiérarchie. Beancount n'impose pas de structure rigide pour votre plan comptable, il s'adapte donc aux finances personnelles, à la comptabilité des petites entreprises, aux investissements, etc. – il est « flexible : il fonctionne pour les finances personnelles, la tenue de livres de petites entreprises, la crypto, les investissements boursiers, et plus encore. »
  • Devises et matières premières multiples : Beancount offre une prise en charge de premier ordre pour plusieurs devises et matières premières (par exemple, actions, crypto). Vous pouvez enregistrer des transactions dans différentes devises, définir des taux de change (directives de prix) et suivre les bases de coût. Il peut produire des rapports « au coût » ou « à la valeur de marché » si les données de prix sont fournies. Cela le rend idéal pour les portefeuilles et la finance internationale.
  • Contrôles et équilibres automatisés : Le système prend en charge les assertions de solde (vous pouvez déclarer ce que devrait être le solde d'un compte à une date donnée, et Beancount signalera une erreur s'il ne correspond pas) et les transactions d'équilibrage pour la clôture des comptes. Il prend également en charge les écritures d'ouverture/clôture des capitaux propres et le calcul des bénéfices non distribués pour les clôtures de période. Ces outils garantissent la cohérence de vos comptes et permettent de détecter les erreurs rapidement.
  • Moteur de requête et de reporting puissant : Beancount est doté d'un langage de requête BQL (Beancount Query Language) et d'outils en ligne de commande comme bean-balance, bean-register et bean-query pour générer des rapports. Vous pouvez interroger le grand livre pour des rapports personnalisés (par exemple, liste des dépenses par bénéficiaire, flux de trésorerie pour une période) – en traitant essentiellement le grand livre comme une base de données. Il est rapide même avec des milliers de transactions et peut exporter vers CSV ou directement vers Excel/LibreOffice (avec des modules optionnels).
  • Extensibilité via des plugins : Beancount est écrit en Python et permet l'utilisation de plugins personnalisés pour étendre ses fonctionnalités. Les plugins peuvent appliquer des règles supplémentaires ou des calculs lors du traitement du fichier. (Par exemple, il existe des plugins pour gérer les lots fiscaux ou pour s'assurer qu'aucun achat ne manque de coût.) Le système de plugins et l'API Python permettent aux utilisateurs avancés de scripter des comportements personnalisés ou d'intégrer Beancount à d'autres systèmes.
  • Importateurs pour les données externes : Une fonctionnalité pratique clé est le framework d'ingestion de Beancount pour l'importation de données (par exemple, à partir de relevés bancaires). Vous pouvez écrire ou utiliser des plugins d'importation qui analysent les formats CSV, OFX, les relevés PDF, etc., et les convertissent en entrées Beancount. C'est essentiel pour l'automatisation.
  • Auditable et adapté au contrôle de version : Puisqu'il s'agit de texte brut, vous pouvez conserver votre grand livre dans Git ou un autre système de contrôle de version. Chaque modification est transparente et vous disposez d'un historique complet des éditions. Cela rend les audits ou la révision des changements très simples (de nombreux utilisateurs valident les modifications quotidiennes dans un dépôt Git, fournissant un journal infalsifiable de toutes les entrées financières). Ce niveau de transparence est un différenciateur majeur par rapport aux logiciels de comptabilité fermés – « pas de dépendance vis-à-vis d'un SaaS — juste une comptabilité propre et transparente avec un reporting puissant. »

Fava (Interface web pour Beancount)

  • Interface utilisateur web interactive : Fava fournit un serveur web local qui transforme votre grand livre Beancount en une interface riche. Il affiche les rapports de base (compte de résultat, bilan, etc.), les registres de compte et les journaux dans le navigateur avec des commandes interactives. L'interface est dynamique et conviviale par rapport à la ligne de commande. Il suffit de lancer fava votrefichier.beancount pour obtenir une application web pour vos comptes.
  • Graphiques et diagrammes intégrés : Fava génère des graphiques pour aider à visualiser vos données. Par exemple, il inclut un graphique linéaire du Patrimoine net au fil du temps, des graphiques en barres pour les revenus par rapport aux dépenses mensuelles, et des diagrammes circulaires ou en arborescence pour la répartition des dépenses. Ces visuels s'actualisent avec vos données et prennent en charge différentes vues (par exemple, « au coût » vs « valeur de marché » pour les investissements).
  • Filtrage et recherche : En haut des pages de Fava, une barre de filtre vous permet de segmenter et d'analyser vos données en temps réel. Vous pouvez filtrer par période (année, trimestre, mois), par expression régulière de compte, par bénéficiaire, par narration ou par étiquettes/liens. Cela facilite l'inspection des données en temps réel – par exemple, filtrer rapidement sur « Tag=Voyage » et « Year=2025 » pour voir toutes les dépenses de voyage en 2025, avec les totaux. L'interface prend en charge des requêtes complexes via cette barre ou via la page Query.
  • Prise en charge de fichiers multiples et consolidation : Fava peut charger plusieurs fichiers Beancount simultanément (utile si vous séparez vos grands livres) et basculer entre eux. Il peut également les consolider si nécessaire (par exemple, visualiser ensemble les grands livres personnels et professionnels).
  • Saisie et modification des données : Fava n'est pas seulement en lecture seule — il dispose d'un éditeur et d'un formulaire de saisie de transactions. Vous pouvez ajouter de nouvelles transactions via un formulaire web (cela insérera l'entrée dans votre fichier .beancount). Vous pouvez également ouvrir le fichier source dans un éditeur externe depuis Fava. Fava prend même en charge les raccourcis clavier de « style Gmail » pour les utilisateurs expérimentés.
  • Rapports et exploration détaillée des comptes : Fava fournit les rapports comptables standards : Compte de résultat (Pertes et Profits), Bilan, Balance de vérification et une liste des avoirs pour les investissements. Le Bilan et le Compte de résultat sont interactifs – vous pouvez cliquer sur un compte pour explorer ses détails, ou basculer entre la vue au coût et à la valeur de marché pour les actifs. Fava affiche également les « plus-values latentes » pour les investissements si vous disposez des données de prix.
  • Gestion des documents : Si vous joignez des reçus ou des relevés, Fava aide à les organiser. Beancount a une notion de dossier de documents, et Fava vous permet de glisser-déposer des fichiers sur des comptes ou des transactions – il les stockera et ajoutera une entrée de document dans votre grand livre.
  • Personnalisation via des extensions : Fava peut être étendu avec des plugins (écrits en Python) pour ajouter de nouveaux rapports ou fonctionnalités. Certaines extensions sont intégrées (comme un rapport de liste de portefeuille pour les investissements). L'architecture de Fava permet d'injecter de nouvelles pages, et même du JavaScript personnalisé, via son API d'extension.
  • Performance : Fava est efficace – il recharge les données en mémoire et sert les pages rapidement. L'analyse syntaxique sous-jacente de Beancount est très rapide (optimisée en C++ dans la dernière version), de sorte que même les grands livres volumineux se chargent en une seconde ou deux. En pratique, Fava peut gérer des grands livres personnels s'étalant sur plusieurs années sans difficulté.
  • Accès web et mobilité : En exécutant Fava sur un serveur ou même sur votre ordinateur portable, vous pouvez accéder à vos finances depuis n'importe quel navigateur. Certains utilisateurs hébergent Fava sur un serveur privé ou un Raspberry Pi afin de pouvoir consulter leurs finances en déplacement (en le sécurisant derrière un mot de passe ou un VPN). Cela vous offre essentiellement une « application web » auto-hébergée pour vos finances, sans confier vos données à un tiers.

En résumé, Beancount offre une base solide pour une comptabilité transparente basée sur le texte, avec des règles de partie double rigoureuses et une prise en charge multidevise. Fava s'appuie sur cette base en offrant une interface accessible avec des informations immédiates (rapports, graphiques) et la possibilité d'interagir avec vos données. Ensemble, ils forment un système de comptabilité et d'analyse hautement flexible que vous contrôlez de bout en bout.

Analyses en temps réel (ou quasi réel) avec Beancount & Fava

L'obtention d'analyses en temps réel ou en quasi réel avec Beancount et Fava implique l'automatisation du flux de données dans votre grand livre et de s'assurer que les outils affichent des informations à jour. Par défaut, Beancount fonctionne par lots (vous ajoutez des entrées au fichier, puis vous consultez les rapports), et Fava détecte les modifications et nécessite un rafraîchissement. Cependant, avec une configuration adéquate, vous pouvez optimiser les mises à jour pour que les nouvelles transactions et les changements apparaissent presque instantanément.

Détection des modifications de fichiers : Fava surveille le fichier du grand livre pour détecter les changements. Si vous modifiez le fichier .beancount (ou les fichiers inclus) dans un éditeur, Fava affichera une bannière « Changements détectés – cliquez pour recharger ». En cliquant (ou en appuyant sur recharger), il recharge les données et actualise la vue. En pratique, ce rechargement est très rapide (généralement moins d'une seconde pour les grands livres classiques). Cela signifie que Fava peut servir de tableau de bord en direct si votre fichier de grand livre est mis à jour fréquemment. (En mode debug, Fava peut même se recharger automatiquement lors de modifications de fichiers, bien que par défaut, il attende la confirmation de l'utilisateur pour éviter d'interrompre votre consultation.)

Pipeline d'importation et de mise à jour continue : Pour obtenir des données en temps réel, vous devez automatiser l'ajout de transactions au fichier Beancount. Il existe quelques stratégies courantes :

  • Tâches d'importation planifiées (Cron) : De nombreux utilisateurs configurent une tâche cron (ou une tâche planifiée) pour récupérer périodiquement les nouvelles transactions auprès des institutions financières (par exemple chaque nuit, ou chaque heure) et les ajouter au grand livre. Par exemple, vous pourriez utiliser les plugins d'importation de Beancount pour récupérer les dernières transactions bancaires via une API ou un téléchargement OFX. Un utilisateur de Beancount a mis en place un pipeline d'automatisation tel que ses comptes se mettent à jour d'eux-mêmes : « voir mon livre de comptes se mettre à jour tout seul sans que je n'y touche, dans un format ouvert, m'apporte une joie pure ». Cela a été réalisé en se connectant aux APIs bancaires et en planifiant des mises à jour régulières. Des outils comme bean-fetch (pour l'OFX) ou des scripts Python personnalisés utilisant des APIs bancaires (par exemple Plaid) peuvent s'exécuter selon un calendrier et écrire de nouvelles entrées dans le grand livre. Après chaque importation planifiée, si Fava est en cours d'exécution, il vous suffit de rafraîchir Fava pour voir les nouvelles données.

  • Observateurs de fichiers et déclencheurs (Triggers) : Au lieu de calendriers basés sur le temps, vous pouvez utiliser des observateurs de fichiers pour réagir à des événements. Par exemple, si votre banque peut vous envoyer un relevé quotidien par e-mail ou si vous déposez un CSV dans un dossier, un script pourrait détecter ce fichier (en utilisant inotify sur Linux ou équivalent) et lancer immédiatement la routine d'importation, puis signaler à Fava de recharger. Bien que Fava ne prenne pas encore en charge le « push » d'un rechargement en direct vers le navigateur, vos données seraient au moins mises à jour de sorte que la prochaine fois que vous consulterez la page ou cliquerez sur recharger, elles soient actuelles. Certains projets communautaires vont plus loin : pour ledger (un cousin de Beancount), un utilisateur a créé un petit serveur qui expose les données de ledger à Grafana en temps réel, montrant qu'une approche similaire peut être adoptée avec Beancount – essentiellement en construisant un démon qui alimente vos tableaux de bord en continu.

  • Intégration directe aux APIs : Au lieu de passer par des fichiers, les utilisateurs avancés peuvent se connecter directement aux APIs bancaires (comme Plaid ou les APIs régionales d'Open Banking) pour extraire fréquemment les transactions. Une personne motivée peut scripter des importations « en direct » dans une boucle (avec une limitation de débit appropriée) – en interrogeant concrètement la banque pour obtenir de nouvelles données toutes les quelques minutes. Rien ne vous empêche de « vous inscrire à l'API Plaid et de faire la même chose [automatisation] localement ». Chaque nouvelle transaction peut être ajoutée au fichier Beancount au fur et à mesure de son arrivée. Avec cette approche, Fava devient véritablement un tableau de bord en temps réel pour vos comptes, rivalisant avec le flux à jour des applications commerciales.

Rafraîchissement des données dans Fava : Une fois vos données mises à jour, faire en sorte que Fava les affiche est simple : un rafraîchissement du navigateur (F5) ou un clic sur la bannière de rechargement chargera le dernier état du grand livre. Si vous préférez ne même pas cliquer, l'exécution de Fava avec --debug active un rechargement automatique pour le développement d'extensions, que certains utilisent pour forcer le rechargement immédiat des pages lors de modifications. Alternativement, si vous construisez un front-end personnalisé, vous pourriez lui faire interroger une petite API qui renvoie le dernier solde ou autre du grand livre selon un calendrier.

Calculs instantanés : La rapidité d'analyse de Beancount signifie que même si vous mettez à jour votre fichier de grand livre toutes les quelques minutes, le délai entre la récupération des données → mise à jour du fichier → rechargement de Fava est minime. Par exemple, un utilisateur note que le rechargement de Fava après l'édition du fichier « est à peine perceptible... certainement moins d'une seconde » pour des grands livres de taille raisonnable. Ainsi, vous pouvez garder une fenêtre Fava ouverte et appuyer périodiquement sur rafraîchir pour simuler un tableau de bord en direct. (Pour une expérience véritablement en direct, on pourrait concevoir un petit script pour rafraîchir automatiquement le navigateur ou utiliser la fonction de rafraîchissement toutes les N secondes du navigateur.)

Rapprochement et alertes : Pour faire confiance aux données en temps réel, vous voulez également rapprocher les soldes fréquemment. Beancount facilite cela avec les assertions de solde et un indicateur « à jour ». En fait, Fava propose des indicateurs de couleur à côté des comptes si vous les marquez avec une certaine métadonnée (par exemple, vous pouvez marquer un compte avec la métadonnée fava-uptodate et Fava le colorera en rouge / jaune / vert selon que la dernière entrée est une vérification de solde récente ou non). Cela peut être utilisé pour voir rapidement si le solde d'un compte dans le grand livre correspond au dernier relevé de la banque. Dans une configuration en quasi temps réel, vous pourriez automatiser les vérifications quotidiennes du solde (ainsi, chaque matin, le grand livre contient le solde de clôture de la veille de la banque pour chaque compte). L'indicateur de Fava vous dirait alors si votre auto-importation a manqué quelque chose ou s'il y a une divergence, vous donnant la certitude que les données « en direct » que vous voyez sont exactes.

Exemple d'automatisation : Supposons que vous souhaitiez des mises à jour quotidiennes de vos flux de trésorerie. Vous pourriez configurer une tâche cron pour s'exécuter à 3 h du matin chaque nuit : elle exécute un script Python qui utilise l'API de votre banque pour récupérer les transactions de la veille, les écrit dans import_today.beancount, puis ajoute ce fichier à votre grand livre principal. Elle écrit également une assertion de solde pour la fin de la journée. À votre réveil, vous ouvrez Fava – il affiche toutes les transactions jusqu'à hier, et vous voyez les revenus / dépenses du mois en cours mis à jour. Si vous effectuez une dépense pendant la journée, vous pouvez l'ajouter manuellement (via le formulaire de nouvelle transaction de Fava sur votre téléphone, par exemple), ou attendre l'importation nocturne. Cette approche hybride (principalement automatisée, avec possibilité d'ajout manuel ponctuel) donne une image proche du temps réel. Une autre approche consiste à laisser la page Journal de Fava ouverte et à l'utiliser comme un registre : au fur et à mesure que vous dépensez, vous enregistrez rapidement la transaction (comme si vous remplissiez un chéquier) – vous êtes alors le flux en temps réel. C'est plus manuel, mais certains utilisateurs apprécient la prise de conscience que cela apporte. Pour des mises à jour véritablement en streaming sans étapes manuelles, vous devrez investir dans le scripting et éventuellement utiliser des APIs tierces comme mentionné précédemment.

En résumé, en combinant l'automatisation de l'importation de Beancount avec le rafraîchissement rapide de Fava, vous pouvez obtenir des données financières en quasi temps réel. Il n'est peut-être pas aussi simple qu'un clic de bouton d'obtenir le même niveau de flux en direct qu'un service comme QuickBooks (qui récupère automatiquement les flux bancaires), mais c'est possible – et surtout, vous conservez le contrôle total et la transparence du processus. Comme l'a noté un partisan de la comptabilité en texte brut, un petit effort initial peut donner un système automatisé qui est « bien meilleur que les solutions commerciales, et bien plus flexible et extensible ». Dans la section suivante, nous verrons comment les capacités de visualisation de Fava vous permettent de donner immédiatement du sens à ces données à jour, transformant des transactions brutes en informations exploitables.

Capacités de visualisation dans Fava (flux de trésorerie, tendances, inspection en temps réel)

(GitHub - beancount/fava : Fava - interface web pour Beancount) Le rapport du compte de résultat de Fava (dans l'interface utilisateur web) prend en charge des visualisations riches comme les treemaps (illustrées) et les graphiques en rayons de soleil pour un aperçu rapide de la composition des revenus et des dépenses. Dans cette treemap, chaque rectangle représente une catégorie de dépenses, dimensionnée selon son montant — vous pouvez voir instantanément que le Loyer (gros bloc vert) domine les dépenses. La barre de filtrage supérieure et les commandes (en haut à droite) permettent de modifier la devise, le type de graphique et la période (par exemple, l'affichage des données mensuelles). Fava propose également des graphiques linéaires (par exemple, la valeur nette au fil du temps) et des graphiques à barres (par exemple, revenus vs dépenses par mois) pour aider à repérer les tendances dans vos données financières.

L'un des plus grands atouts de Fava est sa capacité à transformer instantanément les données du grand livre en rapports visuels et interactifs. Dès que le grand livre est chargé, Fava génère des graphiques qui facilitent la compréhension des flux de trésorerie et des tendances en un coup d'œil :

  • Treemap/Sunburst des revenus et dépenses : Sur la page du compte de résultat, Fava peut afficher vos revenus et vos dépenses sous forme de diagramme treemap (carte proportionnelle) ou sunburst (rayons de soleil). Ces outils sont excellents pour une visualisation des flux de trésorerie « en un coup d'œil ». Par exemple, si vos dépenses mensuelles sont affichées sous forme de treemap, la surface de chaque rectangle correspond à l'ampleur de chaque catégorie de dépenses. Les grands blocs montrent immédiatement où va la majeure partie de votre argent (par exemple, loyer ou hypothèque, impôts, etc.), tandis que les blocs plus petits indiquent les dépenses mineures. C'est extrêmement utile pour repérer les tendances de consommation — si le bloc « Restaurants » augmente chaque mois, vous le remarquerez visuellement. Vous pouvez basculer vers un graphique en rayons de soleil pour voir les ventilations hiérarchiques (par exemple, l'anneau extérieur peut montrer des sous-catégories comme l'Épicerie par rapport aux Restaurants au sein de la catégorie Alimentation). Ces graphiques se mettent à jour pour n'importe quelle période filtrée (un mois, l'année en cours, etc.), vous offrant une visualisation instantanée des flux de trésorerie pour cette période. Un utilisateur sur le forum de la comptabilité en texte brut a noté : « J'utilise beaucoup les treemaps de revenus et de dépenses. Ils donnent une excellente perception visuelle de nos mouvements financiers. » — ce type de compréhension immédiate est exactement l'objectif des graphiques de Fava.

  • Valeur nette et solde au fil du temps : Fava propose un graphique linéaire pour la valeur nette au fil du temps (sur la page « Bilan » ou « Statistiques »). Ce graphique trace la somme de vos actifs moins vos passifs à chaque instant (par jour, semaine ou mois). Il est précieux pour détecter des tendances — vous pouvez voir la trajectoire de vos finances (par exemple, une progression constante ou des creux à certains moments). Si vous avez des investissements, vous pouvez alterner entre l'affichage de la valeur au coût et la valeur au marché (si les données de prix sont enregistrées) — par exemple, vous pourriez voir que votre valeur nette au prix du marché fluctue avec le cours des actions, alors qu'au coût, elle est plus stable. Fava peut également afficher les soldes des comptes au fil du temps. Si vous cliquez sur un compte (disons Assets:Bank:Checking), la page du compte affiche un graphique de l'historique du solde de ce compte. Vous pouvez inspecter instantanément l'évolution de votre compte de liquidités — ce qui constitue en fait un graphique de flux de trésorerie (la pente de la ligne de solde indique le flux de trésorerie net). Si elle tend vers le bas, vous savez que vous dépensez plus que vous ne gagnez sur cette période. En examinant ces tendances, vous pourriez identifier des schémas tels que « chaque mois de décembre, mon épargne chute (dépenses de fêtes) » ou « mes investissements ont fortement progressé ce trimestre ».

  • Graphiques à barres pour la comparaison périodique : Dans la vue du compte de résultat, Fava dispose d'onglets pour le « Profit mensuel », les « Revenus mensuels », les « Dépenses mensuelles », etc. La sélection de ces onglets affiche des graphiques à barres par mois. Par exemple, le Bénéfice net mensuel affichera le surplus ou le déficit de chaque mois sous forme de barre, ce qui facilite la comparaison des performances d'un mois à l'autre. Vous pouvez rapidement identifier les valeurs aberrantes (par exemple, une grande barre négative en avril signifie que ce mois a connu une perte ou une dépense inhabituelle). De même, le graphique à barres des « Dépenses mensuelles » empile ou regroupe les dépenses par catégorie et par mois, afin que vous puissiez voir quelles catégories fluctuent. C'est idéal pour repérer les tendances temporelles — par exemple, vous pourriez remarquer que vos dépenses de « Voyage » grimpent chaque été, ou que les factures de « Services publics » sont plus élevées en hiver. Fava vous offre essentiellement certaines des capacités d'une application de budgétisation (suivi des tendances) mais avec une personnalisation totale (puisque vous définissez les catégories et leur mode de regroupement).

  • Filtrage en temps réel et inspection des données : Les visualisations dans Fava ne sont pas statiques ; elles fonctionnent en tandem avec le filtrage de Fava. Supposons que vous souhaitiez inspecter un scénario spécifique : « À quoi ressemblent mes flux de trésorerie trimestriels pour mes comptes professionnels uniquement ? ». Vous pouvez régler le filtre temporel sur le T1 2025 et filtrer les comptes sur votre hiérarchie professionnelle — Fava mettra instantanément à jour les graphiques pour afficher le revenu net, la treemap des dépenses, etc., mais uniquement pour ce sous-ensemble. Ce découpage interactif signifie que vous pouvez effectuer des analyses ad hoc très rapidement, sans rédiger de requêtes. La vue Journal prend également en charge le filtrage en direct : vous pouvez rechercher par une sous-chaîne du bénéficiaire ou de la narration et voir immédiatement une liste filtrée de transactions. Si vous examinez des données en temps réel (disons que vous venez d'importer les transactions de la semaine dernière), vous pourriez filtrer par un tag comme #uncategorized pour voir les nouvelles transactions nécessitant une catégorie, ou par @pending (si vous marquez les entrées en attente) pour voir ce qui n'est pas encore compensé. Cette capacité d'inspection en temps réel aide également à garantir la qualité des données, car vous pouvez isoler et traiter les anomalies à la volée.

  • Tableau des flux de trésorerie (indirect) : Bien que Beancount/Fava ne produise pas de tableau des flux de trésorerie formel (ventilation Exploitation/Investissement/Financement) de manière native, vous pouvez le simuler avec des requêtes personnalisées ou en structurant vos comptes. Par exemple, vous pourriez marquer certaines transactions ou utiliser des comptes spécifiques pour l'investissement et le financement, puis interroger les totaux. L'interface de requête de Fava vous permet d'exécuter une requête BQL telle que : SELECT sum(amount) WHERE account ~ "Assets:Bank" AND year = 2025 pour obtenir le flux de trésorerie de l'année, etc. Cela dit, la plupart des utilisateurs personnels trouvent que la combinaison des tendances de solde et des graphiques de revenus/dépenses est suffisante pour comprendre les flux de trésorerie.

  • Visualisation des avoirs et du portefeuille : Sur la page Avoirs, Fava liste vos avoirs actuels en commodités (par exemple, actions, obligations, crypto) avec les quantités, le coût, la valeur marchande et les plus-values latentes. Bien qu'il s'agisse d'un tableau et non d'un graphique, il est très utile pour l'inspection en temps réel de l'état de votre portefeuille. Certaines extensions (comme fava-investor, dont nous parlerons plus tard) ajoutent plus de visuels pour les portefeuilles, tels que des graphiques en secteurs pour l'allocation ou des graphiques de performance. Même sans extensions, vous pouvez voir, par exemple, comment la valeur de votre portefeuille d'actions évolue en fonction des derniers prix — si vous mettez à jour les cotations régulièrement (ce qui peut être automatisé quotidiennement), les graphiques de Fava refléteront la valeur marchande de vos investissements à la minute près.

En pratique, les rapports visuels de Fava se mettent à jour aussi rapidement que les données sous-jacentes. Dès qu'une nouvelle transaction est ajoutée et que la page est rechargée, les graphiques sont recalculés. Aucun traitement prolongé n'est nécessaire. Cela signifie que si vous disposez d'un pipeline semi-automatisé alimentant les données tout au long de la journée, vous pouvez laisser Fava ouvert et actualiser périodiquement la page pour obtenir des graphiques mis à jour — il s'agit en fait d'un suivi financier en temps réel.

Par exemple, imaginez que vous gérez une petite entreprise et que vous souhaitez surveiller vos liquidités disponibles et vos dépenses quotidiennes. Vous pourriez ouvrir Fava sur un tableau de bord personnalisé (en utilisant peut-être une extension ou l'écran de requête) affichant le « Solde du compte bancaire aujourd'hui » et les « Dépenses – Aujourd'hui vs Hier ». Chaque fois que vous actualisez après l'arrivée de nouvelles données, vous verriez ces chiffres se mettre à jour. Cela s'apparente à ce que proposent les tableaux de bord en temps réel coûteux, mais avec des outils open source. La différence est que vous devrez peut-être actualiser manuellement ou planifier des actualisations, alors que ces outils poussent les mises à jour automatiquement. Mais fonctionnellement, l'aperçu que vous obtenez est le même, avec l'avantage supplémentaire de pouvoir explorer en détail n'importe quel chiffre sur Fava (cliquez dessus pour voir les transactions sous-jacentes) — ce qui manque à de nombreux tableaux de bord décisionnels (BI).

En résumé, Fava transforme vos données comptables en informations visuelles immédiates : ventilations des flux de trésorerie, lignes de tendance, comparaisons dans le temps et filtrage interactif, tout cela vous aide à comprendre l'histoire derrière les chiffres. Que vous inspectiez les dépenses de la semaine dernière pour y déceler des anomalies ou que vous examiniez les tendances pluriannuelles de votre valeur nette, les graphiques et rapports de Fava apportent de la clarté en temps réel (dès que vos données sont présentes). Ensuite, we verrons comment vous pouvez étendre ces capacités ou les intégrer à des outils externes si vous avez besoin d'analyses encore plus personnalisées.

Intégration avec des tableaux de bord externes et des outils de visualisation

Alors que Fava offre un riche ensemble de rapports et de graphiques intégrés, vous pourriez souhaiter intégrer les données de Beancount à d'autres outils d'informatique décisionnelle (BI) ou de tableaux de bord tels que Grafana, Metabase ou des front-ends web personnalisés (par exemple une application React). La motivation pourrait être de combiner des données financières avec d'autres sources de données, d'utiliser des capacités de graphisme avancées ou de partager des tableaux de bord avec d'autres personnes dans un format différent. Grâce à l'ouverture de Beancount, il existe plusieurs façons de réaliser cette intégration :

  • Intégration de base de données (BeanSQL / Beanpost) : Une approche simple consiste à exporter ou à synchroniser votre grand livre Beancount vers une base de données SQL. Une fois en SQL, n'importe quel outil de BI peut interroger les données. En fait, des membres de la communauté ont créé des outils pour cela. Par exemple, Beanpost est une expérience qui réplique un grand livre Beancount dans une base de données PostgreSQL, en implémentant une grande partie de la logique de Beancount sous forme de fonctions SQL. Cela fournit « un backend flexible qui peut s'intégrer à d'autres outils comme des applications web ou des systèmes de reporting ». Vous pouvez exécuter Beanpost pour synchroniser en continu votre registre au format texte vers Postgres. Ensuite, un outil comme Metabase ou Tableau peut se connecter à cette base de données Postgres et vous pouvez construire tous les graphiques ou tableaux de bord que vous souhaitez (mis à jour en direct au fur et à mesure des mises à jour de la base de données). Un utilisateur a rapporté avoir utilisé Postgres + PostGraphile pour exposer automatiquement une API GraphQL pour les données du grand livre, puis avoir écrit un front-end React personnalisé par-dessus — traitant essentiellement le grand livre comme un service web. Cette approche répond aux cas où l'interface de Fava pourrait ne pas suffire (par exemple, un accès multi-utilisateurs ou des interfaces plus adaptées aux mobiles). C'est une approche plus technique, mais elle montre le potentiel : vous pouvez intégrer Beancount avec des piles web modernes relativement facilement. Une variante plus légère consiste à utiliser le support SQLite intégré de Beancount — l'exécution d'une requête comme bean-query -e ledger.beancount "SELECT ..." peut produire des résultats, ou l'utilisation de l'API Python de Beancount pour obtenir des données et les insérer dans une base de données SQLite. Certaines personnes utilisent SQLite comme intermédiaire pour se connecter à des outils comme Metabase (qui peut lire des fichiers SQLite via une connexion).

  • Grafana (Tableaux de bord de séries temporelles) : Grafana est populaire pour la surveillance et les données de séries temporelles. Les données financières au fil du temps (dépenses, soldes) peuvent être traitées comme des séries temporelles. Il y a eu des discussions au sein de la communauté sur la connexion de Beancount à Grafana. Une idée était un Plugin de source de données Grafana qui pourrait exécuter des requêtes BQL sur un fichier Beancount à la volée. Cela permettrait aux panneaux Grafana d'afficher directement, par exemple, le « Solde du compte courant » sous forme de jauge ou les « Dépenses des 30 derniers jours » sous forme de graphique, en interrogeant le grand livre. À ce jour (2025), un plugin dédié n'est pas publié, mais des passionnés ont construit des solutions ad hoc. Par exemple, un utilisateur de Reddit nommé aquilax a construit un serveur simple qui rend les données de Ledger CLI disponibles pour Grafana, et l'a partagé sous le nom de grafana-ledger-datasource-server. Un concept similaire peut être appliqué à Beancount : vous écririez un petit serveur HTTP en Python qui charge le grand livre Beancount (en utilisant l'API de Beancount pour interroger les données) et expose des points de terminaison qui renvoient des trames de données JSON pour Grafana. Grafana possède un plugin de source de données JSON générique qui pourrait alors extraire des données de cette API. En pratique, cela signifie que vous pourriez concevoir un tableau de bord Grafana avec des panneaux tels que « Revenu mensuel (graphique à barres) » ou « Solde de trésorerie quotidien (graphique linéaire) », et ces panneaux récupéreraient les données de votre API pilotée par Beancount. Grafana permettrait des options de visualisation riches (annotations, seuils, combinaison avec des métriques de serveur, etc.). Andreas Gerstmayr (l'un des mainteneurs de Fava) a suggéré exactement cette approche et a même mentionné qu'il avait créé une extension Fava appelée fava-dashboards (plus d'informations ci-dessous) pour générer des graphiques à partir de requêtes BQL, comme alternative à une configuration Grafana complète. Si vous préférez l'interface utilisateur de Grafana, l'intégration est réalisable — cela nécessite simplement de construire le pont de données.

  • Metabase (Requêtes ad hoc et tableaux de bord) : Metabase est un outil de BI convivial qui vous permet d'exécuter des requêtes et de créer des tableaux de bord sans code. Si vous exportez votre grand livre vers un format relationnel (via Beanpost ou en générant des tables de transactions, d'écritures, etc.), vous pouvez pointer Metabase vers cette base de données. Vous pourriez créer des tables personnalisées comme expenses (date, category, amount) à partir de votre grand livre, puis générer facilement des graphiques dans Metabase (par exemple, un graphique en secteurs des dépenses par catégorie pour le mois dernier). L'avantage est que les utilisateurs non techniques (ou collègues) pourraient alors interagir avec les données via l'interface graphique de Metabase sans avoir besoin de toucher au fichier Beancount. L'inconvénient est que vous devez maintenir l'exportation/synchronisation. Certains utilisateurs ont automatisé la conversion nocturne du registre Beancount vers SQLite, puis laissent Metabase lire le SQLite ; d'autres utilisent l'approche Postgres mentionnée. La clé est que la portabilité des données de Beancount permet cela — vous êtes libre de dupliquer les données sous n'importe quelle forme requise par votre outil externe.

  • Front-ends / Applications personnalisés : Si vous avez des besoins spécifiques, vous pouvez toujours écrire une application personnalisée au-dessus de Beancount. La bibliothèque Python Beancount vous donne accès à toutes les entrées analysées, aux soldes, etc., de sorte qu'un framework web Python (Flask, Django, FastAPI) peut être utilisé pour construire une application sur mesure. Par exemple, une petite entreprise pourrait construire un tableau de bord affichant des indicateurs clés de performance (KPI) (comme la marge brute, les ventes quotidiennes, etc.) en interrogeant le grand livre et peut-être en les combinant avec des données externes au grand livre (comme le nombre de clients servis). Un membre de la communauté a construit une interface web adaptée aux mobiles car Fava n'était pas intuitif pour son conjoint — il a utilisé le grand livre dans une base de données pour piloter cette interface personnalisée. Si vous préférez JavaScript/TypeScript, vous pourriez utiliser un outil pour convertir le grand livre en JSON et construire à partir de là. Des projets comme beancount-web ou beancount-query-server ont été évoqués dans la communauté pour exposer les données de Beancount via une API, bien que l'API de Fava (si elle est exécutée en mode « headless ») puisse également être utilisée — Fava dispose d'un point de terminaison API pour les requêtes internes.

  • Intégration Excel/PowerBI : Il est à noter que vous pouvez même effectuer une intégration avec Excel ou PowerBI. Beancount (et Fava via une extension) peut exporter les résultats de requêtes vers des fichiers CSV ou Excel. Un flux de travail pourrait être : une tâche nocturne génère un fichier Excel des données financières clés de Beancount, et PowerBI est configuré pour importer ce fichier. C'est un peu indirect, mais pour les organisations qui utilisent déjà beaucoup Excel/PowerBI, c'est une intégration à faible friction. PowerBI prend également en charge les sources de données Python, on peut donc écrire un court script Python qui exécute des requêtes BQL et l'utiliser comme source de données dans PowerBI, réalisant ainsi une connexion directe.

Étude de cas — Idée d'intégration Grafana : Josh, un utilisateur de Beancount, a demandé sur la liste de diffusion comment envoyer des métriques Beancount vers Prometheus pour les visualiser dans Grafana. Les développeurs principaux ont répondu qu'au lieu de dupliquer les données dans Prometheus, une meilleure approche consiste à utiliser un plugin ou un service Grafana qui interroge directement le grand livre Beancount. Andreas a partagé son extension fava-dashboards, qui génère des graphiques personnalisés directement dans Fava, comme exemple de solution. Ce qu'il faut retenir : vous avez le choix — soit intégrer via une infrastructure de BI existante (Prometheus+Grafana ou SQL+Metabase), soit étendre Fava pour répondre à vos besoins (la section suivante détaillera ce point).

Considérations relatives à la sécurité et au multi-utilisateurs : Lors de l'intégration avec des outils externes, soyez vigilant quant à la sensibilité des données. Les fichiers texte de Beancount contiennent souvent des informations financières privées, tout serveur les exposant doit donc être sécurisé (authentifié). Si vous transférez des données vers un outil de BI dans le cloud, vous pourriez perdre une partie de votre confidentialité. L'utilisation d'outils auto-hébergés (versions open-source de Grafana/Metabase) exécutés localement peut atténuer ce risque. De plus, si plusieurs personnes doivent consulter les tableaux de bord, un tableau de bord externe en lecture seule peut être préférable plutôt que de donner à chacun un accès à Fava (où ils pourraient modifier les données par inadvertance). Par exemple, une startup pourrait utiliser Beancount en interne mais utiliser Metabase pour permettre aux chefs de département de voir les dépenses par rapport au budget sans accéder aux fichiers du grand livre.

En résumé, Beancount et Fava s'intègrent bien avec d'autres outils. Vous pouvez tirer parti de tout l'écosystème d'outils de données avec un peu de code intermédiaire : envoyez les données du grand livre vers une base de données SQL pour les outils de BI, servez-les via des API pour les applications web, ou utilisez des bibliothèques spécialisées pour les transmettre à des systèmes de séries temporelles. Cette flexibilité signifie que vous n'êtes jamais bloqué si les visuels intégrés de Fava ne répondent pas à un besoin particulier — vous pouvez toujours intégrer une autre plateforme tout en continuant à utiliser Beancount comme source unique de vérité. Ensuite, nous verrons comment étendre Fava lui-même avec des plugins et des tableaux de bord personnalisés, ce qui est souvent une méthode plus simple que l'intégration externe si vous n'avez besoin que de quelques fonctionnalités supplémentaires.

Tableaux de bord personnalisés et extension de Fava avec des plugins (Exemples de code)

Fava est conçu pour être extensible : vous pouvez ajouter de nouvelles pages, des graphiques et des comportements en écrivant des extensions Fava (plugins) en Python. Cela permet d'adapter l'interface web à vos besoins spécifiques sans avoir à construire une application distincte de toutes pièces. Nous allons explorer deux pistes clés pour la personnalisation : (1) l'utilisation ou l'écriture d'extensions Fava, et (2) la mise en place de tableaux de bord personnalisés via des plugins communautaires comme fava-dashboards.

Extensions Fava (Plugins personnalisés)

Une extension Fava est essentiellement un module Python qui définit une sous-classe de FavaExtensionBase. Au démarrage de Fava, ce module peut être chargé et intégré à l'application. Les extensions peuvent enregistrer de nouvelles pages de rapport, s'interfacer avec des événements et même inclure du JavaScript personnalisé pour l'interactivité. Certaines extensions sont livrées avec Fava (par exemple, portfolio_list pour une page de vue d'ensemble des investissements). D'autres peuvent être installées via pip ou écrites de zéro.

Pour activer une extension, vous utilisez la directive personnalisée (custom) de Beancount dans votre fichier de registre :

2010-01-01 custom "fava-extension" "my_extension_module" "{'option': 'value'}"

Cela indique à Fava de charger le module spécifié. Par exemple, l'extension intégrée Portfolio List est activée en interne de manière similaire. Si vous avez installé une extension via pip, vous référenceriez le nom de son module ici. Le JSON optionnel à la fin correspond à la configuration de l'extension (transmise sous forme de chaîne de caractères).

Exemple – Extension Auto-Commit : Fava inclut une extension d'exemple fava.ext.auto_commit qui valide (commit) automatiquement les modifications dans un VCS lorsque vous modifiez le fichier via l'éditeur de Fava. Si vous souhaitiez l'utiliser, vous ajouteriez :

2025-01-01 custom "fava-extension" "fava.ext.auto_commit" "{'repo': '/path/to/git/repo'}"

Cette extension enregistre un "hook" qui s'exécute après chaque modification de fichier pour effectuer un git commit. Elle démontre comment les extensions peuvent s'interfacer avec les événements de Fava (ici, après l'enregistrement du fichier).

Exemple – Extension Portfolio List : Cette extension ajoute une page affichant vos investissements regroupés par classe d'actifs, etc. Elle possède un report_title = "Portfolio List" et inclut un modèle (template) pour restituer les données. Fava détecte cela et ajoute une nouvelle entrée dans la barre latérale "Portfolio List" sous la section Rapports. L'extension inclut également un peu de JavaScript (avec has_js_module = True) pour améliorer la page (peut-être pour des graphiques interactifs). Pour l'activer (si elle n'était pas déjà par défaut), vous feriez :

2025-01-01 custom "fava-extension" "fava.ext.portfolio_list"

(Aucune configuration n'est nécessaire dans ce cas.)

Écrire une extension personnalisée : Supposons que vous souhaitiez une page de rapport personnalisée, par exemple une "Balance âgée des créances" (Receivables Aging) pour vos factures. Vous pourriez créer un fichier receivables.py comme suit :

# receivables.py
from fava.ext import FavaExtensionBase

class ReceivablesReport(FavaExtensionBase):
report_title = "Receivables Aging"

def on_page_load(self):
# Ceci pourrait être un hook pour collecter des données
pass

Vous créeriez également un fichier templates/ReceivablesReport.html pour définir le HTML de la page. Dans ce modèle, vous pouvez accéder à self.ledger (l'objet registre Beancount) et effectuer des calculs. Par exemple, parcourir les transactions pour trouver celles marquées comme factures et non encore payées, puis les regrouper par ancienneté. Une fois cette extension écrite, vous l'ajoutez à votre registre :

2025-01-01 custom "fava-extension" "receivables"

(En supposant que receivables.py se trouve dans le répertoire du fichier Beancount ou dans le PYTHONPATH, Fava pourra le trouver par son nom). Au démarrage de Fava, vous verrez désormais une page "Receivables Aging".

Sous le capot, Fava appellera les méthodes de votre extension aux moments appropriés. Vous pouvez surcharger des méthodes comme after_load_file (pour effectuer des calculs après le chargement du registre) ou utiliser des hooks comme before_request. L'extension peut également définir des routes ou des points de terminaison d'API si nécessaire, mais l'utilisation des hooks fournis et d'un modèle est généralement suffisante.

La documentation de Fava précise que le système d'extension est encore en évolution, mais il est tout à fait utilisable. En fait, de nombreuses fonctionnalités avancées ont été prototypées sous forme d'extensions.

Tableaux de bord personnalisés avec fava-dashboards (Extension communautaire)

Au lieu d'écrire une extension à partir de zéro, vous pourriez utiliser le plugin fava-dashboards créé par un contributeur de Fava. Cette extension vous permet de définir des tableaux de bord arbitraires via un fichier de configuration YAML (ou JSON), mélangeant texte, tableaux et graphiques, alimentés par des requêtes BQL. C'est essentiellement un moyen de créer de nouvelles "pages" dans Fava contenant plusieurs panneaux personnalisés.

Installation et configuration : Tout d'abord, installez le paquet (par exemple pip install fava-dashboards). Ensuite, dans votre fichier Beancount, activez-le avec une directive personnalisée pointant vers votre configuration de tableaux de bord. Par exemple :

2010-01-01 custom "fava-extension" "fava_dashboards" "{ 'config': '/path/to/dashboards.yaml' }"

Cela indique à Fava de charger l'extension et d'utiliser votre fichier YAML pour la configuration.

Format YAML des tableaux de bord : Dans le fichier dashboards.yaml, vous définissez un ou plusieurs tableaux de bord et leurs panneaux. Par exemple :

dashboards:
- title: "Tableau de bord de trésorerie"
panels:
- title: "Trésorerie nette ce mois-ci"
width: 50%
queries:
- bql: "SELECT sum(position) WHERE account ~ 'Income' OR account ~ 'Expenses'"
type: "jinja2"
template: "<h1>{{ panel.queries[0].result | float }} USD</h1>"
- title: "Tendance du solde de trésorerie"
width: 50%
queries:
- bql: "SELECT date, balance WHERE account = 'Assets:Bank:Checking'"
type: "echarts"
script: |
const dates = {{ panel.queries[0].result | safe }}.map(row => row[0]);
const balances = {{ panel.queries[0].result | safe }}.map(row => row[1]);
return {
xAxis: { type: 'category', data: dates },
yAxis: { type: 'value' },
series: [{ data: balances, type: 'line' }]
};

Ceci est un exemple hypothétique pour illustrer le concept. Le premier panneau calcule la trésorerie nette (revenus moins dépenses) pour le filtre actuel et l'affiche sous forme de grand nombre (en utilisant un modèle Jinja2). Le deuxième panneau exécute une requête pour obtenir le solde quotidien du compte courant, puis utilise un script ECharts (ECharts est une bibliothèque de graphiques JS) pour tracer un graphique linéaire. Fava-dashboards prend en charge plusieurs types de panneaux : html, jinja2, echarts, d3_sankey, etc., et fournit les données aux scripts. En substance, cela vous donne une flexibilité totale pour concevoir des tableaux de bord avec plusieurs composants, sans avoir à écrire une extension Fava complète.

L'extension se charge de les restituer lorsque vous ouvrez la page du tableau de bord dans Fava. Vous pouvez créer plusieurs tableaux de bord (chacun apparaît sous forme d'onglet ou de page séparée). C'est extrêmement puissant pour créer des tableaux de bord financiers personnalisés. Par exemple, vous pourriez créer un tableau de bord "Budget vs Réel" : un panneau affiche un tableau comparant le budget et le réel par catégorie (via une requête comparant deux ensembles de comptes), un autre panneau affiche un graphique à barres des dépenses cumulées de l'année par rapport à l'année précédente, etc. Tout cela avec une simple configuration et un minimum de script, en exploitant les données de votre registre via BQL.

Exemple de code – Activation de fava-dashboards : Comme montré plus haut, l'ajout de l'extension se fait en une seule ligne dans votre registre. Pour être complet, voici un exemple minimal dans son contexte :

option "title" "Mon Registre"
option "operating_currency" "USD"

plugin "beancount.plugins.auto_accounts" ; (ouvre automatiquement les comptes)

1970-01-01 custom "fava-extension" "fava_dashboards" "{ 'config': 'dashboards.yaml' }"

Et dans dashboards.yaml :

dashboards:
- title: "Vue d'ensemble"
panels:
- title: "Valeur nette"
queries:
- bql: "select sum(position) where account ~ 'Assets|Liabilities'"
type: "jinja2"
template: "<div>Valeur nette : {{ panel.queries[0].result[0,0] }}</div>"

(Cela afficherait la valeur nette dans une simple div ; un exemple réel formaterait cela joliment et ajouterait plus de panneaux.)

Une fois en place, lorsque vous lancez Fava et naviguez vers le tableau de bord "Vue d'ensemble", il affichera votre valeur nette calculée. Vous pouvez ensuite affiner le modèle ou ajouter des graphiques selon vos besoins.

Autres extensions notables : Outre fava-dashboards, il existe des plugins comme fava-investor qui fournit des analyses d'investissement avancées (graphiques d'allocation d'actifs, outils de récolte de pertes fiscales, etc.). L'activation de fava-investor (après un pip install fava-investor) ajoute plusieurs pages de rapport liées aux investissements. Un autre est fava-review (pour la révision des transactions dans le temps), etc. La communauté maintient une liste "awesome-beancount" qui inclut divers plugins et outils. En les parcourant, vous pourriez trouver une extension déjà existante qui répond à vos besoins.

Quand étendre vs intégrer de manière externe : En règle générale, si votre besoin concerne uniquement la présentation ou le calcul sur les données existantes du registre, une extension Fava est idéale (tout reste au même endroit, respecte les filtres, etc.). Si votre besoin implique de combiner des données externes ou si vous avez besoin d'une interface utilisateur radicalement différente, une intégration externe (section précédente) pourrait être justifiée. Par exemple, afficher les analyses d'un site web à côté des finances est préférable dans Grafana ou Metabase ; mais ajouter un nouvel indicateur de performance (KPI) ou un rapport financier est préférable en tant que plugin Fava.

Exemple – Un KPI personnalisé dans Fava : Disons que vous voulez suivre votre "Taux d'épargne" (pourcentage des revenus épargnés). Vous pourriez le faire avec une extension qui le calcule et l'affiche dans un petit encadré sur la page principale. Ou avec fava-dashboards, un panneau pourrait être un modèle Jinja2 qui affiche Taux d'épargne : X % en interrogeant le total des revenus et le total des dépenses. Ce type de métrique personnalisée est très facile à injecter avec ces outils, alors que dans un système fermé comme QuickBooks, il pourrait être impossible de créer une nouvelle métrique sur le tableau de bord.

Pour illustrer la concision possible, voici un pseudo-code utilisant fava-dashboards en YAML :

- title: "Taux d'épargne"
panels:
- title: "Taux d'épargne"
queries:
- bql: "SELECT sum(position) WHERE account ~ 'Income'"
- bql: "SELECT sum(position) WHERE account ~ 'Expenses'"
type: "jinja2"
template: |
{% set income = panel.queries[0].result[0][0] %}
{% set expense = -panel.queries[1].result[0][0] %} {# les dépenses sont négatives dans le contexte du compte de résultat #}
{% set rate = (income - expense) / income * 100 if income != 0 else 0 %}
<h3>Taux d'épargne : {{ rate|round(1) }} %</h3>

Ceci calculerait le taux d'épargne (en supposant que les sommes des comptes de revenus ressortent positives et les dépenses négatives dans le contexte de la requête BQL) et l'afficherait.

Le point clé à retenir : Fava n'est pas un outil statique – c'est une plateforme extensible. Avec un peu de Python ou même juste du code de configuration, vous pouvez le personnaliser considérablement. De nombreux utilisateurs partagent de petits scripts ou extensions sur des forums pour faire des choses comme afficher les factures à venir, générer des factures PDF à partir de transactions ou intégrer Beancount avec des bibliothèques de calcul fiscal. En investissant dans l'apprentissage ou l'utilisation de ces extensions, vous obtenez un système d'analyse financière sur mesure sans avoir à tout recommencer.

Cas d’utilisation : finances personnelles vs comptabilité de petite entreprise

Beancount et Fava peuvent être utilisés à la fois pour la comptabilité personnelle et celle des petites entreprises, mais les cas d’utilisation et les avantages diffèrent légèrement dans leur approche :

Finances personnelles

Pour les particuliers, le duo Beancount + Fava excelle en offrant une visibilité et une compréhension totale de ses propres finances sans dépendre d'applications propriétaires. Les cas d'utilisation courants en finances personnelles incluent :

  • Suivi des dépenses et budget : Beaucoup utilisent Beancount pour consigner chaque dépense et analyser ensuite les habitudes de consommation. Avec Fava, ils peuvent voir où va l’argent chaque mois (treemap des dépenses) et suivre les budgets en les comparant aux valeurs prévues (certains utilisent l’extension Budgets ou des requêtes personnalisées). Un utilisateur a expliqué qu’après avoir adopté Beancount, « l’analyse des données financières (dépenses, dons, impôts, etc.) est devenue triviale. C’est facile à faire avec Fava, mais aussi avec des scripts... J’ai un script Python qui extrait les données de Beancount via BQL, puis j’utilise pandas pour préparer un rapport. ». Cela démontre comment les utilisateurs particuliers bénéficient à la fois de l’interface intégrée et de la possibilité de scripter des analyses sur mesure.

  • Valeur nette et suivi des objectifs : Comme vous pouvez inclure tous les actifs (comptes bancaires, investissements, et même actifs physiques si vous le souhaitez) dans un seul grand livre, vous obtenez une vue unique de votre valeur nette. Les passionnés de finances personnelles utilisent cela pour suivre leur progression vers des objectifs (par exemple, le « chiffre FI » pour l'indépendance financière ou le remboursement de dettes). Les graphiques de Fava montrant l’évolution de la valeur nette au fil du temps sont motivants — vous pouvez littéralement voir la courbe de votre patrimoine. Il est courant de suivre des passifs comme des prêts étudiants ou des prêts hypothécaires dans Beancount et de mettre à jour leurs soldes ; le grand livre donne alors une image complète de la santé financière.

  • Investissements et Crypto : L’usage personnel s’étend souvent au suivi d’un portefeuille. Beancount peut gérer les actions, la crypto, etc., avec des calculs de base de coût et de gains réalisés (via des plugins ou des requêtes). L’avantage par rapport au site d’un courtier est que vous pouvez consolider tous vos comptes et voir votre véritable allocation d’actifs. Le plugin fava-investor, par exemple, a été créé par un membre de la communauté pour effectuer des analyses d’investissement dans Fava, incluant des treemaps d’allocation d’actifs et des indicateurs de performance. C’est une tâche que les investisseurs amateurs font généralement sur Excel ; Beancount offre une méthode plus rigoureuse et automatisée. Un article de blog intitulé « Beancount : DeFi Accounting For Noobs » illustre même son utilisation pour suivre les transactions de cryptomonnaies et le yield farming, ce qui montre sa flexibilité dans les scénarios modernes de finances personnelles.

  • Finances personnelles multi-devises : Si vous vivez à l’étranger ou détenez des investissements étrangers, Beancount est extrêmement utile car il peut convertir et agréger les devises. Des utilisateurs ont noté que « de nombreux logiciels de comptabilité ne gèrent pas bien le multi-devises… Avec Beancount, vous pouvez définir n’importe quelle matière première (commodity) que vous voulez », et obtenir des rapports dans votre devise préférée. Pour un utilisateur particulier percevant par exemple un salaire en USD mais ayant des dépenses en EUR, c’est un avantage majeur.

  • Suivi de vie et journalisation : Un cas d’utilisation non conventionnel mais bien réel : certains traitent le grand livre comme un journal de vie, en marquant les transactions avec des étiquettes liées à des événements (comme #mariage ou #vacances2025) pour calculer le coût d'événements ou même s'en servir comme d'un journal d'activités (les métadonnées financières servant d'indicateurs de vie). Le format texte brut et l'étiquetage rendent cela possible d'une manière que les outils traditionnels ne permettent pas facilement.

  • Simplicité et propriété : Les finances personnelles sont aussi une question de mentalité. Beaucoup choisissent Beancount parce qu’ils « voulaient posséder ces données et les analyser facilement, sans être enfermés dans un abonnement ou dépendants d’un fournisseur ». La disparition récente de Mint.com (un outil budgétaire gratuit populaire) a poussé les passionnés vers la comptabilité en texte brut pour garantir la pérennité de leurs données. Avec Beancount, ils savent qu'ils pourront toujours ouvrir leur grand livre dans 20 ans. Pour les finances d'un individu seul, les données de Beancount (éventuellement synchronisées via Dropbox ou Git) et l'interface web de Fava (qui peut être exécutée localement ou sur un serveur privé) offrent un équilibre entre commodité et contrôle difficile à trouver ailleurs.

Défis potentiels pour l’usage personnel : la configuration initiale et l’apprentissage de la comptabilité en partie double peuvent représenter un obstacle pour certains. Mais de nombreuses ressources (comme le tutoriel Beancount et les forums communautaires) aident les nouveaux utilisateurs. Une fois configurée, la maintenance peut être largement automatisée comme décrit précédemment, ce qui est idéal pour quelqu'un gérant ses finances domestiques avec un effort minimal.

Comptabilité de petite entreprise

Les petites entreprises, les startups et les freelances peuvent également utiliser Beancount + Fava, bien que les exigences incluent ici des rapports plus formels et parfois de la collaboration :

  • Tenue de livres et états financiers : Une entreprise peut tenir son grand livre général dans Beancount, enregistrer les factures, les notes de frais, la paie, etc., et produire des bilans et des comptes de résultat. Beancount prend en charge la comptabilité d’exercice nécessaire (vous pouvez marquer des comptes comme Créances clients / Dettes fournisseurs et enregistrer des factures avec des écritures de revenus et de créances, puis plus tard un paiement pour solder la créance). Fava affichera alors ces éléments sous les Actifs ou Passifs de manière appropriée. Une discussion sur Reddit demandait si Beancount était adapté aux entreprises et s'il pouvait générer des états financiers corrects — la réponse est oui, il peut produire des bilans, des comptes de résultat et (avec l'aide de quelques requêtes) des tableaux de flux de trésorerie, car ce ne sont que des vues des données en partie double. Le bémol est que Beancount n’impose aucune norme comptable particulière (cela dépend de la façon dont vous l'utilisez). Un utilisateur averti (ou un comptable) doit donc configurer correctement le plan comptable pour l'entreprise. Il existe des exemples communautaires de Beancount utilisé pour des startups — un commentateur sur HN a déclaré : « J'apprécie vraiment d'utiliser Beancount + Git pour gérer la comptabilité de ma propre startup », tout en notant qu'il était un peu fastidieux d'ajouter des écritures périodiquement. Ce caractère fastidieux peut être atténué par l'automatisation de l'importation comme nous l'avons vu.

  • Suivi financier en temps réel : Pour une petite entreprise, le flux de trésorerie est roi. En utilisant Fava, un chef d'entreprise peut surveiller les soldes bancaires et les flux de trésorerie quasiment en temps réel. En automatisant les flux bancaires ou les importations, il peut vérifier si le paiement d'un client est arrivé ou si une dépense importante a été débitée. QuickBooks propose des flux bancaires qui « vous permettent de voir comment se porte votre entreprise en temps réel » ; avec Beancount, vous reproduisez cela via votre propre intégration bancaire. L'avantage de Beancount est la transparence — vous voyez exactement ce qui a été importé et comment c'est catégorisé, au lieu de faire confiance à la logique de rapprochement parfois obscure de QuickBooks.

  • Facturation et créances/dettes : Beancount n'a pas de module de facturation intégré (comme la génération de factures PDF ou le suivi des numéros de facture). Cependant, des utilisateurs créatifs y parviennent avec des extensions. Par exemple, on peut générer une facture PDF à partir d'une transaction en utilisant un modèle Jinja2 ou un script externe qui lit les écritures de créances non soldées. Il existe un projet nommé « Beanie » qui agit comme un système de gestion des créances léger par-dessus Beancount. Les petites entreprises peuvent utiliser Beancount pour le grand livre et un autre outil pour émettre des factures, puis importer les données de facturation dans Beancount. C’est une étape supplémentaire par rapport à QuickBooks (qui peut envoyer des factures et les enregistrer automatiquement une fois payées), mais cela garantit que toutes les données finissent dans le grand livre ouvert.

  • Paie et amortissement : Ce sont des tâches comptables que les petites entreprises gèrent couramment. Beancount peut certainement enregistrer les écritures de paie (en séparant le salaire brut, les taxes, les retenues, etc., dans les comptes appropriés) — mais vous les calculeriez généralement avec des outils externes ou via votre prestataire de paie avant de les saisir. De même, les tableaux d'amortissement des immobilisations seraient saisis manuellement (ou vous pourriez écrire un plugin pour automatiser les écritures d'amortissement mensuelles). Beancount n'a pas de solution magique pour cela, mais beaucoup de logiciels pour petites entreprises n'offrent rien de plus que quelques modèles. L'avantage est que vous pouvez scripter n'importe quel cas particulier. Par exemple, si vous avez un calendrier de reconnaissance de revenus personnalisé, vous pourriez scripter ces écritures de journal en Python et les inclure.

  • Transparence et auditabilité : Les entreprises peuvent apprécier le fait que Beancount fournisse une piste d'audit claire. Chaque transaction est en texte brut et peut être annotée avec des liens vers des documents (reçus, contrats). En cas d'audit, vous pouvez montrer le fichier du grand livre ainsi que les documents joints, ce qui est très direct. De plus, le contrôle de version signifie que vous disposez d'un journal d'audit indiquant qui a effectué les changements et quand (si plusieurs personnes collaborent via Git). Comparez cela à QuickBooks où un comptable pourrait avoir besoin d'examiner des journaux de modifications qui ne sont pas facilement accessibles à l'utilisateur.

  • Coût : Beancount + Fava est gratuit, ce qui est attrayant pour les startups ou les petites entreprises cherchant à minimiser les coûts logiciels. QuickBooks, Xero, etc., ont des frais mensuels. Cependant, le compromis est que ces derniers offrent un support et une configuration plus aisée. Un chef d'entreprise féru de technologie pourrait volontiers échanger un peu de temps pour économiser des coûts et gagner en flexibilité.

Exemples réels : Un autre utilisateur sur HN a déclaré l’avoir utilisé pour une LLC de conseil et que cela fonctionnait bien, mais que lorsque le nombre de transactions a augmenté, il a commencé à diviser les fichiers par année pour maintenir la rapidité. Le consensus est le suivant : pour une petite entreprise (disons quelques dizaines de milliers de transactions par an ou moins), Beancount est parfaitement capable. Pour une PME plus importante avec des centaines de milliers de transactions, les performances pourraient justifier l'utilisation d'une approche par base de données ou d'un système comptable spécialisé — bien que Beanpost tente de répondre à cela en utilisant Postgres comme moteur de base de données.

Collaboration : Un point de différence notable — QuickBooks Online permet à plusieurs utilisateurs (propriétaire, comptable, etc.) de travailler simultanément. Avec Beancount, la collaboration pourrait se faire via Git (plusieurs utilisateurs soumettent des modifications). Cela fonctionne, mais nécessite une certaine connaissance de Git et la résolution de conflits si plusieurs personnes éditent en même temps. Certains utilisent des plateformes Git en ligne ou même Google Drive pour partager le fichier du grand livre. C'est faisable, mais moins fluide qu'un logiciel comptable en cloud. Cependant, pour une petite équipe (ou un comptable solo + propriétaire), c'est gérable, et vous pouvez toujours accorder un accès en lecture seule via Fava (en l'hébergeant sur un serveur interne pour permettre aux autres de consulter les rapports sans modification).

Conformité réglementaire : Pour les finances personnelles, ce n'est pas un problème. Pour une entreprise, vous pourriez avoir besoin de produire des rapports officiels ou de suivre des normes comptables. Beancount peut être utilisé pour générer des états financiers conformes aux normes GAAP, mais cela nécessite que l'utilisateur saisisse les données en conséquence. Il n'y a pas d'application intégrée des règles GAAP (par exemple, pas de module d'immobilisations intégré pour garantir que vous amortissez correctement). Un comptable externe peut toujours travailler avec un grand livre Beancount (puisqu'il s'agit essentiellement d'un journal général) — il pourrait l'exporter vers Excel et effectuer des ajustements si nécessaire. Certaines entreprises préféreront peut-être un logiciel connu pour cette raison, ou du moins auront un comptable à l'aise avec les données en texte brut.

Qui l'utilise pour les entreprises ? Probablement des « power-users » : des startups technologiques, des freelances ayant un bagage en programmation, ou des entreprises qui accordent une grande importance au contrôle des données (par exemple, des sociétés de trading financier souhaitant des rapports personnalisés). Un fil de discussion sur Reddit a vu quelqu'un demander si Beancount conviendrait à une société de trading — les réponses indiquaient que oui, il gère le multi-devises et peut produire les états financiers nécessaires, mais qu'il faudra construire quelques outils autour.

Pour conclure cette section : Les utilisateurs de finances personnelles adorent Beancount pour la visibilité et le contrôle qu'il offre sur leur argent — il transforme les finances en un ensemble de données qu'ils peuvent interroger et analyser, permettant par exemple de suivre facilement chaque dépense et de calculer des indicateurs que les outils budgétaires classiques ne peuvent pas fournir. Les utilisateurs en petite entreprise apprécient la transparence, les économies de coûts et la modularité — ils peuvent intégrer la comptabilité au reste de leur pile logicielle et éviter l'enfermement propriétaire ou les frais mensuels. Les deux cas d’utilisation bénéficient d’analyses en temps réel : un particulier peut surveiller l'évolution de son budget mensuel, une entreprise peut surveiller ses flux de trésorerie quotidiens — dans les deux cas, Fava présente des informations à jour lorsqu'il est alimenté par des données ponctuelles.

Comparaison avec d'autres plateformes d'analyse en temps réel

Il est utile de comparer Beancount + Fava à d'autres solutions proposant des analyses financières « en temps réel », telles que QuickBooks (avec flux bancaires en direct) et Power BI (ou des tableaux de bord BI similaires). Chaque approche présente ses propres forces et compromis en termes de transparence, de flexibilité et de réactivité :

AspectBeancount + Fava (Open-Source)QuickBooks (avec flux bancaires)Power BI / BI générique
Transparence et propriété des donnéesEntièrement transparent – les données sont en texte brut, vous pouvez inspecter chaque transaction. La logique est totalement visible (pas d'algorithmes cachés). Vous possédez le format pour toujours. Le contrôle de version peut afficher une piste d'audit des modifications.Opaque – données stockées dans une base de données cloud propriétaire. Vous dépendez de l'export d'Intuit pour les sauvegardes. Certains processus (ex : catégorisation automatique) ne sont pas totalement visibles. Journaux d'audit limités. Si vous arrêtez de payer, vous risquez de perdre l'accès facile à vos données.Dépend de la source de données – Power BI n'est qu'un outil. S'il est connecté à une base de données ouverte, vous conservez la propriété de ces données. Cependant, les fichiers ou tableaux de bord Power BI sont dans un format propriétaire et nécessitent Power BI pour être consultés. La transparence des calculs est bonne (vous les définissez), mais le système global est complexe.
Flexibilité et personnalisationExtrêmement flexible. Vous pouvez définir n'importe quelle structure de compte, n'importe quelle commodité/devise. Vous pouvez scripter des comportements ou analyses personnalisés (Python, plugins). Aucun flux de travail imposé – vous l'adaptez à vos besoins (personnels ou professionnels). Le système d'extensions de Fava et des outils comme fava-dashboards permettent des tableaux de bord personnalisés au sein de l'application. Si quelque chose manque, vous pouvez probablement le construire ou l'intégrer vous-même.Modérée. QuickBooks est riche en fonctionnalités pour la comptabilité standard des petites entreprises (facturation, paie (module complémentaire séparé), rapports de base). Mais vous êtes limité aux fonctionnalités fournies par Intuit. Le plan comptable et les catégories doivent s'insérer dans son paradigme. Les rapports personnalisés sont limités ; vous ne pouvez pas interroger la base de données de manière arbitraire. Les intégrations existent via l'API d'Intuit (limitée) ou l'export vers Excel. Vous échangez la flexibilité contre la commodité.Très flexible pour l'analyse et la visualisation. Vous pouvez créer presque n'importe quel graphique ou KPI si les données sont accessibles. Power BI peut facilement croiser des données financières avec d'autres données (ventes, analyses web, etc.). Cependant, ce n'est pas un système comptable – vous devez préparer les données (qui pourraient provenir de Beancount !). Il n'impose pas la comptabilité en partie double ou les principes comptables ; c'est une page blanche. La flexibilité de visualisation est élevée (mesures DAX personnalisées, etc.), mais requiert une expertise.
Réactivité en temps réelPresque en temps réel avec configuration. Si vous automatisez la saisie des données (flux ou imports fréquents), Fava les reflétera dès que le grand livre sera mis à jour et rechargé. Ce n'est pas du temps réel « push » par défaut (rafraîchissement manuel nécessaire), mais vous pouvez mettre à jour aussi souvent que souhaité (toutes les minutes, toutes les heures). La vitesse de mise à jour est très rapide (analyse de texte en millisecondes pour de petits changements). Vous contrôlez la fréquence – cela pourrait être continu par script. Aucune attente des cycles de synchronisation des fournisseurs.Conçu pour le quasi-temps réel pour les transactions bancaires : « Les flux bancaires vous permettent de voir comment se porte votre entreprise en temps réel. » En pratique, les flux bancaires dans QuickBooks Online se mettent à jour une fois par jour ou à la demande (selon la banque). Il récupère automatiquement les nouvelles transactions et tente de les catégoriser, évitant ainsi l'import manuel. Les modifications apparaissent sur le tableau de bord sans intervention manuelle. Cependant, certaines données (comme les transactions en attente) peuvent ne pas s'afficher avant d'être validées. Généralement bonne réactivité pour les données bancaires ; moins pour les écritures de journal manuelles (toujours en temps réel, mais vous les saisissez vous-même).S'ils sont configurés avec une connexion en direct, les tableaux de bord peuvent se mettre à jour en temps réel ou selon un calendrier. Par exemple, un tableau de bord Power BI utilisant DirectQuery sur une base de données SQL peut se mettre à jour à chaque ouverture ou même automatiquement. Avec le mode Import, vous actualisez selon un calendrier (ex : toutes les heures). Cela peut donc être proche du temps réel, mais la complexité réside dans la maintenance du pipeline de données. De plus, toute modification des données sous-jacentes nécessite un rafraîchissement du modèle ou des requêtes.
Automatisation et saisie de donnéesLes imports peuvent être hautement automatisés mais nécessitent une configuration personnalisée. Vous devrez peut-être écrire/maintenir des scripts ou utiliser des importateurs communautaires pour chaque banque ou source de données. Pas de connexions bancaires prêtes à l'emploi (hormis celles que vous créez). La configuration initiale de l'automatisation demande donc un effort. En revanche, une fois configuré, cela peut être totalement automatisé sans saisie manuelle (certains utilisateurs atteignent ~95 % d'automatisation). Prend également en charge la saisie manuelle via le formulaire web de Fava ou l'édition de texte.Très automatisé pour les flux bancaires/cartes de crédit (aucun codage nécessaire – il suffit de connecter vos comptes dans QuickBooks). Il suggère également des catégories (via les données passées et du ML). « Chaque transaction est instantanément synchronisée et triée pour vous… QuickBooks recommande des catégories et devient plus intelligent avec le temps. » C'est un avantage majeur de commodité. Cependant, l'automatisation concerne principalement les comptes financiers ; d'autres éléments peuvent encore nécessiter une révision manuelle. Si le flux bancaire s'interrompt, l'utilisateur doit se reconnecter ou télécharger des fichiers.Power BI ne concerne pas la saisie de données – il dépend de l'automatisation de la source de données. Si votre source est une feuille de calcul manuelle, ce n'est pas du temps réel. S'il s'agit d'une base de données mise à jour par un processus ETL, cela peut être proche du temps réel. L'automatisation dépend donc de ce que vous fournissez à Power BI. Power BI lui-même peut être programmé pour actualiser les données des sources. En résumé, Power BI peut refléter des données automatisées mais ne crée pas l'automatisation.
Collaboration et partageLa collaboration via texte (ex : Git) est puissante mais technique. Plusieurs personnes peuvent contribuer en éditant les fichiers du grand livre et en fusionnant les modifications. Fava peut être hébergé en lecture seule pour partager des rapports, mais il manque de rôles d'utilisateurs ou de contrôle d'accès granulaire prêt à l'emploi. Pour un utilisateur unique ou une équipe technophile, c'est parfait. Les auditeurs ou comptables pourraient avoir besoin d'un export de données (ex : balance générale dans Excel) s'ils ne sont pas à l'aise avec le format.Accès web multi-utilisateurs avec autorisations (QuickBooks Online prend en charge les comptables, plusieurs utilisateurs professionnels avec des rôles). Partage facile – votre comptable peut se connecter et voir les comptes en direct. C'est un point fort pour les entreprises. Pour les finances personnelles, le multi-utilisateur est moins pertinent, mais l'accès cloud sur tous les appareils est un atout. QuickBooks s'intègre également à d'autres services (paie, prêts, etc.), ce qui est utile pour les entreprises et difficile à reproduire dans Beancount.Power BI excelle dans le partage de tableaux de bord via Power BI Service : vous pouvez publier des rapports pour des collègues ou les intégrer dans des sites web. Il est conçu pour la collaboration sur les analyses. Cependant, il s'agit d'un partage d'analyses en lecture seule, pas d'une édition collaborative de données. En résumé, pour communiquer des résultats financiers de manière percutante aux parties prenantes, Power BI est difficile à battre. Mais c'est de l'analyse collaborative, pas de la tenue de livres collaborative.
CoûtGratuit (open source). Vous consacrez du temps plutôt que de l'argent (pour la configuration/maintenance). Héberger Fava soi-même a un coût négligeable (sur votre PC ou un serveur bon marché). Pas de frais de licence pour des utilisateurs supplémentaires.Payant (abonnement mensuel ou annuel). QuickBooks Online peut varier de 20 aˋplusde70à plus de 70 par mois selon le forfait. Il y a aussi des frais pour la paie ou les fonctionnalités avancées. De nombreuses petites entreprises acceptent ce coût pour le support et les mises à jour. Mais au fil des ans, le coût s'additionne et si vous arrêtez l'abonnement, vous perdez l'accès complet.Variable. Power BI Desktop est gratuit, mais l'abonnement Pro (pour partager des tableaux de bord) coûte environ 10 $/utilisateur/mois. D'autres outils BI varient (certains open source comme Metabase sont gratuits à utiliser). Cependant, il faut considérer le coût en temps pour développer des solutions BI et le coût de maintenance de l'infrastructure de données associée.

En résumé, Beancount + Fava vs QuickBooks : Beancount offre une transparence supérieure (vous voyez et contrôlez tout, et vos données ne disparaîtront pas et ne seront pas verrouillées) ainsi qu'une grande flexibilité (vous pouvez modéliser n'importe quoi dans le grand livre, pas seulement ce que QuickBooks prévoit). Cela demande plus d'auto-apprentissage (DIY), surtout pour l'automatisation et l'interface utilisateur. QuickBooks est une solution prête à l'emploi optimisée pour les besoins des petites entreprises – flux bancaires, facturation, paie – et fournit des mises à jour quasi en temps réel avec un effort minimal. Cependant, c'est une boîte noire à bien des égards ; vous faites confiance au logiciel pour gérer vos données correctement, et il est parfois difficile de corriger des erreurs ou de comprendre l'origine d'un chiffre. De nombreux utilisateurs de Beancount sont des personnes frustrées par ces boîtes noires qui préfèrent échanger un peu de commodité contre de la clarté.

Beancount + Fava vs Power BI (ou autre BI) : Ils peuvent être complémentaires. Power BI n'est pas un système comptable ; c'est un outil d'analyse. En fait, une configuration avancée pourrait utiliser Beancount pour consolider et garantir l'exactitude des données, puis utiliser Power BI pour créer des tableaux de bord exécutifs à partir de ces données. Si nous comparons directement, Power BI offre plus de flexibilité visuelle et de combinaison de sources de données. Les graphiques de Fava sont plus simples par conception (axés sur les besoins comptables) mais nécessitent beaucoup moins de travail pour démarrer (ils fonctionnent immédiatement sur votre grand livre, sans modélisation). Si votre objectif est purement d'obtenir des analyses et de beaux visuels en étant prêt à préparer les données, un outil BI est approprié. Mais si votre objectif est de tenir vos comptes et d'obtenir des rapports interactifs comme sous-produit, Fava seul suffit souvent.

On pourrait également comparer avec d'autres outils de finances personnelles (ex : Mint ou YNAB) ou des systèmes ERP, mais la question porte spécifiquement sur les plateformes d'analyse en temps réel. Dans ce domaine : Beancount + Fava s'apparente à un tableau de bord financier « en direct » personnalisé et open-source, QuickBooks est une comptabilité automatisée propriétaire avec synchronisation bancaire en direct, et Power BI est une plateforme d'analyse flexible (non spécifique aux finances mais utilisable pour celles-ci).

Une citation révélatrice contrastant l'open-source et le commercial : « Avec un peu d'effort initial, les outils open source peuvent en réalité être bien meilleurs que les solutions commerciales, et bien plus flexibles et extensibles. » Cela résume parfaitement le compromis. QuickBooks est poli et fonctionne immédiatement pour les scénarios courants. Mais dès que vous voulez sortir du cadre, vous vous heurtez à un mur. Avec Beancount, vous rencontrez rarement de limites – vous avez le code source et les données, vous pouvez étendre ou intégrer selon vos besoins. Le prix à payer est votre volonté de bricoler.

Avantages et inconvénients de l'utilisation de Fava et Beancount pour des analyses basées sur les données

Enfin, synthétisons les avantages et les inconvénients de Beancount + Fava en tant que solution d'analyse financière :

Avantages

  • Transparence et confiance : Tous les calculs (totaux, soldes) proviennent d'un grand livre en texte brut que vous pouvez inspecter. Il n'y a pas de comportement mystérieux. Cela renforce considérablement la confiance dans les chiffres — un point crucial si vous basez vos décisions sur ceux-ci. C'est une « comptabilité propre et transparente » sans enfermement propriétaire. Vous pouvez toujours remonter d'un chiffre rapporté jusqu'aux transactions sous-jacentes, ce qui est l'essence même de l'analyse basée sur les données.
  • Reproductibilité et piste d'audit : Comme vous pouvez utiliser le contrôle de version pour votre grand livre, vous disposez d'un historique des modifications. Si quelque chose semble incorrect ce mois-ci, vous pouvez effectuer un « diff » du grand livre pour voir ce qui a changé. Cela signifie également que vous pouvez expérimenter (« et si je reclassais cette dépense ? ») et annuler facilement. Le travail basé sur les données implique souvent des itérations, et un grand livre auditable encourage cela.
  • Flexibilité d'analyse : Vous n'êtes pas limité aux rapports prédéfinis. La combinaison des requêtes BQL, des scripts Python et des filtres de Fava permet de répondre à presque toutes les questions financières. Vous voulez savoir « Combien ai-je dépensé chez Starbucks chaque année au cours des 5 dernières années ? » — une seule requête suffit. Ou « Quelle est la moyenne mobile de mes dépenses sur 3 mois par rapport à mes revenus ? » — c'est scriptable avec Python + pandas par-dessus une requête. Cette flexibilité est un atout majeur pour ceux qui aiment fouiller dans les données. Les utilisateurs avancés ont même créé des extensions pour calculer des indicateurs financiers (par exemple, des mesures de performance de portefeuille) au sein de Fava. En résumé, vous pouvez obtenir des informations très granulaires que de nombreux logiciels standard ne peuvent pas fournir.
  • Intégration et extensibilité : Le système de plugins de Fava et l'API accessible de Beancount permettent aux outils d'évoluer avec vos besoins. Si demain vous devez suivre un nouveau type d'actif ou intégrer un nouveau flux de données, vous pouvez étendre le système. L'architecture (entrée en texte brut, sorties diverses) est très extensible. Cela contraste avec les systèmes fermés où vous devriez demander une fonctionnalité et attendre.
  • Consolidation des données : Pour les particuliers et même les entreprises, la possibilité de consolider tous les comptes (plusieurs banques, courtiers, etc.) dans un seul système est puissante. De nombreuses solutions commerciales vous isolent (ou facturent un supplément pour le multi-devises ou les entités multiples). Avec Beancount, vous pouvez tout regrouper. Cela donne une vue d'ensemble holistique, permettant des analyses transversales. Par exemple, vous pouvez calculer votre véritable allocation d'actifs globale ou votre flux de trésorerie net combinant personnel et professionnel si vous le souhaitez, car il ne s'agit que de saisies de données.
  • Rentabilité : C'est gratuit et open source. Pour un usage personnel, c'est un avantage majeur (pas d'abonnement comme pour de nombreuses applications de budget). Pour les startups ou les petites organisations, ces économies peuvent s'accumuler. Mais au-delà du coût monétaire, c'est aussi efficace en termes de fonctionnement (Fava peut tourner sur un tout petit serveur) et de portabilité (pas de migrations coûteuses si vous dépassez le système — c'est juste du texte).
  • Communauté et partage de connaissances : La communauté de la comptabilité en texte brut (Beancount, Ledger, etc.) est très collaborative. Les gens partagent leurs configurations, leurs scripts personnalisés et leurs astuces sur des forums et des blogs. Cela signifie que si vous avez un besoin spécifique, il est probable que quelqu'un ait déjà abordé quelque chose de similaire. Par exemple, plusieurs utilisateurs ont contribué à des outils d'importation intelligents et même à la catégorisation par apprentissage automatique (ex. : la bibliothèque « smart_importer » qui utilise scikit-learn pour catégoriser automatiquement les bénéficiaires en fonction des données passées). Avec le temps, l'utilisation de Beancount peut devenir de plus en plus intelligente si vous exploitez ces outils communautaires — se rapprochant de la commodité des logiciels commerciaux tout en conservant la transparence.
  • Autonomie et apprentissage : L'utilisation de Fava/Beancount vous oblige à vous impliquer davantage dans vos données financières. De nombreux utilisateurs rapportent avoir acquis une bien meilleure compréhension de leurs finances grâce à ce système qu'avec des applications automatisées. C'est un peu comme la différence entre cuisiner son propre repas et prendre un fast-food — plus d'efforts, mais vous savez exactement ce qu'il y a dedans et c'est plus sain à long terme. Pour des analyses basées sur les données, cette « appropriation » du processus peut mener à des découvertes plus significatives, car vous pouvez facilement cadrer et recadrer votre vision des données.

Inconvénients

  • Configuration initiale et courbe d'apprentissage : Soyons honnêtes — Beancount et Fava ne sont pas aussi « plug-and-play » que, disons, QuickBooks ou Mint. Vous devez apprendre les bases de la comptabilité en partie double (si vous ne les connaissez pas), la syntaxe des fichiers Beancount, et éventuellement un peu de Python si vous voulez une personnalisation poussée. Cet investissement initial peut être un obstacle. Pour les utilisateurs non techniques, cela peut être intimidant (bien que l'interface de Fava aide beaucoup en offrant une expérience plus conviviale une fois configurée). À l'inverse, de nombreux outils commerciaux cachent les concepts comptables derrière des interfaces simplifiées (ce qui peut être à la fois un avantage et un inconvénient).
  • Pas de synchronisation bancaire intégrée : Par conception, il ne se connecte pas automatiquement aux API bancaires (qui sont souvent propriétaires ou nécessitent des accords). Vous devez donc soit télécharger manuellement vos relevés, soit configurer votre propre automatisation (via des scripts Python ou des services comme Plaid qui sont souvent payants). Pour ceux qui ont l'habitude que les flux bancaires « fonctionnent tout seuls », cela peut sembler être un retour en arrière. Comme l'a noté un utilisateur, en essayant Beancount, il « n'a pas trouvé de moyen raisonnable d'obtenir des flux bancaires » — cela peut être une frustration à moins d'être prêt à coder ou à utiliser des solutions tierces.
  • Le temps réel, c'est votre temps : Obtenir une réactivité en temps réel est possible mais n'est pas prêt à l'emploi. Vous devez configurer des tâches cron ou des déclencheurs comme décrit. Si quelque chose casse (par exemple, une banque change son format CSV), vous devez corriger votre importateur. Avec un service comme QuickBooks, le fournisseur s'occupe de ces changements. Essentiellement, vous êtes votre propre support informatique. C'est le compromis classique de l'open source. Pour un amateur, cela peut être acceptable, voire amusant ; pour un propriétaire d'entreprise débordé, cela peut être une nuisance.
  • Limites de mise à l'échelle et de performance : Pour des jeux de données très volumineux (plusieurs années de transactions détaillées), Beancount peut devenir plus lent. Il est généralement efficace (des utilisateurs ont des dizaines de milliers d'entrées sans problème). Mais comme vu dans le fil de discussion HN, un utilisateur a dû « clôturer les comptes » annuellement après 3 ans, car le fichier grossissait, afin de maintenir la rapidité des requêtes. Le code de Beancount v2 est en Python et peut être un peu lent pour des données massives, bien que la v3 (en cours de développement avec un cœur en C++) améliore cela. Il existe des solutions d'atténuation (diviser les fichiers, utiliser Beanpost pour décharger vers une base de données, etc.), mais c'est un point à considérer. QuickBooks a probablement une mise à l'échelle interne et la plupart des outils de BI sont construits sur des bases de données conçues pour de gros volumes — ils pourraient donc gérer plus gracieusement les grands ensembles de données.
  • Lacunes fonctionnelles (par rapport aux logiciels dédiés) : Beancount + Fava se concentrent sur la tenue de livres et l'analyse. Il leur manque certaines fonctionnalités auxiliaires : par exemple, pas de traitement de la paie, pas de génération de factures (sans script personnalisé), pas de formulaires de préparation de taxes intégrés, etc. Si votre objectif est une gestion financière exhaustive, vous devrez peut-être compléter avec d'autres outils. Par exemple, vous pourriez gérer la paie via un service tiers et simplement importer les écritures de journal. Cela fonctionne, mais ce n'est pas aussi harmonieusement intégré qu'un ERP qui fait tout. Pour les finances personnelles, Beancount ne possède pas d'outils comme des planificateurs de remboursement de dettes intégrés ou des systèmes d'enveloppes budgétaires (bien que vous puissiez les simuler). On attend de vous que vous en tiriez des conclusions puis preniez des décisions, plutôt que de recevoir des conseils prescriptifs ou des modules de planification.
  • Interface utilisateur et finition : Bien que Fava soit très agréable, il n'est pas aussi poli ou guidé que certaines offres commerciales. Il n'y a pas d'« assistant » pour vous accompagner dans la configuration ou s'assurer que vous ne commettez pas d'erreurs. Vous devrez peut-être lire la documentation pour savoir comment faire X. Et certaines fonctionnalités d'interface que l'on pourrait attendre (catégorisation par glisser-déposer, annulation en plusieurs étapes, notifications push mobiles, etc.) sont absentes. L'interface de Fava s'améliore constamment (grâce aux contributions), mais elle est construite par une petite communauté. Si vous êtes habitué aux interfaces SaaS modernes et élégantes, Fava peut sembler un peu utilitaire (bien que certains préfèrent sa simplicité épurée). Sur mobile, Fava fonctionne (surtout en lecture seule) mais n'est pas totalement optimisé pour les petits écrans ; QuickBooks propose des applications mobiles dédiées par exemple.
  • Dépendance vis-à-vis de la communauté / du mainteneur : Martin Blais (l'auteur de Beancount) et des contributeurs maintiennent Beancount, et d'autres maintiennent Fava. Le développement peut être sporadique (ce qui est normal pour l'OSS). Bien que le logiciel soit très utilisable actuellement, si vous avez besoin d'une nouvelle fonctionnalité ou s'il y a un bug, vous devrez soit le corriger vous-même, soit attendre. Avec un produit payant, vous avez un support à appeler (la qualité varie, mais au moins il existe). Cela dit, la communauté est généralement très serviable via la liste de diffusion ou les tickets GitHub.
  • Connaissances en comptabilité requises : Surtout pour un usage professionnel, vous devez savoir ce que vous faites. Beancount ne vous empêchera pas de faire une saisie « incorrecte » d'un point de vue comptable (sauf en cas de déséquilibre ou de transaction non appariée). En revanche, QuickBooks possède des garde-fous (et aussi une complexité cachée comme le suivi automatique des revenus différés, etc., si vous les activez). Si vous n'êtes pas prudent dans Beancount, vous pourriez faire une erreur dans une écriture de régularisation et ne pas vous en rendre compte avant de remarquer un problème dans un rapport. Essentiellement, Beancount suppose que vous maîtrisez les bases de la comptabilité ou que vous êtes prêt à apprendre. C'est un avantage pour certains (oblige à bien faire les choses), mais un inconvénient si vous voulez un système qui ne demande aucune réflexion.

Pour résumer les points positifs et négatifs : Beancount + Fava offre un contrôle et une adaptabilité inégalés pour ceux qui souhaitent s'impliquer profondément dans leurs données financières, ce qui en fait un outil puissant pour obtenir des analyses basées sur les données. Il transforme vos comptes en un ensemble de données interrogeables et vos rapports en une application web extensible. Le prix de cette puissance est l'investissement que vous consacrez à sa configuration et à sa maintenance, ainsi que la nécessité d'une certaine autonomie dans la gestion de votre système. Contrairement à QuickBooks ou à une suite de BI, qui vous accompagnent davantage et fournissent certaines fonctionnalités automatiquement, Beancount vous offre une boîte à outils. Si vous avez un esprit analytique, cette boîte à outils peut être incroyablement libératrice — vous pouvez extraire des informations que les rapports standard ne montreraient jamais. Comme l'a écrit un utilisateur qui a automatisé son grand livre Beancount au fil des ans : « les outils open source (comme Beancount) ne répondent pas à tous mes besoins [immédiatement]… Je suis obsédé par l'automatisation de tout… j'ai construit ce dont j'avais besoin ». Cela résume bien l'approche : si vous êtes prêt à construire ce dont vous avez besoin, qu'il s'agisse de quelque chose de petit ou de grand, Fava/Beancount vous soutiendra et ne vous cachera jamais vos données. Pour un esprit axé sur les données, c'est un avantage considérable.

En conclusion, utiliser Fava et Beancount pour l'analyse financière en temps réel, c'est un peu comme avoir son propre laboratoire personnalisable pour ses finances. Vous obtenez une clarté, une flexibilité et une appropriation difficiles à égaler avec des plateformes propriétaires, ce qui en fait un choix idéal pour ceux qui apprécient ces aspects et sont prêts à sacrifier un peu de commodité pour les obtenir. Le paysage moderne montre même des approches hybrides — par exemple, certains pourraient utiliser un outil commercial mais exporter périodiquement vers Beancount pour une analyse plus approfondie, ou inversement utiliser Beancount comme outil principal et un outil de BI pour la présentation. Fort des connaissances issues de cette étude, on peut décider en toute connaissance de cause si Fava+Beancount correspond à ses besoins et, le cas échéant, exploiter ses capacités pour obtenir des analyses financières riches et en temps réel.

Sources :

  • Blais, M. (2020). Beancount DocumentationDesign principles and usage. [En ligne]. Disponible : beancount.github.io
  • Aumayr, D., Gerstmayr, A. (2025). Fava Documentation & GitHub Repository. [En ligne]. Disponible : beancount.github.io/fava/ et github.com/beancount/fava
  • LowEndBox. (2025). “Beancount: Lightweight FOSS Double-Entry Accounting...from the Command Line!” LowEndBox Tutorial.
  • Fang-Pen Lin. (2024). “My Beancount books are 95% automatic after 3 years.” Personal Blog Post.
  • Google Groups – Beancount Forum. (2023). Discussion sur l'intégration de Grafana (Josh D. et Andreas G.)
  • QuickBooks Marketing Page. “Bank Feeds – Understand all your transactions in an instant.” Intuit QuickBooks.
  • Watt, A. (2023). “Beancount for Personal Finance.” Alex Watt Blog.
  • Reddit – r/plaintextaccounting. Diverses discussions (2021-2023) sur l'utilisation professionnelle de Beancount et la visualisation de grands livres.
  • Fava Extension DocumentationHelp: Extensions.
  • fava-dashboards GitHub README – Plugin de tableaux de bord personnalisés d'Andreas Gerstmayr.
  • Liste Awesome Beancount – ressources sélectionnées par la communauté pour Beancount.