2 points par GN⁺ 2026-01-03 | 1 commentaires | Partager sur WhatsApp
  • Utilisation de Beancount pour consigner pendant 10 ans des finances personnelles dans de simples fichiers texte, avec environ 450 lignes de données et 100 transactions gérées
  • En y consacrant 30 à 45 minutes par mois, import des fichiers CSV de relevés bancaires puis organisation manuelle et automatique, avec séparation par année pour préserver la lisibilité
  • Développement en interne d'une bibliothèque d'import Python pour les banques allemandes, intégrée à Beancount, dont une partie est toujours maintenue aujourd'hui
  • Constatant les difficultés des débutants avec Beancount, rédaction d'un guide d'introduction pour débutants, qui a reçu un accueil positif dans la communauté
  • Toutes les données sont stockées sur son appareil local et dans un dépôt Git, offrant davantage de pérennité et de contrôle qu'une application ou un service spécifique

Structure du grand livre Beancount sur 10 ans

  • Gestion des données financières avec Beancount depuis 2016, avec un total de 4511 lignes d'entrées stockées dans 16 fichiers .beancount
    • Le fichier main.beancount sert de centre, avec des fichiers annuels reliés via include
    • Le total représente environ 995 transactions, dont 1943 postings (écritures)
  • Il existe 186 comptes (accounts) au total, mais il ne s'agit pas de véritables comptes bancaires : ce sont des comptes de classification virtuels
    • Exemple : il est possible de créer des comptes par poste détaillé, comme les dépenses au supermarché, les revenus ou les services par abonnement
  • 507 documents PDF sont joints aux transactions, ce qui permet de retrouver facilement les reçus correspondants lors de la déclaration fiscale
  • Le nombre de postings par année est passé de 715 en 2016 à 251 en 2023, 2023 étant l'année la plus active

Procédure de gestion mensuelle

  • Environ 30 à 45 minutes sont consacrées chaque mois à télécharger les relevés bancaires en CSV puis à les importer dans Beancount
    • Le format CSV est utilisé car il est plus facile à parser que le PDF
    • Un importer basé sur Python convertit les données CSV au format Beancount
  • Après ajout des transactions converties au fichier .beancount, ajustement pour que le solde revienne à 0 selon le principe de la comptabilité en partie double
    • Une partie est classée automatiquement, une autre ajustée manuellement
  • Au début de la nouvelle année, les transactions de l'année précédente sont déplacées dans un fichier <year>.beancount, puis incluses dans main.beancount pour la gestion
  • L'ensemble de l'historique des transactions est organisé sous forme de fichiers texte dans un seul répertoire

Développement d'un importer Beancount pour les banques allemandes

  • Beancount ne connaît pas nativement le format des relevés bancaires, une conversion est donc nécessaire via une classe importer
  • Comme l'auteur utilise des comptes bancaires allemands, il a développé lui-même plusieurs importers
  • Les trois premières bibliothèques sont encore activement maintenues et utilisées

D'utilisateur à auteur

  • La documentation de Beancount est volumineuse, mais la barrière à l'entrée reste élevée pour les débutants
  • Fort de l'expérience acquise par essais et erreurs, l'auteur a rédigé un guide d'introduction
    • Disponible sur personalfinancespython.com
    • Mentionné sur la page external contributions de la documentation officielle de Beancount
    • Les avis des lecteurs ont été positifs

Conclusion

  • Toutes les données financières sont stockées dans des fichiers texte locaux versionnés avec Git
  • Les données résident sur son propre appareil et ne dépendent d'aucune application ou d'aucun service spécifique
  • Il est possible de les analyser librement à l'aide des outils de l'écosystème Beancount
  • Cette approche de plaintext accounting constitue une forme puissante de gestion financière pouvant durer plus longtemps que n'importe quelle application

1 commentaires

 
GN⁺ 2026-01-03
Réactions sur Hacker News
  • Je suis entièrement d’accord avec le livre de l’OP. C’était de loin la meilleure introduction que j’aie vue jusqu’ici pour comprendre Beancount / la comptabilité en texte brut
    Moi non plus, je n’avais jamais vraiment compris la comptabilité en partie double, jusqu’à ce que je lise "Accounting for Computer Scientists" de Martin Kleppman. C’est là que tout a commencé à devenir clair. L’explication par la théorie des graphes était étonnamment intuitive

    • Le résumé « Quicken est un système de comptabilité en partie simple, donc l’argent peut apparaître ou disparaître soudainement. En partie double, si vous ajoutez de l’argent à un compte, vous devez nécessairement le retirer d’un autre » va vraiment à l’essentiel. C’est une phrase vue dans quicken2beancount
    • Je trouve intéressant que tu aies eu l’impression que la partie double était difficile. En réalité, le principe est simple : chaque transaction touche deux comptes en même temps, et la somme des débits et des crédits doit être égale. J’ai du mal à imaginer comment la théorie des graphes pourrait encore simplifier ça
    • Merci de l’avoir mentionné, Michael !
  • J’utilisais Quicken autrefois, mais comme je devais ressaisir mes données à chaque changement de version, j’ai fini par migrer vers GNU Cash. Mais il y avait aussi des problèmes de migration
    Puis j’ai découvert la comptabilité en texte brut (PTA) et j’ai choisi hledger (je craignais que Beancount ait des soucis de performances). Une fois la partie double apprise, c’était plus simple que prévu.
    Je parse les relevés d’investissement et les fiches de paie reçus en PDF avec des scripts Python, et j’ai automatisé la catégorisation des CSV bancaires/cartes, donc l’essentiel est automatisé.
    J’y consacre environ une heure par mois pour produire des rapports d’investissement, des budgets et des synthèses fiscales.
    Comme c’est du texte brut, les données restent en sécurité même si le format change, et on peut aussi faire du versioning avec git.
    Les inconvénients, c’est que ça ne marche pas sur mobile et qu’il faut un minimum de bagage technique. Mais pour ceux pour qui le flux d’argent est important, c’est la bonne solution

    • Je me demande ce que veut dire exactement « je devais ressaisir ». J’utilise Quicken depuis 1992 et je n’ai jamais eu à ressaisir mes données lors d’un changement de version
    • Moi aussi, j’aimerais quitter Quicken, mais la dépendance à Intuit est trop forte. Toutes mes transactions depuis 2000 sont enfermées dans un format propriétaire.
      Cela dit, la synchronisation automatique de Quicken reste ce qu’il y a de mieux, donc c’est difficile à remplacer. Je vérifie 27 comptes tous les jours pour repérer les fraudes ou les erreurs, et télécharger des CSV à chaque fois pour les traiter manuellement serait un cauchemar.
      En plus, les banques ont tendance aujourd’hui à fermer OFX et à utiliser Intuit comme hub intermédiaire, donc il devient de plus en plus difficile de s’en échapper
  • J’ai appris grâce à full-fledged-hledger l’idée de gérer ses finances personnelles comme un système de build de projet
    On conserve telles quelles les données brutes reçues des institutions financières, on les convertit en CSV avec des scripts, puis on les mappe vers des entrées PTA avec des fichiers de règles.
    De cette façon, si on modifie la logique de conversion ou les règles de catégorisation, tout l’historique est automatiquement mis à jour.
    On peut commencer avec un mois de données, puis étendre progressivement — par exemple jusqu’aux commandes Amazon ou aux reçus PayPal

    • J’ai lancé la blague : « Pourquoi PTA aurait un rapport avec l’association des parents d’élèves ? »
    • Le traitement comptable d’un prêt immobilier m’embrouillait, et ce lien donne une bonne explication. Je me demande si tu as utilisé directement cette base de code, ou seulement repris les principes. Je ne connais pas Haskell, donc je ne sais pas à quel point il faut la modifier
  • J’utilise Beancount depuis plusieurs années.
    Depuis cette année, je suis passé comme l’OP à une structure de fichiers par année. Avant, j’avais un fichier unique de 2 millions de lignes, et le plugin Emacs était devenu lent.
    L’avantage de cette approche, c’est qu’on peut tout suivre — investissements, retraites, RSU, comptes bancaires, etc. On peut même modéliser la consommation électrique (kWh).
    Dernièrement, j’ai beaucoup créé d’outils d’automatisation avec des LLM. Par exemple, j’ai refactoré avec Claude un moteur de règles de transaction en application avec interface UI. Avant, ça m’aurait pris plusieurs jours

    • J’ai aussi essayé de suivre ma facture d’électricité en kWh, mais honnêtement ça ne m’a pas servi à grand-chose 😂
    • Moi aussi, j’aimerais créer des outils de finances personnelles avec des LLM, mais je m’inquiète du partage de données sensibles. Il vaudrait sans doute mieux traiter ça avec un modèle local anonymisé
  • Beaucoup de gens semblent confondre texte brut et comptabilité en partie double.
    Beancount prend en charge les deux, mais on peut faire de la comptabilité en texte brut sans connaître la partie double.
    Cela dit, la partie double est un excellent outil pour structurer ses connaissances, donc je recommande de l’apprendre.
    Je reste en revanche assez sceptique sur l’intérêt du texte brut en soi. Cela ressemble à une réaction contre la dépendance au cloud ou le vendor lock-in, mais faire de la partie double en local avec du logiciel libre suffit déjà.
    Ma conclusion est la suivante :

    • comptabilité : important
    • partie double : important
    • éviter le cloud / le lock-in : important
    • éviter les formats propriétaires : important
    • texte brut : pas important
      J’utilise GnuCash, qui n’est pas parfait, mais correspond bien à cette philosophie
    • Je pense que l’automatisation est indispensable en comptabilité. Le travail manuel génère trop d’erreurs, et l’exactitude est l’exigence P0
    • Moi aussi, j’aime et je déteste à la fois GnuCash. L’interface est trop datée. Ce serait bien de séparer le moteur en bibliothèque pour pouvoir l’utiliser avec différentes interfaces
  • J’ai commencé la PTA récemment, et la barrière à l’entrée est assez élevée.
    Il faut d’abord apprendre la partie double, puis choisir entre ledger-cli / hledger / beancount. Les différences sont subtiles, et la communauté ou la qualité de la documentation deviennent souvent le facteur décisif.
    Ensuite, il faut réfléchir aux comptes à importer en premier, à la profondeur de l’historique à inclure, et à la manière de configurer les importeurs automatiques.
    hledger utilise un DSL, Beancount utilise Python. La majeure partie du temps est consacrée à l’édition manuelle.
    Puis viennent de nouvelles questions : budget, fiscalité, partage avec son conjoint, etc.
    Mais j’ai l’impression que le vrai intérêt de la PTA, c’est justement de prendre conscience soi-même de ces questions.
    Chaque année, quand il faut prendre quantité de décisions financières sur la retraite, l’assurance, la facture internet ou une nouvelle offre d’emploi, le fait de comprendre en détail mon économie personnelle est d’une grande aide

    • Je suis mathématicien, programmeur et diplômé en finance, donc j’ai appris tôt la partie double. Je trouve ce système abstrait et élégant vraiment magnifique.
      J’utilise ledger-cli avec Emacs depuis 10 ans, et j’ai aussi utilisé GnuCash auparavant.
      J’ai même écrit un manuel d’introduction à la partie double
    • La partie double devient facile avec l’habitude, mais au début la courbe d’apprentissage est raide.
      J’utilise la PTA depuis 2018, et j’ai tiré beaucoup de leçons de mes tâtonnements.
      Les services commerciaux n’affichent qu’une partie des comptes, alors qu’avec la PTA, on peut comprendre complètement le flux de l’ensemble de ses finances.
      Par exemple, on peut suivre toute la provenance d’actions reçues de son entreprise jusqu’à leur vente puis leur versement sur un compte bancaire
    • Je pense que la partie double est largement excessive pour les finances personnelles.
      Pour moi, un tableur Excel est l’outil parfait. J’y ajoute simplement les chiffres dont j’ai besoin chaque semaine
    • Je suis d’accord avec l’idée que la comptabilité a l’air simple, mais qu’elle est difficile à apprendre.
      La littérature est contradictoire et obscure, et même des comptables comprennent parfois mal les concepts sur le plan théorique
  • Cela fait 20 ans que je gère mes finances avec un simple tableur.
    Je le mets à jour en cinq minutes par mois, et je ne suis que les postes essentiels : électricité, chauffage, assurance, épargne, etc.
    Mon objectif est de repérer les tendances de dépenses et de garantir un budget annuel. L’argent qui reste, je le dépense simplement

    • Je fais à peu près pareil. Chaque mois, je note les soldes des comptes, les revenus, les impôts, les virements d’investissement, le logement et l’assurance. C’est largement suffisant pour avoir une vision de sa situation financière
    • Moi aussi, je faisais ça en texte brut avant, mais après le mariage je suis passé à un tableur pour la gestion commune.
      Je ne note à part que les dépenses supérieures à 100 $, pour ne suivre que les grosses sorties
    • Moi aussi, j’utilise un tableur pour les finances du foyer, mais pour gérer l’argent d’autrui (trusts, etc.), j’utilise hledger. Parce qu’il faut de la partie double et des rapprochements
    • Si vous voulez de l’automatisation, je recommande Tiller. Il se connecte à la banque, importe automatiquement les transactions dans un tableur et fournit aussi des modèles de budget
    • Je suis moi aussi un peu moins obsessionnel, mais je n’aime pas les services propriétaires ni les applis payantes.
      Je télécharge chaque mois les CSV de ma banque / de ma carte et je les analyse avec des scripts Python.
      Avec du code écrit par un LLM, j’analyse les tendances de dépenses par commerçant, et je réserve une carte uniquement aux abonnements récurrents, ce qui permet de repérer facilement les variations
  • Je recommande Fava, un frontend GUI pour Beancount
    https://beancount.github.io/fava/
    La visualisation de l’ensemble des comptes, l’interface de recherche / requête et la fonction d’édition en temps réel sont très utiles

  • Ce système a vraiment l’air très bien, mais je me demande comment faire quand on gère ses finances avec un partenaire non technique.
    Nous utilisons YNAB, dont l’interface est propre et la collaboration facile. Est-ce qu’on pourrait avoir ce genre d’interface avec Beancount ?

    • Dans le commentaire juste en dessous, quelqu’un recommande Fava
    • Si vous utilisez un iPhone, je recommande l’app MoneyStats. Elle est jolie et facile à configurer, donc agréable à utiliser à deux
  • Moi aussi, je me suis plongé un temps dans la PTA et j’ai commencé à tenir des logs, mais télécharger manuellement les transactions depuis plusieurs banques est beaucoup trop pénible
    On dit que l’automatisation est la réponse, mais je me demande comment les gens s’y prennent en pratique — avec des API type Plaid, ou en créant des scrapers web ou des parseurs PDF ?
    Au final, je paie 130 $ par an pour YNAB. Mon épouse en est très satisfaite, et tout est connecté automatiquement.
    On pourrait sans doute sauvegarder les données via l’API YNAB et les utiliser en parallèle dans une PTA

    • J’ai créé moi-même des parseurs de relevés PDF. Certains, je les ai écrits directement avec PyMuPDF, et pour d’autres, je les ai fait générer par Claude à partir d’exemples de relevés.
      Le secteur financier est vraiment très en retard sur ce point. L’automatisation progresse, mais pour l’instant le rendement par rapport à l’effort reste faible
    • J’ai terminé ma configuration ce matin. Vérifier 18 comptes toutes les deux semaines m’amuse, donc ce n’est pas une contrainte pour moi.
      J’utilisais YNAB avant, mais il y avait souvent des problèmes de transactions en double, donc j’ai fini par abandonner.
      J’ai tout réinitialisé trois fois, mais les erreurs revenaient sans cesse, donc je suis revenu à un suivi manuel.
      Maintenant, la PTA est bien plus stable, et j’ai l’impression de garder le contrôle