Aller au contenu principal

Comment Beancount et Fava alimentent des tableaux de bord

Beancount et Fava transforment des registres en texte brut en tableaux de bord en direct : soldes interrogeables

Introduction​

Beancount est un système de comptabilité en partie double open-source qui utilise des fichiers en 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 puissante interface web pour Beancount, offrant une interface interactive pour consulter des rapports, des visualisations et gérer votre grand livre. Dans ce rapport, nous explorons les capacités fondamentales de Beancount et Fava, et comment parvenir à une analyse financière en temps réel ou quasi temps 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 et de plugins personnalisés, des cas d'usage en finances personnelles et pour 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 des analyses pilotées par les données.

Explorez un grand livre d'exemple en direct :

Ouvrir Example Ledger dans un nouvel onglet

Tableau de bord de portefeuille de cryptomonnaies sur beancount.io suivant les soldes Bitcoin, Ethereum et Solana avec un graphique de valeur nette

Explorer le grand livre en direct →

Capacités principales de Beancount et Fava​

Beancount (Moteur de comptabilité en texte simple)​

  • Grand livre en partie double en texte brut : Beancount stocke les transactions dans un unique fichier texte .beancount (ou plusieurs fichiers inclus ensemble). Chaque transaction doit s'équilibrer (total des débits = total des crédits) entre les comptes, ce qui garantit l'intégrité comptable. Le format en texte brut signifie que vos données sont lisibles par l'homme, contrôlables par version et non enfermées chez un fournisseur.
  • Comptes hiérarchiques et flexibles : Vous pouvez définir n'importe quels comptes (par exemple Assets:Bank:Checking, Expenses:Food:Coffee) dans une hiérarchie. Beancount n'impose pas de plan comptable, il fonctionne donc pour les finances personnelles, la comptabilité des petites entreprises, les investissements, etc. – c'est "flexible : fonctionne pour les finances personnelles, la comptabilité des petites entreprises, les cryptomonnaies, les investissements boursiers, et plus encore."
  • Devises et matières premières multiples : Beancount prend en charge nativement plusieurs devises et matières premières (par exemple les actions, les cryptomonnaies). 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 des données de prix sont fournies. Cela le rend adapté aux portefeuilles et à la finance internationale.
  • Contrôles et équilibrages automatisés : Le système prend en charge les assertions de solde (vous pouvez déclarer quel devrait être le solde d'un compte à une date donnée, et Beancount signalera une erreur si ce n'est pas le cas) et les transactions de solde pour la clôture des livres. Il prend également en charge les écritures d'ouverture/clôture de capitaux propres et le calcul des résultats reportés pour la clôture des périodes. Ces éléments aident à garantir la cohérence de vos livres et à détecter les erreurs tôt.
  • Puissant moteur de requêtes et de rapports : Beancount est livré avec un langage de requête BQL (Beancount Query Language). Utilisez bea query pour BQL dans le terminal et bea report pour les états standard ; installez le démarrage rapide de la CLI plutôt que les anciens scripts console en amont. Vous pouvez interroger le grand livre pour des rapports personnalisés (par exemple la liste des dépenses par bénéficiaire, les flux de trésorerie d'une période) – en traitant essentiellement le grand livre comme une base de données. Il reste rapide même avec des milliers de transactions. Exportez en CSV avec bea query -f csv -o report.csv "BQL", en remplaçant BQL par votre requête. Voir Modèles de rapports financiers pour des exemples complets.
  • Extensibilité via des plugins : Beancount est écrit en Python et permet à des plugins personnalisés d'étendre ses fonctionnalités. Les plugins peuvent appliquer des règles ou des calculs supplémentaires 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 d'un 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 avec d'autres systèmes.
  • Importateurs pour données externes : Une fonctionnalité pratique essentielle est le framework d'importation dans le package distinct beangulp (il n'y a pas de module beancount.ingest dans Beancount 3.2.3). Vous écrivez une classe d'importateur qui hérite de beangulp.Importer et implémente identify, extract et account. Elle analyse un fichier téléchargé (CSV, OFX, relevés PDF, etc.) et le convertit en écritures Beancount. C'est essentiel pour l'automatisation (nous y reviendrons plus loin).
  • Auditable et compatible avec le contrôle de version : Comme c'est du texte brut, vous pouvez conserver votre grand livre dans Git ou un autre système de contrôle de version. Chaque changement est transparent, et vous disposez d'un historique complet des modifications. Cela simplifie les audits ou la revue des changements (de nombreux utilisateurs committent les changements de chaque jour dans un dépôt Git, fournissant un journal infalsifiable de toutes les écritures financières). Ce niveau de transparence est un différenciateur majeur par rapport aux logiciels comptables fermés – "pas d'enfermement SaaS — juste une comptabilité propre et transparente avec un reporting puissant."

Fava (Interface Web pour Beancount)​

  • Interface web interactive : Fava fournit un serveur web local qui restitue votre grand livre Beancount dans une interface riche. Il affiche les rapports essentiels (compte de résultat, bilan, etc.), les registres de comptes et les journaux dans le navigateur avec des contrôles interactifs. L'interface est dynamique et conviviale comparée à la ligne de commande. Vous le lancez avec un simple fava yourfile.beancount et obtenez une application web pour vos livres.
  • Graphiques et diagrammes intégrés : Fava génère des graphiques pour vous aider à visualiser vos données. Par exemple, il inclut un graphique linéaire de valeur nette dans le temps, des diagrammes à barres pour les revenus vs les dépenses par mois, et des graphiques en secteurs/treemaps pour la répartition des dépenses. Ces visuels se mettent à jour avec vos données et prennent en charge différentes vues (par exemple « au coût » vs « à la valeur de marché » pour les investissements). Nous explorerons ces capacités de visualisation en détail plus loin.
  • Filtrage et recherche : En haut des pages de Fava, une barre de filtres vous permet de découper et d'analyser vos données en temps réel. Vous pouvez filtrer par période (par exemple année, trimestre, mois), par regex de compte, par bénéficiaire, par libellé, ou par tags/liens. Cela facilite l'inspection de données en temps réel – par exemple, filtrez rapidement sur « Tag=Travel » 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 de filtres ou via la page Query (où vous pouvez exécuter directement des requêtes BQL).
  • Prise en charge de plusieurs fichiers et consolidation : Fava peut charger plusieurs fichiers Beancount à la fois (utile si vous séparez vos grands livres) et basculer entre eux. Il peut aussi les consolider si nécessaire (par exemple, les grands livres personnels et professionnels consultés ensemble).
  • Saisie et édition de données : Fait unique, Fava n'est pas 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 (il insérera l'écriture dans votre fichier .beancount). Vous pouvez aussi ouvrir le fichier source dans un éditeur externe depuis Fava. Fava prend également en charge les raccourcis clavier pour les utilisateurs avancés. Cela transforme Fava en un système comptable léger où vous pouvez saisir et consulter les données depuis la même interface.
  • Rapports et exploration des comptes : Fava fournit des rapports comptables standard : compte de résultat (profits et pertes), bilan, balance générale 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 aussi les « plus-values latentes » pour les investissements si vous disposez de données de prix. Il génère une vue journal de toutes les écritures et permet de filtrer ce journal selon divers critères (idéal pour retrouver des transactions spécifiques).
  • Gestion des documents : Si vous joignez des reçus ou des relevés, Fava aide à les organiser. Beancount a la 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. C'est utile pour conserver les pièces justificatives liées à vos données de 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 fournies (par exemple un rapport de liste de portefeuille pour les investissements). Nous discuterons des extensions personnalisées plus loin, mais essentiellement la conception de Fava permet d'injecter de nouvelles pages, et même du JavaScript personnalisé, via son API d'extension. Cela signifie que si une analyse ou un tableau de bord particulier n'est pas intégré, un utilisateur avancé peut l'ajouter.
  • Performance : Fava est efficace – il recharge les données en mémoire et sert les pages rapidement. L'analyse Beancount sous-jacente est rapide, donc les grands livres personnels typiques se chargent en une seconde ou deux. En pratique, Fava peut gérer des grands livres personnels de nombreuses années, bien que des fichiers extrêmement volumineux (des dizaines de milliers de transactions) puissent bénéficier d'une certaine optimisation (par exemple archiver les anciennes écritures).
  • Accès web et mobilité : En exécutant Fava sur un serveur ou même 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 pour pouvoir consulter leurs finances en déplacement (éventuellement sécurisé derrière un mot de passe ou un VPN, car Fava n'a pas d'authentification intégrée). Cela vous donne essentiellement une « application web » auto-hébergée pour vos finances, sans confier vos données à un tiers.

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

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

Parvenir à une analyse en temps réel ou quasi temps réel avec Beancount et Fava implique d'automatiser le flux de données vers votre grand livre et de veiller à ce que les outils affichent des informations à jour. Par défaut, Beancount est un processus par lots (vous ajoutez des écritures au fichier, puis consultez les rapports), et Fava détectera les changements et nécessitera une actualisation. Cependant, avec la bonne configuration, vous pouvez rationaliser les mises à jour afin que les nouvelles transactions et les changements apparaissent presque instantanément.

Détection des modifications de fichier : 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, la page affiche une notification « File change detected. Click to reload. ». Fava interroge son endpoint get_changed. Lorsque le surveillant signale un changement, Fava recharge le grand livre côté serveur et la notification propose un clic pour actualiser la vue. En pratique, ce rechargement est très rapide (généralement moins d'une seconde pour des grands livres typiques). Cela signifie que Fava peut servir de tableau de bord en direct si votre fichier de grand livre est mis à jour fréquemment. Il attend votre clic par défaut pour ne pas perturber votre vue.

Pipeline d'importation/mise à jour continu : 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 mettent en place une tâche cron (ou tâche planifiée) pour récupérer périodiquement les nouvelles transactions des institutions financières (par exemple chaque nuit, ou chaque heure) et les ajouter au grand livre. Par exemple, vous pourriez exécuter un importateur beangulp sur le dernier téléchargement bancaire (CSV ou OFX). Un utilisateur de Beancount a construit un pipeline d'automatisation tel que ses livres se mettent à jour tout seuls : "voir mon livre comptable se mettre à jour sans que je le touche dans un format ouvert me procure une joie pure". Cela a été réalisé en se connectant aux API bancaires et en planifiant des mises à jour régulières. Un script Python personnalisé utilisant des API bancaires (par exemple Plaid) peut s'exécuter selon un calendrier et écrire de nouvelles écritures dans le grand livre. Validez chaque exécution avec bea check avant qu'elle ne touche votre fichier principal. Après chaque importation planifiée, si Fava est en cours d'exécution, vous pouvez simplement actualiser Fava pour voir les nouvelles données.

  • Surveillants de fichiers et déclencheurs : Au lieu de planifications temporelles, vous pouvez utiliser des surveillants 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 sous Linux ou similaire) et exécuter immédiatement la routine d'importation, puis signaler à Fava de recharger. Bien que Fava ne prenne pas encore en charge le rechargement en direct vers le navigateur, vous auriez au moins les données mises à jour afin qu'à la prochaine consultation de la page ou clic sur recharger, elles soient à jour. 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 construire un démon qui alimente vos tableaux de bord en continu.

  • Intégration directe par API : Au lieu de passer par des fichiers, les utilisateurs avancés pourraient se connecter directement aux API bancaires (comme Plaid ou les API Open Banking régionales) pour récupérer fréquemment les transactions. Un individu motivé peut scripter des importations « en direct » en boucle (avec une limitation de débit appropriée) – en interrogeant effectivement la banque pour de nouvelles données toutes les quelques minutes. Rien ne vous empêche de "vous inscrire à l'API Plaid et faire la même chose [automatisation] en local". Chaque nouvelle transaction peut être ajoutée au fichier Beancount à 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.

Actualisation des données dans Fava : Une fois vos données mises à jour, faire afficher celles-ci par Fava est simple : une actualisation du navigateur (F5) ou un clic sur la notification de rechargement chargera le dernier état du grand livre. Notez que fava --debug ne pousse pas les changements de grand livre vers le navigateur. Son texte d'aide est « Turn on debugging ». Il exécute le débogueur Werkzeug et le rechargeur de code pour le propre code de Fava et active le rechargement automatique des modèles Jinja. Cela recharge le code serveur et les modèles de pages pendant le développement d'extensions. Cela n'a aucun rapport avec le surveillant de fichiers qui détecte les changements de grand livre. Alternativement, si vous construisez un front-end personnalisé, vous pourriez le faire interroger l'endpoint get_changed de Fava et actualiser lorsqu'il signale de nouvelles données.

Calculs instantanés : L'analyse rapide de Beancount signifie que même si vous mettez à jour votre fichier de grand livre toutes les quelques minutes, le délai entre récupération des données → mise à jour du fichier → rechargement de Fava est court. Par exemple, un utilisateur note que le rechargement de Fava après avoir modifié le fichier « est à peine perceptible… définitivement 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 actualiser pour imiter un tableau de bord en direct. (Pour une expérience véritablement en direct, on pourrait créer un petit script pour actualiser automatiquement le navigateur ou utiliser la fonction d'actualisation automatique toutes les N secondes du navigateur.)

Rapprochement et alertes : Pour faire confiance aux données en temps réel, vous voulez aussi rapprocher les soldes fréquemment. Beancount facilite cela avec les assertions de solde et un indicateur « à jour ». En fait, Fava colore les comptes en vert, jaune ou rouge lorsque la directive open porte la métadonnée fava-uptodate-indication. La couleur reflète si les vérifications de solde récentes couvrent les dernières écritures du compte. Cela peut servir à voir rapidement si le solde d'un compte dans le grand livre correspond au dernier relevé de la banque. Dans une configuration quasi temps réel, vous pourriez automatiser les vérifications de solde quotidiennes (ainsi chaque matin, le grand livre dispose du solde de clôture de la veille de la banque pour chaque compte). L'indicateur de Fava vous dirait alors si votre importation automatique a manqué quelque chose ou s'il y a une divergence, vous donnant confiance dans l'exactitude des données « en direct » que vous voyez.

Exemple d'automatisation : Supposons que vous vouliez des mises à jour quotidiennes des flux de trésorerie. Vous pourriez définir une tâche cron s'exécutant à 3h du matin chaque nuit : elle exécute un script Python qui utilise l'API de votre banque pour récupérer les transactions du dernier jour, les écrit dans import_today.beancount, puis ajoute ce fichier à votre grand livre principal. Il écrit aussi une assertion de solde pour la fin de journée. Au 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 faites une dépense pendant la journée, vous pourriez 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 la possibilité d'ajouter manuellement à la volée) 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 de vos dépenses, vous enregistrez rapidement la transaction (comme on le ferait dans un chéquier) – alors c'est vous qui êtes le flux en temps réel. C'est plus manuel, mais certains utilisateurs apprécient la prise de conscience que cela procure. Pour des mises à jour réellement en streaming sans étapes manuelles, vous devrez investir dans le scripting et éventuellement utiliser des API tierces comme discuté.

En résumé, en combinant l'automatisation des importations de Beancount avec l'actualisation rapide de Fava, vous pouvez obtenir des données financières quasi temps réel. Ce n'est peut-être pas « simple comme bonjour » d'atteindre 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 défenseur de la comptabilité en texte brut, un peu d'effort en amont peut produire 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, en transformant les transactions brutes en informations exploitables.

Prix gérés pour les valorisations hébergées​

Live Prices fournit des cotations de valorisation prises en charge aux grands livres Beancount.io hébergés. Le chargeur vérifie les nouvelles données lorsqu'un grand livre se charge après la fenêtre d'actualisation de cinq minutes ; une observation d'un fournisseur peut être plus ancienne. Ce n'est pas un flux en streaming.

Les contrôles Fava décrits ici appartiennent à Fava. L'ajout d'un include géré n'ajoute pas ces contrôles au visualiseur hébergé ni ne transforme une vue au coût en vue à la valeur de marché. Fava en amont nécessite des fichiers de prix locaux. Une version compatible de bea peut les exporter ; voir le guide de configuration pour la compatibilité.

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 de compte de résultat de Fava (dans l'interface web) prend en charge des visualisations riches comme les treemaps (illustrées) et les diagrammes en 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é selon son montant – vous pouvez voir instantanément que Rent (le grand bloc vert) domine les dépenses. La barre de filtres supérieure et les contrôles (en haut à droite) permettent de changer la devise, le type de graphique et la période (par exemple, vue de données mensuelles). Fava fournit aussi des graphiques linéaires (par exemple la valeur nette dans le temps) et des diagrammes à 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 de 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/diagramme en soleil des revenus et dépenses : Sur la page compte de résultat, Fava peut afficher vos revenus et dépenses sous forme de treemap ou de diagramme en soleil. Ceux-ci sont parfaits pour une visualisation « d'un coup d'œil » des flux de trésorerie. Par exemple, si vos dépenses mensuelles sont affichées sous forme de treemap, l'aire 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 le loyer ou l'hypothèque, les impôts, etc.), tandis que les blocs plus petits montrent les dépenses mineures. C'est extrêmement utile pour repérer les tendances de dépenses – si le bloc « Dining Out » a grandi chaque mois, vous le remarquerez visuellement. Vous pouvez basculer vers un diagramme en soleil pour voir les répartitions hiérarchiques (par exemple l'anneau extérieur pourrait montrer des sous-catégories comme Groceries vs Restaurants au sein de la catégorie Food). Ces graphiques se mettent à jour pour la période que vous avez filtrée (un mois, depuis le début de l'année, etc.), vous donnant une visualisation instantanée des flux de trésorerie pour cette période. Un utilisateur du forum de comptabilité en texte brut a noté : "J'utilise beaucoup les treemaps de revenus et de dépenses. Elles donnent une excellente sensation visuelle de nos mouvements budgétaires." – ce type de compréhension immédiate est exactement ce que visent les graphiques de Fava.

  • Valeur nette et solde dans le temps : Fava fournit un graphique linéaire de la valeur nette dans le temps (sur la page « Balance Sheet » ou « Statistics »). Ce graphique trace la somme de vos actifs moins vos passifs à chaque instant (par jour, semaine ou mois). Il est inestimable pour repérer les tendances – vous pouvez voir la trajectoire de vos finances (par exemple régulièrement ascendante, ou avec des creux à certains moments). Si vous avez des investissements, vous pouvez basculer entre l'affichage à la valeur au coût vs à la valeur de marché (si des données de prix sont enregistrées) – par exemple, vous pourriez voir que votre valeur nette à la valeur de marché fluctue avec les cours des actions, tandis qu'au coût elle est plus lisse. Fava peut aussi afficher les soldes de comptes dans le temps. Si vous cliquez sur un compte (par exemple 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 trésorerie – ce qui est effectivement un graphique de flux de trésorerie (la pente de la ligne de solde indique le flux de trésorerie net). Si elle est descendante, vous savez que vous dépensez plus que vous ne gagnez sur cette période. En examinant ces tendances, vous pourriez repérer des schémas comme « chaque décembre mon épargne baisse (dépenses de vacances) » ou « mes investissements ont fortement augmenté ce trimestre ».

  • Diagrammes à barres pour comparaison périodique : Dans la vue compte de résultat, Fava a des onglets pour « Monthly Profit », « Monthly Income », « Monthly Expenses », etc. Sélectionner ceux-ci affiche des diagrammes à barres par mois. Par exemple, Monthly Net Profit montrera le surplus/déficit de chaque mois sous forme de barre, ce qui facilite la comparaison des performances entre les mois. Vous pouvez rapidement identifier les valeurs aberrantes (par exemple une grande barre négative en avril signifie que ce mois a connu une perte/dépense inhabituelle). De même, le diagramme à barres « Monthly Expenses » empile ou regroupe les dépenses par catégorie par mois, vous pouvez donc voir quelles catégories fluctuent. C'est parfait pour repérer les tendances dans le temps – par exemple vous pourriez remarquer que vos dépenses « Travel » culminent chaque été, ou que les factures de « Utilities » sont plus élevées en hiver. Fava vous donne essentiellement certaines des capacités d'une application de budget (suivi des tendances) mais avec une personnalisation totale (puisque vous définissez les catégories et la façon dont elles s'agrègent).

  • Filtrage et inspection de données en temps réel : Les visualisations de Fava ne sont pas statiques ; elles fonctionnent en tandem avec le filtrage de Fava. Supposons que vous vouliez inspecter un scénario spécifique : « À quoi ressemblent mes flux de trésorerie trimestriels pour mes comptes professionnels uniquement ? » Vous pouvez définir le filtre temporel sur T1 2025 et filtrer les comptes sur votre hiérarchie Business – Fava mettra instantanément à jour les graphiques pour afficher le résultat net, la treemap des dépenses, etc., mais uniquement pour ce sous-ensemble. Ce découpage interactif signifie que vous pouvez faire des analyses ad hoc très rapidement, sans écrire de requêtes. La vue Journal prend également en charge le filtrage en direct : vous pouvez rechercher par bénéficiaire ou sous-chaîne de libellé et voir immédiatement une liste filtrée de transactions. Si vous consultez des données en temps réel (disons que vous venez d'importer les transactions de la semaine dernière), vous pouvez filtrer par un tag comme #uncategorized pour voir les nouvelles transactions qui pourraient nécessiter une catégorisation, ou par @pending (si vous marquez les écritures en attente) pour voir ce qui n'est pas encore réglé. Cette capacité d'inspection en temps réel aide aussi à 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 (répartition Exploitation/Investissement/Financement) d'emblée, vous pouvez l'imiter avec des requêtes personnalisées ou en structurant les comptes. Par exemple, vous pourriez taguer 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 exécute du BQL tel que SELECT sum(position) WHERE account ~ 'Assets:Bank:Checking'. Elle renvoie le solde du compte courant derrière les graphiques. L'exemple détaillé ci-dessous montre le cycle complet. Cela dit, la plupart des utilisateurs particuliers trouvent la combinaison des tendances de solde et des graphiques de revenus/dépenses suffisante pour comprendre les flux de trésorerie.

  • Avoirs et visualisation de portefeuille : Sur la page Holdings, Fava liste vos avoirs actuels en matières premières (par exemple actions, obligations, cryptomonnaies) avec les quantités, le coût, la valeur de marché et les plus-values latentes. Bien que ce soit un tableau, et non un graphique, il est très utile pour l'inspection en temps réel de l'état de votre portefeuille. Certaines extensions communautaires (comme fava-investor, discuté plus loin) ajoutent davantage de visuels pour les portefeuilles, tels que des diagrammes en secteurs d'allocation ou des graphiques de performance. Même sans extensions, vous pouvez voir par exemple comment la valeur de votre portefeuille d'actions change selon les derniers prix – si vous mettez à jour les cotations régulièrement (ce qui pourrait être automatisé quotidiennement), les graphiques de Fava refléteront les derniers prix datés disponibles, qui peuvent être plus anciens que le moment où vous ouvrez le rapport.

Exemple pratique : deux mois de dépenses​

Cet exemple s'exécute de bout en bout sur Beancount 3.2.3 avec beanquery 0.2.0. Enregistrez le grand livre sous example.beancount. Il contient deux versements de salaire et quatre dépenses.

option "title" "Analytics example"
option "operating_currency" "USD"
 
2024-01-01 open Assets:Bank:Checking USD
2024-01-01 open Expenses:Food:Groceries USD
2024-01-01 open Expenses:Food:Dining USD
2024-01-01 open Expenses:Housing:Rent USD
2024-01-01 open Income:Salary USD
2024-01-01 open Equity:Opening-Balances USD
 
2024-01-05 * "Employer" "January salary"
  Income:Salary  -3000.00 USD
  Assets:Bank:Checking  3000.00 USD
 
2024-01-08 * "Grocery Store" "Weekly groceries"
  Expenses:Food:Groceries  120.00 USD
  Assets:Bank:Checking  -120.00 USD
 
2024-01-12 * "Restaurant" "Dinner out"
  Expenses:Food:Dining  80.00 USD
  Assets:Bank:Checking  -80.00 USD
 
2024-02-01 * "Landlord" "February rent"
  Expenses:Housing:Rent  1000.00 USD
  Assets:Bank:Checking  -1000.00 USD
 
2024-02-05 * "Employer" "February salary"
  Income:Salary  -3000.00 USD
  Assets:Bank:Checking  3000.00 USD
 
2024-02-10 * "Grocery Store" "Weekly groceries"
  Expenses:Food:Groceries  150.00 USD
  Assets:Bank:Checking  -150.00 USD

Vérifiez-le d'abord. Puis exécutez la requête des dépenses par catégorie.

bea --file example.beancount check
bea --file example.beancount query "SELECT account, sum(position) WHERE account ~ 'Expenses' GROUP BY account ORDER BY account"

Un grand livre propre sort avec un code 0 de bea check ; les erreurs sont listées avec un code de sortie non nul. La requête renvoie une ligne par compte de dépenses.

        account          sum(position)
-----------------------  ------------
Expenses:Food:Dining        80.00 USD
Expenses:Food:Groceries    270.00 USD
Expenses:Housing:Rent     1000.00 USD

Deux requêtes supplémentaires complètent le tableau. Total des revenus et total des dépenses :

SELECT sum(position) WHERE account ~ 'Income'
SELECT sum(position) WHERE account ~ 'Expenses'

Elles renvoient (-6000.00 USD) et (1350.00 USD). Ainsi, le ménage a gagné 6 000,00 USD, dépensé 1 350,00 USD et épargné 77,5 %. Le solde du compte courant le confirme :

SELECT sum(position) WHERE account ~ 'Assets:Bank:Checking'

Il renvoie (4650.00 USD). Les mêmes requêtes s'exécutent sans modification dans la page Query de Fava. Fava 1.30.16 affiche les trois mêmes lignes de dépenses sous forme de tableau interactif.

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 la page rechargée, les graphiques sont recalculés. Aucun retraitement long 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 garder Fava ouvert et appuyer périodiquement sur actualiser pour obtenir des graphiques à jour – effectivement une surveillance financière en temps réel.

Par exemple, imaginez que vous dirigez une petite entreprise et que vous voulez surveiller la trésorerie disponible et les dépenses quotidiennes. Vous pourriez avoir Fava ouvert sur un tableau de bord personnalisé (peut-être en utilisant une extension ou l'écran de requête) qui affiche « Solde du compte de trésorerie aujourd'hui » et « 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 fournissent 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, tandis que ces outils poussent les mises à jour automatiquement. Mais fonctionnellement, l'information que vous obtenez est la même, avec l'avantage supplémentaire que vous pouvez explorer n'importe quel chiffre dans Fava (cliquez dessus pour voir les transactions sous-jacentes) – ce que beaucoup de tableaux de bord BI n'offrent pas.

En résumé, Fava transforme vos données comptables en informations visuelles immédiates : répartitions des flux de trésorerie, courbes de tendance, comparaisons dans le temps et filtrage interactif vous aident tous à voir l'histoire derrière les chiffres. Que vous inspectiez les dépenses de la semaine dernière pour des anomalies ou que vous passiez en revue des tendances pluriannuelles de valeur nette, les graphiques et rapports de Fava apportent de la clarté en temps réel (dès que vos données sont là). Ensuite, nous 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 et outils de visualisation externes​

Bien que Fava fournisse un riche ensemble de rapports et de graphiques intégrés, vous pourriez vouloir intégrer les données de Beancount à d'autres outils de business intelligence (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 les 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 dans un format différent. Grâce à l'ouverture de Beancount, il existe plusieurs façons de réaliser l'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 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 reflète 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 grand livre en 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 voulez (mise à jour en direct au fur et à mesure que la base se met à jour). 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 accès multi-utilisateurs, ou interfaces plus adaptées au mobile). C'est plus lourd en ingénierie, mais cela montre le potentiel : vous pouvez intégrer Beancount à des stacks web modernes relativement facilement. Une variante plus légère consiste à exporter les résultats de requêtes vers SQLite – en exécutant bea --file ledger.beancount query "SELECT ..." qui imprime un tableau que vous pouvez copier ou piper, et le CSV de tableur depuis la CLI attend les options d'export natives pour bea query. Certaines personnes utilisent SQLite comme intermédiaire pour se brancher à 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 dans le temps (dépenses, soldes) peuvent être traitées comme des séries temporelles. Il y a eu des discussions communautaires 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 contre un fichier Beancount à la volée. Cela permettrait aux panneaux Grafana d'afficher directement, disons, « Solde du compte courant » sous forme de jauge ou « 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 aquilax a construit un serveur simple qui rend les données de Ledger CLI disponibles pour Grafana, et l'a partagé sous le nom 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 endpoints qui renvoient des trames de données JSON pour Grafana. Grafana dispose d'un plugin de source de données JSON générique qui pourrait alors extraire de cette API. En pratique, cela signifie que vous pourriez concevoir un tableau de bord Grafana avec des panneaux comme « Revenu mensuel (diagramme à barres) » ou « Solde de trésorerie quotidien (graphique linéaire) », et ces panneaux récupèrent les données de votre API pilotée par Beancount. Grafana permettrait des options de visualisation riches (annotations, seuils, combinaison avec des métriques serveur, etc.). Andreas Gerstmayr (l'un des mainteneurs de Fava) a suggéré exactement cette approche et a même mentionné avoir créé une extension Fava appelée fava-dashboards (nous y reviendrons ci-dessous) pour afficher des graphiques à partir de requêtes BQL, comme alternative à une configuration Grafana complète. Si vous préférez l'interface de Grafana, l'intégration est faisable – elle nécessite simplement de construire le pont de données.

  • Metabase (requêtes ad hoc et tableaux de bord) : Metabase est un outil 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 écrivant 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 dans Metabase vous pouvez générer facilement des graphiques (par exemple un diagramme en secteurs des dépenses par catégorie pour le mois dernier). L'avantage est que des utilisateurs non techniques (ou des collègues) pourraient alors interagir avec les données via l'interface graphique de Metabase sans avoir à toucher au fichier Beancount. L'inconvénient est que vous devez maintenir l'export/synchronisation. Certains utilisateurs ont automatisé la conversion nocturne du grand livre Beancount vers SQLite, puis laissent Metabase lire le SQLite ; d'autres pourraient utiliser l'approche Postgres mentionnée. L'essentiel est que la portabilité des données de Beancount permet cela – vous êtes libre de dupliquer les données sous toute forme dont votre outil externe a besoin.

  • 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 écritures analysées, soldes, etc., donc 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 (comme la marge brute, les ventes quotidiennes, etc.) en interrogeant le grand livre et en le combinant peut-être avec des données hors grand livre (comme le nombre de clients servis). Un membre de la communauté a construit une interface web adaptée au mobile parce que Fava n'était pas intuitive pour son conjoint – il a exploité 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à. Fava lui-même expose sa page Query via une API de requête JSON, donc un front-end personnalisé peut lui envoyer du BQL et afficher les tableaux renvoyés au lieu de construire un nouveau backend de requête.

  • Intégration Excel/PowerBI : Il convient de noter que vous pouvez même intégrer avec Excel ou PowerBI. Jusqu'à ce que bea query gagne l'export CSV natif, utilisez l'export de la page Query de Fava pour les fichiers de tableur qu'Excel ouvre directement. Un workflow pourrait être : une tâche nocturne génère un fichier CSV des principaux indicateurs financiers depuis Beancount, et PowerBI est configuré pour importer ce fichier. C'est un peu indirect, mais pour les organisations qui utilisent déjà intensivement Excel/PowerBI, c'est une intégration à faible friction. PowerBI prend aussi en charge les sources de données Python, donc on pourrait écrire un court script Python qui exécute des requêtes BQL et l'utiliser comme source de données dans PowerBI, réalisant 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 pousser des métriques Beancount vers Prometheus et les visualiser dans Grafana. Les développeurs principaux ont répondu qu'au lieu de dupliquer les données dans Prometheus, une meilleure approche est un plugin ou un service Grafana qui interroge directement le grand livre Beancount. Andreas a partagé son extension fava-dashboards qui affiche des graphiques personnalisés au sein même de Fava comme exemple de solution. La conclusion est : vous avez des options – soit intégrer via une infrastructure BI existante (Prometheus+Grafana ou SQL+Metabase), soit étendre Fava pour répondre à vos besoins (la section suivante s'y plongera).

Considérations de sécurité et multi-utilisateurs : Si vous intégrez à des outils externes, soyez attentif à la sensibilité des données. Le texte brut de Beancount contient souvent des informations financières privées, donc tout serveur l'exposant devrait être sécurisé (authentifié). Si vous déplacez des données vers un outil BI cloud, vous pourriez perdre une partie de votre vie privée. Les outils auto-hébergés (versions open-source de Grafana/Metabase) peuvent être exécutés localement pour atténuer cela. De plus, si plusieurs personnes doivent consulter des tableaux de bord, un tableau de bord externe en lecture seule pourrait être préférable à donner à tout le monde accès à Fava (où ils pourraient modifier les données s'ils ne font pas attention). Par exemple, une startup pourrait utiliser Beancount en interne mais utiliser Metabase pour permettre aux chefs de département de voir les dépenses vs le budget sans toucher aux fichiers du grand livre.

En résumé, Beancount et Fava s'entendent bien avec les autres. Vous pouvez tirer parti de tout l'écosystème des outils de données avec un peu de code de liaison : pousser les données du grand livre vers une base de données SQL pour les outils BI, les servir via des API pour des applications web, ou même utiliser des bibliothèques spécialisées pour les diffuser vers des systèmes de séries temporelles. Cette flexibilité signifie que vous n'êtes jamais coincé si les visuels intégrés de Fava ne répondent pas à un besoin de niche – vous pouvez toujours intégrer une autre plateforme tout en continuant à utiliser Beancount comme source de vérité. Ensuite, nous examinerons l'extension de Fava lui-même avec des plugins et des tableaux de bord personnalisés, ce qui est souvent une voie plus simple que l'intégration externe si vous avez juste besoin 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, graphiques et comportements en écrivant des plugins Fava (extensions) en Python. Cela permet d'adapter l'interface web à vos besoins spécifiques sans construire une application séparée entière. Nous explorerons deux voies clés de personnalisation : (1) utiliser ou écrire des extensions Fava, et (2) mettre en place des 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 fava.ext.FavaExtensionBase. Au démarrage, Fava peut charger ce module et l'intégrer à l'application. Les extensions peuvent enregistrer de nouvelles pages de rapport, se connecter à des événements, et même inclure du JavaScript personnalisé pour l'interactivité. Fava 1.30.16 en fournit deux : fava.ext.auto_commit et fava.ext.portfolio_list. D'autres peuvent être installées via pip ou écrites de zéro.

Pour activer une extension, vous utilisez la directive personnalisée de Beancount dans votre fichier de grand livre :

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

Cela indique à Fava de charger le module donné. Si vous avez installé une extension via pip, vous référenceriez son nom de module ici. La chaîne optionnelle à la fin est la configuration de l'extension. Fava l'analyse comme un littéral Python, donc "{'option': 'value'}" arrive sous forme de dict.

Exemple – Extension d'auto-commit : L'extension fournie fava.ext.auto_commit commit les modifications dans git lorsque vous modifiez le fichier via Fava. Si vous vouliez l'utiliser, vous ajouteriez :

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

Elle redéfinit after_write_source, after_insert_entry, after_entry_modified, after_delete_entry et after_insert_metadata. Chaque hook exécute un git commit dans le répertoire propre du fichier du grand livre. Le grand livre doit donc déjà se trouver dans un dépôt git. Cela démontre comment les extensions se connectent aux événements d'édition de Fava.

Exemple – Extension de liste de portefeuille : L'extension fournie fava.ext.portfolio_list ajoute une page qui liste vos comptes d'investissement. Elle définit report_title = "Portfolio List" et fournit un modèle. Fava le détecte et ajoute une nouvelle entrée de barre latérale « Portfolio List » sous Reports. Elle définit aussi has_js_module = True pour charger son JavaScript compagnon. Pour l'activer explicitement, vous ajouteriez :

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

(Aucune configuration nécessaire dans ce cas.)

Écrire une extension personnalisée : Supposons que vous vouliez une page de rapport personnalisée, disons « Receivables Aging » pour les factures. Vous pourriez créer un fichier receivables.py comme :

# receivables.py
from fava.ext import FavaExtensionBase
 
 
class ReceivablesReport(FavaExtensionBase):
    report_title = "Receivables Aging"
 
    def after_load_file(self):
        # Runs after Fava loads the ledger. Summarise open
        # invoices here so the template only renders.
        self.overdue = [
            txn for txn in self.ledger.all_entries
            if "invoice" in getattr(txn, "tags", set())
        ]

Vous créeririez aussi un templates/ReceivablesReport.html à côté du module pour définir le HTML de la page. Dans ce modèle, vous pouvez lire des attributs comme self.overdue que votre hook a préparé. Une fois cette extension écrite, vous ajoutez à votre grand livre :

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 peut le trouver par son nom). Au démarrage de Fava, vous verriez maintenant une page « Receivables Aging ».

En coulisses, Fava appelle les méthodes de votre extension à des points fixes. Les hooks disponibles dans Fava 1.30.16 sont after_load_file, before_request, after_entry_modified, after_insert_entry, after_delete_entry, after_insert_metadata et after_write_source. Une méthode décorée avec @extension_endpoint devient en plus un endpoint d'API JSON sous l'extension. Généralement, les hooks fournis plus un modèle suffisent.

La documentation de Fava note que le système d'extensions est encore en évolution, mais il est 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 de zéro, vous pourriez utiliser le plugin tiers fava-dashboards créé par un mainteneur de Fava. Cette extension vous permet de définir des tableaux de bord arbitraires via un fichier de configuration YAML, 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 qui contiennent plusieurs panneaux personnalisés.

Installation et configuration : D'abord, vous installez le package (par exemple pip install fava-dashboards). La version 2.0.2 se charge proprement à côté de Fava 1.30.16. 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' }"

(fava-dashboards/README.md at main · andreasgerstmayr/fava-dashboards · GitHub). Cela indique à Fava de charger le module fava_dashboards et de lire votre fichier YAML pour la configuration.

Format YAML des tableaux de bord : Dans le dashboards.yaml, vous définissez un ou plusieurs tableaux de bord et leurs panneaux. Deux règles proviennent du propre pipeline de l'extension. Les colonnes agrégées nécessitent un alias AS. Et la convention de signe BQL s'applique : les sommes de revenus arrivent négatives, les dépenses positives. Par exemple :

dashboards:
  - title: "Cash Flow Dashboard"
    panels:
      - title: "Net Cash This Month"
        width: 50%
        queries:
          - bql: "SELECT sum(position) AS net_cash WHERE account ~ 'Income' OR account ~ 'Expenses'"
        type: "jinja2"
        template: "<h1>{{ panel.queries[0].result[0][0] }}</h1>"
      - title: "Spending by Category"
        width: 50%
        queries:
          - bql: "SELECT account AS category, sum(position) AS total WHERE account ~ 'Expenses' GROUP BY account ORDER BY account"
        type: "jinja2"
        template: "<table>{% for row in panel.queries[0].result %}<tr><td>{{ row[0] }}</td><td>{{ row[1] }}</td></tr>{% endfor %}</table>"

Le premier panneau affiche directement la somme des positions. Sur le grand livre de l'exemple détaillé, il affiche (-4650.00 USD). C'est 6 000,00 USD de revenus nets de 1 350,00 USD de dépenses. Le deuxième panneau parcourt les lignes de la requête dans un tableau. Le projet affiche aussi des panneaux de graphiques à partir des mêmes requêtes. Voir le README lié pour l'API de script de graphique.

L'extension se charge d'afficher ceux-ci lorsque vous ouvrez la page du tableau de bord dans Fava. Vous pouvez créer plusieurs tableaux de bord (chacun apparaît comme un onglet ou une page séparée). C'est extrêmement puissant pour créer des tableaux de bord financiers personnalisés. Par exemple, vous pourriez faire un tableau de bord « Budget vs Réel » : un panneau montre un tableau du budget vs réel par catégorie (via une requête comparant deux ensembles de comptes), un autre panneau montre un diagramme à barres des dépenses depuis le début de l'année vs l'année précédente, etc. Tout cela avec juste de la configuration et un scripting minimal, en exploitant les données de votre grand livre via BQL.

Exemple de code – Activer fava-dashboards : Comme montré ci-dessus, ajouter l'extension est une ligne dans votre grand livre. Pour être complet, voici un exemple minimal de cela en contexte :

option "title" "My Ledger"
option "operating_currency" "USD"
 
plugin "beancount.plugins.auto_accounts"  ; (auto-opens accounts)
 
1970-01-01 custom "fava-extension" "fava_dashboards" "{ 'config': 'dashboards.yaml' }"

Et dans dashboards.yaml :

dashboards:
  - title: "Overview"
    panels:
      - title: "Net Worth"
        queries:
          - bql: "SELECT sum(position) AS net_worth WHERE account ~ 'Assets' OR account ~ 'Liabilities'"
        type: "jinja2"
        template: "<div>Net Worth: {{ panel.queries[0].result[0][0] }}</div>"

Sur le grand livre de l'exemple détaillé, cela affiche <div>Net Worth: (4650.00 USD)</div>. Un vrai tableau de bord serait joliment formaté et ajouterait plus de panneaux.

Une fois cela en place, lorsque vous exécutez Fava et naviguez vers le tableau de bord « Overview », il affichera votre valeur nette calculée. Vous pouvez ensuite affiner le modèle ou ajouter des graphiques au besoin.

Autres extensions notables : Outre fava-dashboards, des membres de la communauté ont construit des plugins tels que fava-investor pour l'analyse d'investissement et fava-review pour la revue de transactions. Ce sont des packages tiers avec leurs propres étapes d'installation et plages de compatibilité Fava. Consultez leurs READMEs avant d'installer. La communauté maintient une liste « awesome-beancount » de plugins et d'outils. En la parcourant, vous pourriez trouver une extension pré-construite qui répond à vos besoins.

Quand étendre vs intégrer en externe : Généralement, si votre besoin est purement de présentation ou de calcul sur les données existantes du grand livre, une extension Fava est idéale (garde tout au même endroit, respecte les filtres, etc.). Si votre besoin implique de combiner des données externes ou que vous nécessitez une interface radicalement différente, une intégration externe (section précédente) pourrait se justifier. Par exemple, afficher l'analytique web aux côtés des finances – mieux dans Grafana/Metabase ; mais ajouter un nouvel indicateur ou rapport financier – mieux sous forme de plugin Fava.

Exemple – Un indicateur KPI personnalisé dans Fava : Supposons que vous vouliez suivre le « Taux d'épargne » (pourcentage du revenu épargné). Vous pourriez le faire avec une extension qui le calcule et affiche une petite boîte sur la page principale. Ou avec fava-dashboards, un panneau pourrait être un Jinja2 qui affiche Savings Rate: X% en interrogeant le total des revenus et le total des dépenses. Ce type d'indicateur personnalisé est très facile à injecter avec ces outils, alors que dans un système fermé comme QuickBooks, il pourrait être impossible de créer un nouvel indicateur sur le tableau de bord.

Les deux mêmes requêtes alimentent un panneau de taux d'épargne. Attention aux signes : le BQL sum(position) renvoie les revenus comme une position négative et les dépenses comme positives, et Jinja ne peut pas soustraire une position d'une autre. Affichez donc les deux jambes et énoncez le taux dans le texte du modèle :

- title: "Savings Rate"
  panels:
    - title: "Savings Rate"
      queries:
        - bql: "SELECT sum(position) AS income_total WHERE account ~ 'Income'"
        - bql: "SELECT sum(position) AS expense_total WHERE account ~ 'Expenses'"
      type: "jinja2"
      template: "<h3>Savings Rate: 77.5% ({{ panel.queries[0].result[0][0] }} earned, {{ panel.queries[1].result[0][0] }} spent)</h3>"

Sur le grand livre de l'exemple détaillé, cela affiche Savings Rate: 77.5% ((-6000.00 USD) earned, (1350.00 USD) spent). Le taux est (6 000,00 − 1 350,00) / 6 000,00. Calculez-le à partir des magnitudes. Ne niez ni ne soustrayez les positions à l'intérieur du modèle.

Le point clé : 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 largement. De nombreux utilisateurs partagent de petits scripts ou extensions sur les forums pour faire des choses comme afficher les factures à venir, générer des factures PDF à partir de transactions, ou intégrer Beancount à des bibliothèques de calcul fiscal. Lorsque vous investissez dans l'apprentissage ou l'utilisation de ces extensions, vous obtenez un système d'analyse financière très sur mesure sans partir de zéro.

Cas d’usage : finances personnelles vs comptabilité des petites entreprises​

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

Finances personnelles​

Pour les particuliers, Beancount+Fava brille en donnant une visibilité et une compréhension complètes de ses finances sans dépendre d'applications propriétaires. Les cas d'usage courants en finances personnelles incluent :

  • Suivi des dépenses et budget : Beaucoup utilisent Beancount pour enregistrer chaque dépense puis analyser les habitudes de dépenses. Avec Fava, ils peuvent voir où va l'argent chaque mois (treemap des dépenses) et suivre les budgets en comparant aux valeurs attendues (certains le font via l'extension Budgets ou des requêtes personnalisées). Un utilisateur a décrit qu'après avoir adopté Beancount, "l'analyse des données financières (dépenses, dons, impôts, etc.) est triviale. C'est facile avec Fava, mais aussi facile avec des scripts... j'ai un script Python qui extrait les données de Beancount en utilisant 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 personnalisées en cas de besoin.

  • Suivi de la valeur nette et des objectifs : Comme vous pouvez inclure tous les actifs (comptes bancaires, investissements, même les 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 l'utilisent pour suivre les progrès vers des objectifs (par exemple un « nombre d'indépendance financière » ou le remboursement de dettes). Les graphiques de Fava montrant la valeur nette dans le temps sont motivants – vous pouvez littéralement voir la courbe de votre patrimoine. Il est courant de suivre les passifs comme les prêts étudiants ou les hypothèques dans Beancount et de mettre à jour leurs soldes ; le grand livre donne alors une image complète de la santé financière.

  • Investissements et cryptomonnaies : L'usage personnel s'étend souvent au suivi d'un portefeuille. Beancount peut gérer les actions, les cryptomonnaies, etc., avec la base de coût et les calculs de plus-values réalisées (via des plugins ou des requêtes). L'avantage par rapport au site d'un courtier est que vous pouvez consolider tous les comptes et voir la véritable allocation d'actifs. Des plugins communautaires tels que fava-investor, par exemple, ajoutent des pages d'analyse d'investissement à Fava. C'est quelque chose que les investisseurs amateurs font typiquement dans Excel ; Beancount fournit une manière 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 de finances personnelles modernes.

  • Finances personnelles multidevises : 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 "beaucoup de logiciels comptables ne sont pas bons en multidevises… Avec Beancount, vous pouvez définir n'importe quelle matière première que vous voulez", et obtenir des rapports dans votre devise préférée. Pour un utilisateur particulier traitant par exemple d'un salaire en USD mais de dépenses en EUR, c'est un gros plus.

  • Suivi de vie et journal : Un cas d'usage non conventionnel mais réel : certains traitent le grand livre comme un journal de vie, taguant les transactions avec des événements de vie (comme #wedding ou #vacation2025) puis l'utilisant pour calculer les coûts d'événements ou même comme un journal d'activités (les métadonnées financières comme proxy des événements de vie). Le format en texte brut et le tagage 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, et ne voulaient pas être enfermés dans un abonnement ou un fournisseur". La récente disparition de Mint.com (un outil de budget gratuit populaire) a poussé les passionnés vers la comptabilité en texte brut pour la pérennité. Avec Beancount, ils savent qu'ils pourront encore ouvrir leur grand livre dans 20 ans. Pour les finances d'un seul individu, les données de Beancount (peut-être 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 de commodité et de contrôle difficile à trouver ailleurs.

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

Comptabilité des petites entreprises​

Les petites entreprises, startups et indépendants peuvent aussi utiliser Beancount+Fava, bien que les exigences ici incluent un reporting plus formel et peut-être de la collaboration :

  • Tenue de livres et états financiers : Une entreprise peut tenir son grand livre général dans Beancount, enregistrant les factures, les notes de frais, la paie, etc., et produire un bilan et un compte de résultat. Beancount prend en charge la comptabilité d'engagement nécessaire (vous pouvez marquer des comptes comme créances/dettes et enregistrer des factures avec des écritures vers les revenus et les créances, puis plus tard un paiement pour solder les créances). Fava affichera alors ceux-ci sous Actifs ou Passifs de manière appropriée. Une discussion sur Reddit a demandé si Beancount convenait aux entreprises et s'il pouvait générer des états financiers appropriés – oui, il peut produire des bilans, des comptes de résultat et (avec un peu d'aide de requêtes) des tableaux des flux de trésorerie, car ce ne sont que des vues des données en partie double. Le hic est que Beancount n'impose aucune norme comptable particulière (c'est à vous de l'utiliser correctement). Donc un utilisateur averti (ou un comptable) devrait configurer correctement le plan comptable de l'entreprise. Il existe des exemples communautaires de Beancount utilisé pour des startups – un commentateur de HN a dit : "J'aime beaucoup utiliser Beancount + Git pour gérer le livre comptable de ma propre startup", bien qu'il ait noté qu'il était un peu fastidieux d'ajouter des écritures périodiquement. Cette lassitude peut être atténuée par l'automatisation des importations comme nous l'avons vu.

  • Surveillance financière en temps réel : Pour une petite entreprise, les flux de trésorerie sont rois. En utilisant Fava, un propriétaire d'entreprise peut surveiller les soldes bancaires et les flux de trésorerie en quasi temps réel, comme pour les finances personnelles – mais c'est encore plus critique ici. En automatisant les flux bancaires ou les importations, ils peuvent détecter si un paiement client est arrivé ou si une grosse dépense a été réglée. QuickBooks propose des flux bancaires qui "vous permettent de voir comment votre entreprise se porte en temps réel" ; avec Beancount, vous reproduisez cela par 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é, plutôt que de faire confiance à la logique de rapprochement parfois impénétrable 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 ont géré cela avec des modules complémentaires. Par exemple, on pourrait générer une facture PDF à partir d'une transaction en utilisant un modèle Jinja2 ou même un script externe qui lit les écritures de créances ouvertes. Il existe un projet « Beanie » qui agit comme un système de créances léger au-dessus de Beancount. Les petites entreprises pourraient utiliser Beancount pour le grand livre et un autre outil pour émettre les factures, puis importer les données de facturation dans Beancount. C'est une étape supplémentaire par rapport à QuickBooks (qui peut envoyer des factures puis 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. Beancount peut certainement enregistrer les écritures de paie (en répartissant le salaire brut, les impôts, les retenues, etc. dans les comptes appropriés) – mais vous calculeriez généralement ceux-ci avec des outils externes ou votre fournisseur de paie, puis les saisiriez. Les calendriers d'amortissement des immobilisations seraient de même saisis manuellement (ou vous pourriez écrire un plugin pour automatiser les écritures d'amortissement mensuelles). Beancount n'a pas de magie pour ceux-ci, mais beaucoup d'outils pour petites entreprises n'en ont pas non plus au-delà de quelques modèles. L'avantage est que vous pouvez scripter tout ce qui est inhabituel. 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 pourraient apprécier 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 avec les documents joints, ce qui est assez simple. De plus, le contrôle de version signifie que vous avez un journal d'audit de qui/quand les changements ont été faits (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 petites entreprises cherchant à minimiser les coûts logiciels. QuickBooks, Xero, etc., ont des frais mensuels. Cependant, le compromis est qu'ils viennent avec du support et une configuration plus facile. Un propriétaire d'entreprise technophile 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 dit qu'il l'avait utilisé pour une LLC de conseil et que cela avait bien fonctionné, mais qu'à mesure que les transactions augmentaient, ils ont commencé à scinder les fichiers annuellement pour maintenir la vitesse. Le consensus est : pour une petite entreprise (disons des dizaines de milliers de transactions par an ou moins), Beancount est parfaitement capable. Si vous étiez une PME plus grande avec des centaines de milliers de transactions, la performance pourrait justifier soit une approche base de données, soit le choix d'un système comptable dédié – bien que nous ayons Beanpost pour tenter de répondre à cela en utilisant Postgres comme backend.

Collaboration : Un domaine de différence – QuickBooks Online permet à plusieurs utilisateurs (propriétaire, comptable, etc.) de travailler simultanément. Avec Beancount, la collaboration pourrait se faire via Git (plusieurs utilisateurs committent des changements). Cela fonctionne, mais nécessite une certaine connaissance de Git et la résolution de conflits si les gens modifient en même temps. Certains ont utilisé des plateformes Git en ligne ou même Google Drive pour partager le fichier du grand livre. C'est faisable, mais pas aussi fluide qu'un logiciel comptable cloud. Cependant, pour une petite équipe (ou un teneur de livres solo + propriétaire), c'est gérable, et vous pouvez toujours accorder un accès en lecture seule via Fava (hébergez-le sur un serveur interne et laissez les autres consulter les rapports sans éditer).

Conformité réglementaire : Pour les finances personnelles, pas un problème. Pour les entreprises, 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 conformes aux PCGR, mais cela exige que l'utilisateur saisisse les données en conséquence. Il n'y a pas d'application intégrée des règles PCGR (par exemple pas de module d'immobilisations intégré pour garantir un amortissement correct). Un comptable externe peut toujours travailler avec un grand livre Beancount (puisque c'est essentiellement un journal généralisé) – il pourrait l'exporter vers Excel et faire des ajustements si nécessaire. Certaines entreprises pourraient préférer un logiciel connu pour cette raison, ou du moins avoir un comptable à l'aise avec des données en texte brut.

Qui l'utilise pour les affaires ? Probablement des utilisateurs avancés : startups technologiques, indépendants avec un bagage en codage, ou entreprises qui valorisent hautement le contrôle des données (par exemple, peut-être des sociétés de trading financier voulant un reporting personnalisé). Un fil Reddit avait quelqu'un demandant si Beancount conviendrait à une société de trading – les réponses indiquaient que oui, il gère le multidevise et peut produire les états nécessaires, mais vous construirez un peu d'outillage autour.

Pour conclure cette section : les utilisateurs de finances personnelles aiment Beancount pour la compréhension et le contrôle qu'il donne sur leur argent personnel – il transforme les finances en un ensemble de données qu'ils peuvent interroger et comprendre, permettant des choses comme suivre facilement chaque dépense et calculer des indicateurs que les outils de budget typiques ne peuvent pas. Les utilisateurs de petites entreprises apprécient la transparence, les économies de coûts et la hackabilité – ils peuvent intégrer la comptabilité au reste de leur stack logiciel, et éviter l'enfermement propriétaire ou les frais mensuels. Les deux cas d'usage bénéficient de l'analyse en temps réel : une personne pourrait surveiller la progression de son budget mensuel, une entreprise pourrait surveiller les flux de trésorerie quotidiens – dans les deux cas, Fava peut présenter des informations à jour lorsqu'il est alimenté par des données opportunes.

Comparaison avec d'autres plateformes d'analyses en temps réel​

Il est utile de comparer Beancount+Fava avec d'autres solutions offrant une analyse financière « en temps réel », telles que QuickBooks (avec flux bancaires en direct) et Power BI (ou des tableaux de bord BI similaires). Chaque approche a ses forces et ses 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 entièrement visible (aucun algorithme caché). Vous possédez le format pour toujours. Le contrôle de version peut montrer une piste d'audit des modifications.Opaque – les données sont stockées dans une base de données cloud propriétaire. Vous dépendez de l'export d'Intuit pour les sauvegardes. Certains processus (par exemple l'auto-catégorisation) ne sont pas entièrement visibles. Journaux d'audit limités. Si vous arrêtez de payer, vous risquez de perdre un accès facile à vos données.Dépend de la source de données – Power BI lui-même 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 au 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 comptes, n'importe quelle matière première/devise. Vous pouvez scripter un comportement ou une analyse personnalisés (Python, plugins). Aucun flux de travail imposé – vous l'adaptez à vos besoins (personnels ou professionnels). Le système d'extension de Fava et des outils comme fava-dashboards permettent des tableaux de bord personnalisés au sein de l'application. S'il manque quelque chose, 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'intégrer dans son paradigme. Les rapports personnalisés sont limités ; vous ne pouvez pas interroger arbitrairement la base de données. Des intégrations existent mais passent par l'API d'Intuit (qui est limitée) ou par export vers Excel. Vous échangez de la flexibilité contre de la commodité.Très flexible pour l'analyse et la visualisation. Vous pouvez créer presque n'importe quel graphique ou indicateur si les données sont accessibles. Power BI peut facilement combiner les données financières avec d'autres données (ventes, analytique web, etc.). Cependant, ce n'est pas un système comptable – vous devez avoir les données préparées (qui pourraient provenir de Beancount !). Il n'impose pas la partie double ou les principes comptables ; c'est une page blanche. La flexibilité en visualisation est élevée (mesures DAX personnalisées, etc.), mais nécessite de l'expertise.
Réactivité en temps réelQuasi temps réel avec configuration. Si vous automatisez la saisie des données (flux ou importations fréquentes), Fava le reflétera dès que le grand livre est mis à jour et rechargé. Ce n'est pas du temps réel « push » par défaut (actualisation manuelle nécessaire), mais vous pouvez mettre à jour aussi souvent que souhaité (à la minute, à l'heure). La vitesse de mise à jour est très rapide (analyse du texte en millisecondes pour de petits changements). Vous contrôlez la fréquence – pourrait être continu si scripté. Pas d'attente pour les cycles de synchronisation du fournisseur.Conçu pour un quasi temps réel des transactions bancaires : "Les flux bancaires vous permettent de voir comment votre entreprise se porte 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, donc vous n'avez pas à importer manuellement. Les changements apparaissent sur le tableau de bord sans intervention manuelle. Cependant, certaines données (comme les transactions en attente) pourraient ne pas apparaître avant d'être réglées. Aussi, certains rapports pourraient ne pas se mettre à jour avant qu'une action ne soit entreprise. Globalement bonne réactivité pour les données bancaires ; moins pour des choses comme les écritures de journal manuelles (toujours en temps réel, mais vous les saisissez vous-même).S'il est configuré 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 fois que vous l'ouvrez ou même automatiquement. En mode Import, vous actualiseriez selon un calendrier (par exemple toutes les heures). Il peut donc être quasi temps réel, mais la complexité réside dans la maintenance du pipeline de données. Aussi, tout changement des données sous-jacentes nécessite une actualisation du modèle ou des requêtes. Il peut y avoir un léger décalage selon la configuration (et si vous utilisez Power BI cloud, il y a des limites sur la fréquence d'auto-actualisation dans les niveaux gratuits).
Automatisation et saisie des donnéesLes importations peuvent être hautement automatisées 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). Donc la configuration initiale de l'automatisation demande un effort. D'un autre côté, une fois configurée, elle peut être entièrement automatisée sans saisie manuelle (comme certains utilisateurs ont atteint ~95 % d'automatisation). Prend aussi en charge la saisie manuelle pour les choses qui ne peuvent pas être automatisées (avec 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 – connectez simplement vos comptes dans QuickBooks). Il suggère aussi automatiquement des catégories (en utilisant les données passées et un peu de ML). "Chaque transaction est instantanément synchronisée et triée pour vous… QuickBooks recommande des catégories et s'améliore avec le temps.". C'est un gros avantage de commodité – moins de travail manuel. Cependant, l'automatisation concerne principalement les comptes financiers ; d'autres choses (comme répartir une dépense entre classes) pourraient encore nécessiter une revue manuelle. Aussi, si le flux bancaire se casse, l'utilisateur doit reconnecter ou téléverser des fichiers.Power BI ne concerne pas du tout la saisie de données – il repose sur l'automatisation que possède la source de données. Si votre source de données est un tableur manuel, alors ce n'est pas du temps réel. Si c'est une base de données mise à jour par un processus ETL, cela peut être proche du temps réel. Donc l'automatisation dépend de ce que vous alimentez dans Power BI. Power BI lui-même peut être planifié pour actualiser les données à partir des sources. En bref, Power BI peut bien refléter des données automatisées mais ne crée pas l'automatisation (vous devez avoir un pipeline de données automatisé qui l'alimente).
Collaboration et partageLa collaboration via texte (par exemple, Git) est puissante mais technique. Plusieurs personnes peuvent contribuer en éditant le(s) fichier(s) du grand livre et en fusionnant les changements. Fava peut être hébergé en lecture seule pour partager des rapports avec d'autres, mais il manque des rôles utilisateurs ou un contrôle d'accès granulaire d'emblée. Pour un utilisateur unique ou une équipe technophile, c'est bien. Les auditeurs ou comptables pourraient avoir besoin d'exporter les données (par exemple la balance générale dans Excel) pour travailler avec s'ils ne sont pas à l'aise avec le format.Accès web multi-utilisateurs avec permissions (QuickBooks Online prend en charge les comptables, plusieurs utilisateurs professionnels avec des rôles). Partage facile – votre comptable peut se connecter et voir les livres 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 plusieurs appareils est un atout (bien que vous puissiez aussi exécuter Fava sur un cloud personnel/VPS). QuickBooks s'intègre aussi à d'autres services (paie, prêts bancaires, etc.) ce qui est utile pour les entreprises et difficile à reproduire dans Beancount.Power BI excelle dans le partage de tableaux de bord, surtout si vous utilisez Power BI Service : vous pouvez publier des tableaux de bord à des collègues, les intégrer dans des sites web (avec la licence appropriée), etc. Il est conçu pour la collaboration sur les informations. Cependant, c'est du partage en lecture seule d'analyse, pas d'édition collaborative des données. Si plusieurs utilisateurs doivent analyser, ils le peuvent si on leur donne accès au projet BI. En résumé, pour communiquer les résultats financiers de manière éclatante aux parties prenantes, Power BI est difficile à battre. Mais ce n'est pas de la tenue de livres collaborative ; c'est de l'analyse collaborative.
CoûtGratuit (open-source). Vous pourriez dépenser du temps au lieu d'argent (pour la configuration/maintenance). Héberger Fava vous-même pourrait avoir un coût négligeable (si sur votre PC ou un serveur bon marché). Aucuns frais de licence pour des utilisateurs supplémentaires.Payant (abonnement mensuel ou annuel). QuickBooks Online peut aller de $20 à $70+ par mois selon le forfait. Il y a aussi des frais pour la paie ou les fonctionnalités avancées. Beaucoup de petites entreprises paient cela car cela inclut du support et des mises à jour continues. Mais sur des années, le coût s'accumule. Aussi, si vous arrêtez votre abonnement, vous pourriez perdre l'accès complet.Mixte. Power BI Desktop est gratuit, mais l'abonnement Pro (pour partager des tableaux de bord) est d'environ $10/utilisateur/mois. Si vous l'avez déjà via un Office 365 ou similaire, alors le coût supplémentaire pourrait être nul. D'autres outils BI varient (certains open-source comme Metabase sont gratuits à exécuter). Cependant, considérez le coût en temps de développement de solutions BI et éventuellement le coût de maintenance d'une base de données ou d'une infrastructure cloud pour cela.

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 ni ne seront enfermées) et une flexibilité (vous pouvez modéliser n'importe quoi dans le grand livre, pas seulement ce que QuickBooks attend). Il exige plus de bricolage, surtout pour l'automatisation et les finitions d'interface soignées. QuickBooks est une solution prête à l'emploi optimisée pour les besoins des petites entreprises – flux bancaires, facturation, paie (avec modules complémentaires) – et fournit des mises à jour quasi temps réel avec un effort utilisateur minimal. Cependant, c'est une boîte noire à bien des égards ; vous faites confiance au logiciel pour gérer correctement vos données, et parfois cela signifie qu'il est difficile de corriger des erreurs ou de comprendre comment il est arrivé à un chiffre. Beaucoup d'utilisateurs de Beancount sont des gens qui ont été frustrés par ces boîtes noires. Ils échangent 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 pour l'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 de direction à partir de ces données. Si nous comparons directement, Power BI concerne davantage la flexibilité visuelle et la combinaison de sources de données. Les graphiques de Fava sont plus simples par conception (axés sur les besoins comptables) mais nécessitent bien moins de travail pour démarrer (ils fonctionnent d'emblée sur votre grand livre, aucun modélisation nécessaire). Si votre objectif est purement d'obtenir des informations et de jolis visuels et que vous êtes prêt à préparer les données, un outil BI pourrait convenir. Mais si votre objectif est de tenir les livres et d'obtenir des rapports interactifs comme sous-produit, Fava seul suffit souvent.

On pourrait aussi comparer avec d'autres outils de finances personnelles (par exemple Mint ou YNAB) ou des systèmes ERP, mais la question mentionne spécifiquement les plateformes d'analyse en temps réel. Dans le domaine des vues financières en temps réel : Beancount+Fava est comme avoir un tableau de bord financier « en direct » personnalisé et open-source, QuickBooks est une tenue de livres automatisée à code source fermé avec synchronisation bancaire en direct, et Power BI est une plateforme d'analyse flexible (pas spécifique à la finance mais utilisable pour la finance si alimentée par des données).

Une citation révélatrice contrastant open-source vs commercial : "Avec un peu d'effort en amont, l'outillage open-source peut en fait être bien meilleur que les solutions commerciales, et bien plus flexible et extensible." Cela résume le compromis. QuickBooks est soigné et fonctionne d'emblée pour des scénarios courants avec un effort minimal. Mais une fois que vous voulez quelque chose qu'il ne fait pas, vous vous heurtez à un mur. Avec Beancount, vous vous heurtez rarement à un mur – vous avez le code source et les données, vous pouvez étendre ou intégrer au besoin. Le coût est que vous devez être prêt à bricoler.

Avantages et Inconvénients de l’utilisation de Fava et Beancount pour des analyses basées sur les données​

Enfin, distillons les avantages et inconvénients de Beancount+Fava comme solution d'analyse financière :

Avantages​

  • Transparence et confiance : Tous les calculs (totaux, soldes) sont dérivés d'un grand livre en texte brut que vous pouvez inspecter. Il n'y a pas de comportement mystérieux. Cela établit une grande confiance dans les chiffres – crucial si vous basez des décisions dessus. C'est "une comptabilité propre et transparente" sans enfermement. Vous pouvez toujours retracer un chiffre rapporté jusqu'aux transactions sous-jacentes, ce qui est l'essence même de l'analyse pilotée par les données.

  • Reproductibilité et piste d'audit : Comme vous pouvez contrôler par version le grand livre, vous disposez d'une chronologie des changements. Si quelque chose semble anormal ce mois-ci, vous pouvez comparer le grand livre pour voir ce qui a changé. Cela signifie aussi que vous pouvez expérimenter (« et si je reclassais cette dépense ? ») et annuler facilement. Le travail piloté par les données implique souvent des itérations, et un grand livre auditable encourage cela.

  • Flexibilité d'analyse : Vous n'êtes pas limité à des rapports pré-construits. La combinaison des requêtes BQL, du scripting Python et des filtres de Fava signifie que vous pouvez répondre à presque n'importe quelle question financière. Vous voulez savoir "Combien ai-je dépensé chez Starbucks chaque année ces 5 dernières années ?" – une requête suffit. Ou "Quelle est la moyenne mobile de mes dépenses sur 3 mois vs mes revenus ?" – scriptable avec Python+pandas par-dessus une requête. Cette flexibilité est un énorme avantage pour ceux qui aiment fouiller les données. Des utilisateurs avancés ont même construit des extensions pour calculer des indicateurs financiers (par exemple des métriques de performance de portefeuille) dans Fava. En bref, vous pouvez obtenir des informations très granulaires que beaucoup de logiciels standard ne peuvent pas fournir.

  • Intégration et extensibilité : Le système de plugins de Fava et l'API accessible de Beancount signifient que les outils peuvent évoluer avec vos besoins. Si demain vous commencez à avoir besoin de suivre un nouveau type d'actif ou de vouloir intégrer un nouveau flux de données, vous pouvez étendre le système. L'architecture (texte brut en entrée, diverses sorties en sortie) est très extensible. Cela contraste avec les systèmes fermés où vous pourriez devoir demander une fonctionnalité et attendre.

  • Consolidation des données : Pour les particuliers et même les entreprises, pouvoir consolider tous les comptes (plusieurs banques, courtiers, etc.) dans un seul système est puissant. Beaucoup de solutions commerciales vous cloisonnent (ou facturent un supplément pour le multidevise ou les entités multiples). Avec Beancount, vous pouvez tout réunir. Cela donne une vue holistique des données, permettant des informations transversales. Par exemple, vous pouvez calculer votre véritable allocation d'actifs globale ou votre flux de trésorerie net, personnel et professionnel confondus si vous le vouliez, puisque ce ne sont que des écritures de données.

  • Rapport coût-efficacité : C'est gratuit et open-source. Pour l'usage personnel, c'est un gros plus (pas d'abonnement comme beaucoup d'applications de budget). Pour les startups ou petites organisations, ces économies peuvent s'accumuler. Mais au-delà du coût monétaire, c'est aussi efficace en termes d'exécution (Fava peut tourner sur un petit serveur) et de portabilité (pas de migrations coûteuses si vous dépassez ses capacités – c'est juste du texte).

  • Communauté et partage des connaissances : La communauté de la comptabilité en texte brut (Beancount, Ledger, etc.) est très collaborative. Les gens partagent leurs configurations, scripts personnalisés et astuces sur les forums et blogs. Cela signifie que si vous avez un besoin de niche, quelqu'un a peut-être déjà traité quelque chose de similaire. Par exemple, plusieurs utilisateurs ont contribué à des outils d'importation intelligents et même à la catégorisation par apprentissage automatique (par exemple la bibliothèque « smartimporter » qui utilise scikit-learn pour auto-catégoriser les bénéficiaires à partir des données passées). Au fil du temps, l'utilisation de Beancount peut réellement devenir plus _intelligente si vous exploitez ces outils communautaires – approchant la commodité d'un logiciel commercial tout en conservant la transparence.

  • Autonomisation et apprentissage : Utiliser Fava/Beancount vous oblige à vous engager plus profondément avec vos données financières. Beaucoup d'utilisateurs rapportent avoir acquis une bien meilleure compréhension de leurs finances grâce à ce système qu'ils n'en ont jamais eu avec des applications automatisées. C'est un peu comme la différence entre cuisiner soi-même et prendre un repas rapide – plus d'effort, mais vous savez exactement ce qu'il contient et cela peut être plus sain à long terme. Pour l'analyse pilotée par les données, cette « appropriation » du processus peut mener à des découvertes plus significatives, car vous pouvez facilement formuler et reformuler votre façon de regarder les données.

Inconvénients​

  • Configuration initiale et courbe d'apprentissage : Soyons honnêtes – Beancount et Fava ne sont pas aussi prêts à l'emploi 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 personnaliser fortement. Cet investissement initial peut être un obstacle. Pour les utilisateurs non techniques, cela pourrait être intimidant (bien que l'interface de Fava aide beaucoup en offrant une expérience plus conviviale une fois configurée). En revanche, beaucoup d'outils commerciaux cachent les concepts comptables derrière des interfaces plus simples (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 les relevés, soit mettre en place votre propre automatisation (via des scripts Python ou des services comme Plaid qui coûtent souvent de l'argent). Pour ceux habitués à ce que les flux bancaires « fonctionnent tout simplement », cela peut ressembler à un pas 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 : Atteindre une réactivité en temps réel est possible mais pas d'emblée. Vous devez configurer des tâches cron ou des déclencheurs comme décrit. Si quelque chose se casse (par exemple, une banque change son format CSV), vous devez corriger votre importateur. Avec un service comme QuickBooks, le fournisseur gère ces changements. Essentiellement, vous êtes votre propre support informatique. C'est le compromis classique de l'open-source. Pour un passionné, cela peut être acceptable ou même amusant ; pour un propriétaire de petite entreprise occupé, cela pourrait être pénible.

  • Limites de mise à l'échelle et de performance : Pour de très grands ensembles de données (de nombreuses années de transactions détaillées), Beancount peut devenir plus lent. Il est généralement efficace (les gens ont des dizaines de milliers d'écritures sans problèmes). Mais comme vu dans le fil HN, un utilisateur a dû « clôturer les livres » annuellement après 3 ans à mesure que le fichier grandissait pour maintenir la rapidité des requêtes. Le code de Beancount v2 est en Python et peut être un peu lent pour d'énormes données, bien que la v3 (en développement avec un cœur C++) améliore cela. Il existe des atténuations (scinder les fichiers, utiliser Beanpost pour décharger vers une base de données, etc.), mais c'est une considération. QuickBooks a probablement une mise à l'échelle interne et la plupart des outils BI sont construits sur des bases de données conçues pour de grandes données – ils pourraient donc gérer de grands ensembles de données plus élégamment.

  • Lacunes fonctionnelles (par rapport à un logiciel dédié) : Beancount+Fava se concentre sur la tenue de livres et l'analyse. Il lui manque certaines fonctionnalités auxiliaires : par exemple, pas de traitement de la paie, pas de génération de factures (sans scripting personnalisé), pas de formulaires de préparation fiscale intégrés, etc. Si votre objectif est une gestion financière complète, vous pourriez devoir compléter avec d'autres outils. Par exemple, vous pourriez faire la paie via un service de paie et simplement importer les écritures de journal. Cela fonctionne, mais ce n'est pas aussi intégré de manière fluide que quelque chose comme un ERP qui fait tout en un. Pour les finances personnelles, Beancount n'a pas de choses comme des planificateurs de remboursement de dettes intégrés ou des enveloppes budgétaires (bien que vous puissiez les simuler). On s'attend à ce que vous dériviez des informations puis preniez des décisions, plutôt que de fournir des conseils prescriptifs ou des modules de planification.

  • Interface utilisateur et finition : Bien que Fava soit assez agréable, il n'est pas aussi soigné ou guidé que certaines offres commerciales. Il n'y a pas d'« assistant » pour vous guider dans la configuration ou vous assurer de ne pas faire d'erreurs. Vous pourriez devoir lire la documentation pour savoir comment faire X. Et certaines fonctionnalités d'interface qu'on pourrait attendre (catégorisation par glisser-déposer, annulation multi-étapes, notifications push mobiles, etc.) n'y sont pas. L'interface de Fava s'améliore constamment (avec des contributions), mais elle est construite par une petite communauté. Si vous êtes habitué à des interfaces SaaS modernes et épurées, Fava pourrait sembler un peu utilitaire (bien que certains préfèrent en fait sa simplicité épurée). Sur mobile, Fava fonctionne (surtout en lecture seule) mais n'est pas entièrement optimisé pour les petits écrans ; QuickBooks a par exemple des applications mobiles dédiées.

  • Dépendance à la communauté/au mainteneur : Martin Blais (l'auteur de Beancount) et les contributeurs maintiennent Beancount, et d'autres maintiennent Fava. Le développement peut être irrégulier (comme c'est normal dans l'OSS). Bien que le logiciel soit très utilisable aujourd'hui, si vous avez besoin d'une nouvelle fonctionnalité ou s'il y a un bug, vous pourriez devoir le corriger vous-même ou attendre. Avec un produit payant, vous avez un support à appeler (la qualité varie, mais au moins il est là). Cela dit, la communauté est généralement très serviable via la liste de diffusion ou les issues GitHub.

  • Connaissances comptables requises : Pour l'usage professionnel surtout, vous devez savoir ce que vous faites. Beancount ne vous empêchera pas de faire une écriture « fausse » d'un point de vue comptable (sauf déséquilibre ou transaction non appariée). QuickBooks en revanche a 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 ne faites pas attention dans Beancount, vous pourriez gâcher une 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 en fait un avantage pour certains (force à bien faire les choses), mais un inconvénient si vous voulez un système sans réflexion requise.

Pour résumer les avantages et inconvénients : Beancount + Fava offre un contrôle et une adaptabilité sans égal pour ceux qui veulent s'engager profondément avec leurs données financières, ce qui en fait un outil puissant pour des analyses pilotées par les données. Il transforme vos livres en un ensemble de données interrogeable et vos rapports en une application web extensible. Le prix de cette puissance est le travail que vous investissez pour le configurer et le maintenir, et la nécessité d'être quelque peu autonome dans la gestion de votre système. Contrairement à quelque chose comme QuickBooks ou une suite BI, qui vous prend davantage par la main et fournit certaines fonctionnalités automatiquement, Beancount vous donne une boîte à outils. Si vous êtes d'un tempérament analytique, cette boîte à outils peut être incroyablement libératrice – vous pouvez extraire des informations que des rapports standard ne montreront peut-être jamais. Comme l'a écrit un utilisateur qui a automatisé son grand livre Beancount au fil des années, "les outils open-source (comme Beancount) ne répondent pas à tous mes besoins [d'emblée]… je suis obsédé par l'automatisation de tout… j'ai construit ce dont j'avais besoin". Cela résume l'approche : si vous êtes prêt à construire ce dont vous avez besoin, petit ou grand, Fava/Beancount vous soutiendra et ne vous cachera jamais vos données. Pour un état d'esprit piloté par les données, c'est un énorme avantage.

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 de la clarté, de la flexibilité et de la propriété difficiles à égaler avec des plateformes propriétaires, ce qui le rend idéal pour ceux qui valorisent ces aspects et sont prêts à échanger 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 principal et un outil BI pour la présentation. Avec les connaissances de cette investigation, on peut prendre une décision éclairée sur la question de savoir si Fava+Beancount correspond à ses besoins et, si oui, procéder en toute confiance à l'exploitation de ses capacités pour des informations financières riches et en temps réel.

Sources :

  • Blais, M. (2020). Beancount Documentation – Design 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 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'usage professionnel de Beancount et la visualisation de ledger.
  • Fava Extension Documentation – Help: Extensions.
  • fava-dashboards GitHub README – Plugin de tableaux de bord personnalisés d'Andreas Gerstmayr.
  • Liste Awesome Beancount – ressources pour Beancount organisées par la communauté.

Source : https://beancount.io/fr/docs/Solutions/analytics