Comptabilité en texte brut (Plain Text Accounting, PTA)
(plaintextaccounting.org)- Plain Text Accounting (PTA) est une méthode qui consiste à enregistrer les données comptables dans des fichiers texte brut et à les traiter avec des outils conviviaux en ligne de commande comme Ledger, hledger et Beancount ; ce site est un portail qui rassemble les ressources associées en un seul endroit
- L’activité de la communauté est répartie entre Matrix/IRC, forums, Reddit, Lemmy, Hacker News, Mastodon, X, Bluesky, ce qui permet de suivre les questions, les actualités et les échanges par projet via plusieurs canaux
- Les ressources d’apprentissage sont organisées en comparaison d’applications, documentation officielle, bases de la comptabilité, guides d’introduction, aide-mémoire, cookbook, FAQ, slides et vidéos, afin que les débutants en PTA puissent progresser étape par étape
- L’écosystème applicatif s’articule autour de Ledger, Beancount et hledger, avec plusieurs implémentations et des matrices de fonctionnalités ; les trois outils principaux reposent respectivement sur C++/Python/Haskell et ont un historique de versions allant jusqu’en 2025~2026
- Des outils pour l’import et la conversion, les plugins d’éditeur, la facturation, la récupération de prix, le reporting, le suivi du temps, les UI, les workflows et les bibliothèques permettent d’intégrer les données de comptabilité en texte brut dans divers environnements de travail
Concept du PTA et rôle de plaintextaccounting.org
- Plain Text Accounting est une approche de la tenue de livres et de la comptabilité reposant sur des fichiers texte brut et des logiciels efficaces et orientés ligne de commande comme Ledger, hledger et Beancount
- plaintextaccounting.org sert de portail vers les outils, la documentation et les pratiques de la communauté PTA
- Il est possible de suivre les mises à jour du dépôt du site, et des informations sur les rapports financiers et le soutien y sont également fournies
Communauté et canaux de discussion
- Les échanges en temps réel passent par Matrix avec
#plaintextaccounting, l’espace Matrix plaintextaccounting, et le canal IRC#plaintextaccountingsur Libera Chat - Les discussions et actualités sont réparties sur plusieurs canaux publics
- PTA forum
- /r/plaintextaccounting
- lemmy.world/c/plaintextaccounting
- Recherche de stories/comments liés au plain text accounting sur Hacker News
- Mastodon avec
#plaintextaccounting,#ledgercli,#hledger,#beancount - Recherche et hashtags sur Twitter/X et Bluesky
- Sur Stack Exchange, des tags
ledger-cliethledgerainsi que des liens de recherche sont proposés - Des mailing lists et salons de discussion par projet sont aussi référencés, ainsi que
This Week In Hledger
Documentation et ressources d’apprentissage
- Les ressources de comparaison d’applications incluent une liste d’apps PTA, une matrice de fonctionnalités, une FAQ « quelle application PTA choisir ? » et une Syntax Quick Reference
- La documentation officielle des apps renvoie vers Ledger, hledger, Beancount, rustledger, Ledger(Go), Tackler et la documentation pta
- Les ressources de bases comptables incluent la FAQ PTA, les Accounting basics/links de hledger, la Double-Entry Counting Method de Beancount et « Accounting for Computer Scientists », entre autres
- Les ressources d’introduction sont réparties selon différents points d’entrée
- Des sections séparées rassemblent aussi les aide-mémoire, cookbook, FAQ, slides et vidéos ; la section vidéo mentionne qu’il est difficile de trouver des vidéos PTA sur YouTube
Principales apps PTA et comparaison des fonctionnalités
- Pour se lancer dans le PTA, on peut essayer une ou plusieurs applications listées sur le site, et en général la migration des données entre apps est possible
- La liste actuelle des principales apps regroupe plusieurs projets
- Ledger : C++, lancé en 2003, dernière release en 2025, environ 245 contributeurs, environ 5.9k stars
- Beancount : Python, lancé en 2008, dernière release en 2026, environ 103 contributeurs, environ 5.5k stars
- hledger : Haskell, lancé en 2007, dernière release en 2026, environ 194 contributeurs, environ 4.4k stars
- Transity, Ledger(Go), Abandon, zhang, Tackler, rustledger, knut, acc, ledg figurent également dans la liste actuelle
- Les projets anciens ou inactifs sont répertoriés séparément : placc, budget-cli, mynt, awk-pta, pta, blossom, .Net Ledger, monescript, Penny, UMM, cl-ledger, etc.
- La matrice de fonctionnalités de Ledger, hledger et Beancount a été mise à jour en 2024-09 et compare l’interface utilisateur, l’installation, l’aide, les formats d’entrée/sortie, les commandes, la configuration, l’extensibilité, les noms de comptes, les budgets, les graphiques, la récupération de prix, les requêtes, la validation, etc.
- Les différences clés se concentrent sur les éléments qui influencent directement le choix de l’outil
- Les CLI associées sont
ledgerpour Ledger,hledgerpour hledger etbeanquerypour Beancount - La facilité d’installation et de configuration est marquée
yespour Ledger/hledger etnopour Beancount - hledger propose des formats de sortie text/html/csv/tsv/fods/beancount/sql/json
- La validation de Beancount est indiquée comme toujours stricte, tandis que Ledger et hledger sont signalés comme configurables
- Les CLI associées sont
Écosystème logiciel
- La section IA inclut
accountant24, un agent IA local-first multimodèle utilisant hledger, ainsi qu’un article de configuration utilisant Claude Code comme couche d’agents avec hledger et un vault Obsidian - Les distributions et configurations alternatives incluent Full-fledged hledger, hledger-flow, Lazy Beancount, hledger-youtube-business, rtrLEDGER et docker-finance
- Les outils de conversion et d’import de données occupent une place importante ; en plus de la conversion CSV intégrée de Ledger et hledger, sont listés l’outil d’import de Beancount v2,
banks2ledger,beancount-import,beancount2ledger,hledger2beancount,ledger2beancount,plaid2text, etc.- Des sous-sections distinctes recensent aussi les outils pour migrer depuis GnuCash, Intuit/QuickBooks/QIF, KMyMoney et YNAB vers *ledger ou Beancount
- Les outils de génération de données servent à créer des transactions de prix, des amortissements, des intérêts, des écritures récurrentes ou des postings de gains/pertes en capital
- Les plugins d’éditeur sont classés pour Emacs, JetBrains IDE, Nano, Sublime, TextMate, Vim et VS Code
- Exemples :
ledger-mode,beancount-mode,hledger-mode,vim-ledger,vim-beancount,hledger-vscode,vscode-beancount
- Exemples :
- Parmi les outils de formatage figurent
beancount-black,beancount-black web appethledger-fmt - Côté facturation, on trouve
kairos, un outil Go qui génère des factures à partir de fichiers timedot hledger
UI, reporting, workflows et bibliothèques
- Les outils de récupération de prix incluent
bean-pricede Beancount,hledger-stockquotes,ledger-get-prices,pricehistainsi que des outils de cotations boursières et de taux de change basés sur Yahoo Finance - Les outils de reporting s’étendent aux budgets, à l’analyse de patrimoine, aux rapports d’écart, au taux de rentabilité interne, aux graphiques, aux diagrammes de Sankey, à la sortie PDF et au calcul des plus-values
- Les outils de suivi du temps incluent org, un hook Taskwarrior, le CSV de Toggl, la conversion timeclock et des exemples de suivi du temps basés sur hledger
- Les UI terminal prennent en charge la saisie, la consultation et l’édition de transactions avec
hledger add,hledger-ui,hledger-iadd,bean-add,ledger xact,puffin,regdel, etc. - Des UI GUI, web et mobile sont également référencées comme outils séparés
- Web : fava, hledger-web, Paisa, BeanHub
- Mobile : Beancount Mobile CE, beancount-mobile, NanoLedger, cashier, cone, MoLe
- GUI : fruit-credits, Ledgera, Prudent, Surebeans, etc.
- La section workflows traite de configurations générant des journaux hledger à partir de CSV, ou de piles Docker pour suivre et produire des rapports sur des finances traditionnelles et crypto
- La section bibliothèques rassemble des composants de développement comme le parseur Beancount, l’API BeanHub, hledger-lib, l’API JSON de hledger-web, node-hledger, pyhledger, etc., pour parser, interroger, produire des rapports et intégrer des fichiers PTA
1 commentaires
Avis sur Hacker News
Les systèmes qui exigent une catégorisation stricte immédiate ne conviennent pas à tout le monde. Dans une entreprise où je travaillais auparavant, on utilisait une approche en deux temps : d’abord, on notait brièvement dans iPhone Notes des choses comme
-50 Alice tools,+20 Bob returned loan, puis un script analysait plus tard la date, les mots-clés, la contrepartie et les rubriques d’analyse internes pour les convertir en modèles de comptabilité en partie doubleLes éléments que le script ne parvenait pas à comprendre étaient catégorisés manuellement et, si nécessaire, ajoutés à la liste de règles ; il existait aussi des tables de correspondance par personne pour qu’Alice et Bob n’aient pas besoin d’utiliser le même vocabulaire
Il est difficile d’imaginer que quelqu’un qui fait la queue, conduit ou discute au moment où l’argent change de mains remplisse à chaque fois un format du type
Cat1:cat2:cat3. Au final, il y a de fortes chances qu’il revienne à une courte note ou à un message de chat, ou qu’il essaie de remplir tout ça “de mémoire”, sans doute le week-end plutôt qu’en fin de journéeAvec des outils textuels, on peut créer librement le flux que l’on veut, par exemple en ajoutant un script qui prend les notes iPhone et les transforme au format ledger ; du coup, cela me paraît un peu étrange de présenter ça comme une plainte
Chaque trimestre, nous téléchargeons des CSV depuis les comptes bancaires, les cartes de crédit et Zoho, puis un script Ruby lit le champ mémo et convertit le tout en fichier ledger. Le script et le résultat demandent quelques ajustements, mais c’est automatisé à plus de 95 %
En bonus, nous ajoutons aussi au fichier ledger des contrôles de cohérence, par exemple vérifier que le solde correspond à celui fourni par la banque et que les écritures se situent bien dans la période courante
J’utilise ledger-cli depuis près de 20 ans, depuis le moment où je me suis mis à mon compte, et même si ce n’est pas parfait, j’en suis très satisfait. Tout est en texte brut, donc je peux le traiter avec des scripts, le lire dans VIM et extraire facilement les données
Le fichier ledger de l’une de mes sociétés actuelles est un fichier texte brut de 2 Mo qui contient les transactions depuis 2016. Je n’ai pas trouvé énormément de valeur à pousser très loin la granularité des comptes/catégories, mais pour le suivi global, cet outil m’a été indispensable
Apprendre la comptabilité en partie double utilisée par des outils comme ledger a aussi été amusant ; avec le recul, ce n’était pas difficile et cela me semble être une compétence utile toute la vie
Pour ma stratégie de comptes/catégories, j’aligne les catégories de dépenses sur celles que l’Agence du revenu du Canada demande dans les déclarations fiscales. Au début, j’avais créé des catégories logiques comme frais d’hébergement ou coûts de prototypage/fabrication, mais après avoir dû les remapper pendant des années vers les catégories de l’ARC, j’ai compris qu’aligner dès le départ la catégorisation sur la fiscalité simplifiait énormément la déclaration de fin d’année
Si les données avaient été dans SQLite, cela aurait été bien plus facile à implémenter, mais on aurait alors perdu l’avantage de pouvoir les modifier directement avec un éditeur de texte
Grâce aux LLM, il est devenu beaucoup plus facile de tenir régulièrement une comptabilité en texte brut. C’est particulièrement utile pour éviter la saisie manuelle lors de l’import de relevés bancaires dans hledger
J’utilise un fichier JSON qui mappe les transactions bancaires vers des comptes hledger ; lorsqu’une transaction n’a pas encore de mapping, un script Python génère un prompt pour Claude. Claude consulte la liste des comptes, propose un mapping pour la nouvelle transaction, puis renvoie l’écriture hledger correspondante
Ensuite, un autre script affiche proprement les écritures hledger des transactions bancaires du mois, et je les finalise après quelques minutes de retouches. Les consignes de mapping qui, autrefois, seraient devenues un tas fragile de regex et de conditions peuvent aussi être écrites en langage naturel
J’ai aimé utiliser Beancount, apprendre au passage, écrire des outils d’import de données et manipuler moi-même la comptabilité. Mais cela fait presque un an que je n’ai pas importé les données pour la dernière fois ; je voulais le faire chaque mois, mais même avec pas mal d’automatisation, cela prend 30 à 60 minutes et c’est pénible
Quand la validation mobile est devenue nécessaire en plus, j’ai simplement abandonné
Cela fait aussi environ un an que je n’ai rien importé, et pour relancer le système, la seule solution qui me vient à l’esprit est de découper le travail en petits morceaux, en important un mois à la fois sur plusieurs jours
https://plaid.com/
J’utilise ledger pour la tenue de livres et la comptabilité personnelle, ainsi que pour plusieurs LLC. Si vous êtes à l’aise avec le terminal, que vous maîtrisez bien la CLI, que vous utilisez souvent vim ou emacs, les bases de sed/awk, et des scripts bash/python/perl/ruby, il y a de fortes chances que vous soyez bien plus satisfait en apprenant ledger et la comptabilité en partie double qu’avec votre méthode actuelle.
reckon est utile pour importer rapidement les transactions : https://github.com/cantino/reckon
Découper le problème avec
includeest aussi une bonne idée.bal --dcpeut sembler un peu familier à un comptable américain, mais beaucoup ne comprennent pas vraiment la façon dont ledger utilise les nombres négatifs ; il m’a donc été plus simple d’écrire quelques scripts pour convertir en style débit/crédit. J’ai été surpris de voir à quel point les comptables avec qui j’ai travaillé avaient du mal avec les abstractions.Si je devais ajouter un seul conseil, ce serait de tout regrouper avec un Makefile ou quelque chose d’équivalent. On se retrouve vite avec beaucoup de fichiers de transactions séparés par compte, et les commandes pour inclure les bons fichiers peuvent devenir longues.
Même pour les différents graphes et scripts de synthèse, je ne me souviens pas toujours de la syntaxe exacte ; avec make, on peut appeler des choses comme
make cashflow,make balance 'A=Checking',make balance-plot 'A=retirement'.J’ai écrit plusieurs articles de recettes pratiques pour utiliser Ledger efficacement dans des situations plus complexes que celles couvertes par le tutoriel de base : https://felixcrux.com/blog/ledger-practices
Lors de l’import des transactions bancaires, je les affecte d’abord à un compte portant le nom de la contrepartie, puis un script utilise
ledger printpour produire un second fichier journal par contrepartie, qui inverse la transaction d’origine et la place temporairement sous les sous-comptes du projetUnknownet de la catégorieUnknown.Ensuite, la personne chargée de la comptabilité rapproche la transaction d’une facture précise et l’affecte à un compte
Project:Category, en scindant si nécessaire un paiement unique entre plusieurs projets/catégories. En incluant tous les journaux de transactions bancaires et les journaux de contreparties,ledger balpermet de vérifier que le traitement comptable est terminé.La comptabilité en texte brut est formidable, mais je pense que, pour beaucoup de gens, le plus grand obstacle est de télécharger les données bancaires dans un format standard.
Les banques ne prendront probablement pas en charge activement autre chose que CSV ou Excel, et les plateformes d’agrégation de données comme Yodlee ou Plaid ne sont pas vraiment accueillantes pour l’open source ou les utilisateurs amateurs.
Il y avait autrefois une société appelée Wesabe (https://en.wikipedia.org/wiki/Wesabe) qui avait créé un logiciel de synchronisation bancaire depuis le desktop. Elle a été de fait évincée par Mint.com, mais cette approche me revient encore en tête et me semble possible aussi en open source.
Je ne l’ai pas encore essayé, mais après avoir passé quatre heures sur plusieurs jours à aider une société SaaS de comptabilité avec ses problèmes de connexion bancaire, je serais volontiers prêt à y consacrer du temps.
À chaque rapprochement de transactions, on se bat contre un système dont on ne peut ni voir l’intérieur ni corriger directement le comportement. J’en viens à douter que l’effort en vaille la peine, et s’il existe un outil correct, je préférerais gérer les CSV moi-même. Pour mémoire, cette société a qualifié cela de « chose normale » et n’a même pas remboursé.
Il y a aussi du linting et, si le résultat convient, on peut enregistrer le script pour réimporter à tout moment. L’outil prend aussi en charge le téléchargement des prix des commodities pour suivre des choses comme des actions.
Les graphiques ne sont pas assez génériques à mon goût, donc j’exporte les données ailleurs, mais pour la saisie de données, c’est excellent.
Je télécharge donc les PDF pour en extraire les données, mais c’est inutilement pénible. Pour fournir un PDF facile à lire par une machine, il suffirait de suivre quelques règles simples afin que 3 ou 4 champs de transaction et quelques champs de relevé comme la date et le solde puissent être extraits sans heuristiques fragiles.
Un PDF brandé et agréable à lire pour un humain n’est pas incompatible avec un PDF facile à lire par une machine.
J’avais prévu de traiter ces données pour les intégrer à mon système comptable, mais je ne l’ai jamais fait ; puis mon téléphone est tombé en panne et j’ai aussi perdu l’action Tasker. Je n’ai plus la motivation de le réimplémenter.
Les domaines associés existent toujours. Article de 2023 : https://news.ycombinator.com/item?id=36022005, article de 2021 : https://news.ycombinator.com/item?id=28420797, article de 2016 : https://news.ycombinator.com/item?id=11164330
On peut trouver d’autres mentions du concept sur https://hn.algolia.com/?q=Plain+Text+Accounting.
Je me demande comment les autres utilisent réellement les outils de comptabilité en texte brut. Est-ce pour comprendre leurs habitudes de dépense et changer de comportement, pour suivre les coûts, les revenus et le patrimoine net, ou bien est-ce le processus ordonné en lui-même qui les attire ?
Chaque fois que je vois ce sujet, je ressens à la fois l’envie de m’y plonger complètement et la culpabilité de ne pas avoir tenu mes tentatives précédentes dans la durée. En ce moment, je n’ai pas mis à jour mon grand livre personnel depuis un mois et demi, donc la culpabilité l’emporte
Au fond, je ne suis pas sûr de savoir pourquoi je l’utilise, et avec le temps j’ai l’impression d’enregistrer les transactions juste pour les enregistrer
C’est similaire pour les frais professionnels. Je paie du matériel ou des services avec ma carte, puis je fais une note plus tard et on me rembourse en espèces ou par virement. Cela dit, ça ne fonctionne pas dans certains pays ou certaines entreprises
Pour les dépenses personnelles du quotidien, la banque et l’expérience me donnent déjà une bonne idée, donc je n’ai pas besoin d’aller jusqu’à la comptabilité. Il faut une motivation financière, pas émotionnelle. Quand on sait que si l’on abandonne la comptabilité, un ami risque de faire disparaître plusieurs centaines de dollars en verres, ou que l’entreprise récupérera gratuitement un câble HDMI, on saisit les montants sans hésiter. Si la comptabilité personnelle marche moins bien, c’est parce que ce qu’on perd, ce n’est pas de l’argent, seulement de l’analyse
J’ai aussi quelques scripts qui automatisent des tâches comme l’import des transactions Wise ou le suivi des taux de change. Mais je n’ai pas la discipline nécessaire pour l’utiliser pour les dépenses personnelles quotidiennes ou la gestion du budget
Voir combien je gaspillais chaque jour au restaurant, puis calculer ce que cette somme aurait donné avec les intérêts composés si je l’avais placée dans un fonds indiciel, m’a beaucoup aidé à réduire cette habitude. Je peux aussi distinguer les créances clients, la trésorerie réelle et la trésorerie basée sur les revenus attendus
Le fait de découper mentalement le solde du compte d’épargne, par exemple « objectif d’investissement 40 %, cadeaux 1 % », m’a évité de voir un gros solde et de le dépenser impulsivement. J’ai aussi un programme qui génère des graphiques sur la croissance du patrimoine et la hausse ou la baisse des dépenses par catégorie, ajoute des notes sur le fait que ces changements ont eu ou non un effet net positif sur ma vie, puis exporte tout cela vers une page web ; je m’en sers chaque année pour définir les prochains objectifs
J’ai aussi un script Python qui convertit le fichier ledger en Excel pour l’envoyer à mon comptable pour la déclaration annuelle d’impôts. Le fichier ledger de l’activité professionnelle est séparé ; je ne le gère pas directement à la main, mais j’exporte les données depuis le logiciel du comptable pour faire mes propres calculs à la maison
Dans l’entreprise, je l’utilise pour prévoir la trésorerie en estimant comment les dépenses évolueront avec la croissance du chiffre d’affaires, détecter les anomalies de dépenses par département, décider s’il faut recruter davantage ou augmenter les dépenses marketing, et calculer des indicateurs comme le ROIC
La comptabilité en partie double aide à importer les relevés bancaires, générer le ledger, puis repérer les incohérences comptables. Je sépare les comptes par usage, comme les dépenses discrétionnaires, les avantages employés ou les intrants de l’activité, avec un versement hebdomadaire depuis le compte principal afin de vérifier les anomalies
Par le passé, un comptable a manqué de transparence et a inscrit de fausses dépenses dans les comptes pour donner l’impression d’économiser beaucoup d’impôts ; cela s’est terminé au tribunal, avec une grosse amende et des pénalités de retard. Désormais, je ne fais pas confiance au comptable et je vérifie toujours
J’ai beaucoup de scripts d’automatisation qui importent Stripe, les relevés bancaires, les écritures du comptable, etc., et je les rapproche en Python pour trouver les incohérences. En tant que programmeur, la comptabilité en texte brut me convient bien, et j’ai construit au fil des années mon propre système par-dessus hledger