Le cycle comptable, style Beancount
Les états financiers n’apparaissent pas par magie. Ils sont le produit final d’un processus structuré et répétable appelé cycle comptable. Bien que les principes soient universels, les outils que vous utilisez peuvent changer l’expérience de façon spectaculaire. Ce guide vous fait traverser le cycle comptable en se concentrant sur Beancount, l’outil puissant de comptabilité en texte brut.
Nous verrons comment l’approche texte‑first de Beancount élimine les étapes fastidieuses, ce que vous devez automatiser, et quels rapports vous donnent la vision la plus claire de votre santé financière. 🧑💻
TL;DR : le flux de travail Beancount
- Capture & Journal : Enregistrez chaque transaction comme une écriture double‑entrée propre dans votre fichier texte
.beancount
. - Validation & Rapprochement : Utilisez les assertions
balance
pour confirmer que votre grand‑livre correspond aux relevés bancaires et lancezbean-check
pour détecter les erreurs. - Revue : Générez une balance de vérification non ajustée pour un contrôle rapide.
- Ajustement : Postez les écritures d’accumulation, de report, d’amortissement et d’autres éléments de fin de période.
- Re‑revue : Vérifiez la balance de vérification ajustée pour vous assurer que tout est correct.
- Publication & Clôture : Générez votre compte de résultat, votre bilan et votre tableau de flux de trésorerie. La clôture des comptes est optionnelle dans Beancount, les rapports étant sensibles aux dates.
Ce flux peut être visualisé ainsi :
Étape 1 : Capturer et enregistrer les transactions
C’est l’étape fondamentale. Chaque événement financier — une vente, un achat, des frais bancaires — doit être enregistré. Dans Beancount, vous le faites en créant des transactions dans un simple fichier texte, généralement nommé main.beancount
ou organisé en plusieurs fichiers par année.
Chaque transaction doit respecter les règles de la comptabilité en partie double, c’est‑à‑dire que la somme de toutes les écritures doit être nulle. Beancount l’impose pour vous.
2025-08-10 * "Walmart" "Purchase of office supplies"
Expenses:Office:Supplies 45.67 USD
Assets:Bank:Checking -45.67 USD
- Astuce : Utilisez des tags comme
#project-phoenix
ou#client-acme
pour ajouter des dimensions à vos données. Cela rend les requêtes et les rapports incroyablement flexibles plus tard.
Hygiène du rapprochement ✅
La fonctionnalité la plus puissante pour garantir la précision est l’assertion de balance. À la fin d’une période de relevé (par ex. fin du mois), vous déclarez quel doit être le solde d’un compte.
2025-08-31 balance Assets:Bank:Checking 12345.67 USD
Si la somme de toutes les transactions affectant Assets:Bank:Checking
jusqu’à cette date n’est pas égale à 12345.67 USD
, Beancount déclenchera une erreur. Cette simple directive transforme votre grand‑livre en document auto‑audit.
Pour ceux qui remplissent des données historiques, la directive pad
peut créer automatiquement une écriture d’équilibrage afin que vos soldes d’ouverture correspondent à votre première assertion.
Étape 2 : « Poster au grand‑livre » (un cadeau !)
Dans les systèmes comptables traditionnels, vous écrivez d’abord les écritures dans un « journal », puis une étape distincte de « postage » copie ces valeurs dans le « grand‑livre ».
Avec Beancount, votre fichier .beancount
est à la fois le journal et le grand‑livre. Lorsque vous écrivez et sauvegardez une transaction, vous l’avez déjà postée. Il n’y a pas d’étape séparée. Cette immédiateté est un avantage majeur de la comptabilité en texte brut — ce que vous voyez est ce que vous obtenez.
Étape 3 : Préparer une balance de vérification non ajustée
Avant de commencer les ajustements, vous avez besoin d’un contrôle rapide « tout s’additionne‑t‑il ? ». Une balance de vérification est un rapport simple qui liste chaque compte et son solde total. Le total des soldes débiteurs doit être égal au total des soldes créditeurs.
Vous pouvez la générer avec une requête simple :
bean-query main.beancount \
"SELECT account, sum(position) GROUP BY 1 ORDER BY 1"
Ou, pour une approche plus visuelle, ouvrez votre grand‑livre dans Fava (l’interface web de Beancount) et allez au rapport « Balance de vérification ». Recherchez toute anomalie — un compte d’actif avec un solde créditeur, ou un compte de charge avec une valeur étrange.
Étape 4 : Comptabiliser les écritures d’ajustement
Les écritures d’ajustement sont essentielles pour un reporting précis selon le principe de la comptabilité d’engagement. Elles garantissent que les revenus sont reconnus lorsqu’ils sont gagnés et que les charges sont reconnues lorsqu’elles sont engagées, indépendamment du moment où l’argent change de mains.
Ajustements courants :
- Accruals : Enregistrement d’un revenu gagné mais non facturé, ou d’une charge engagée mais non payée.
- Deferrals : Gestion des prépaiements. Si un client vous paie d’avance pour une année de service, vous le comptabilisez comme une dette (
Liabilities:UnearnedRevenue
) et reconnaissez 1/12e du montant comme revenu chaque mois. - Éléments non monétaires : Enregistrement d’amortissements d’actifs.
- Corrections : Correction d’erreurs ou prise en compte d’éléments manquants provenant des flux bancaires, comme un petit paiement d’intérêts.
Exemple : Accumuler un revenu
Vous avez terminé un projet le 31 août mais n’enverrez la facture qu’en septembre. Pour reconnaître le revenu dans la bonne période (août), vous passez une écriture d’ajustement :
2025-08-31 * "Accrue revenue for client project #1042"
Assets:AccountsReceivable 3000.00 USD
Income:Consulting -3000.00 USD
Exemple : Enregistrer l’amortissement
Votre société possède un plan d’amortissement pour ses actifs. En fin de période, vous comptabilisez la charge :
2025-12-31 * "Annual depreciation on computer equipment"
Expenses:Depreciation 4800.00 USD
Assets:Fixed:AccumulatedDepreciation -4800.00 USD
Étape 5 : Exécuter une balance de vérification ajustée & valider
Une fois vos écritures d’ajustement saisies, relancez le rapport de balance de vérification. C’est votre balance de vérification ajustée. Elle fournit l’ensemble final de chiffres qui seront utilisés pour créer les états financiers.
C’est aussi le moment idéal pour lancer la vérification intégrée de Beancount :
bean-check main.beancount
Cette commande vérifie la syntaxe, les règles d’équilibrage et les assertions. Si elle ne renvoie aucune sortie, vos livres sont mécaniquement corrects.
Étape 6 : Publier les états financiers 📊
Voici la récompense. En utilisant les chiffres de votre balance ajustée, vous pouvez maintenant générer les rapports clés. Fava est le moyen le plus simple — il fournit des rapports interactifs et détaillés prêts à l’emploi.
- Compte de résultat (P&L) : Présente vos revenus et charges sur une période, aboutissant à votre résultat net.
- Bilan : Un instantané de ce que vous possédez (Actifs) et ce que vous devez (Passifs), ainsi que votre valeur nette (Capitaux propres) à une date donnée.
- Tableau de flux de trésorerie : Rapproche votre trésorerie de départ et de fin en montrant d’où vient l’argent et où il est allé.
Pour des rapports personnalisés, vous pouvez utiliser le Beancount Query Language (BQL). Voici une requête pour un compte de résultat mensuel :
-- P&L for August 2025
SELECT account, sum(position)
WHERE account '^(Income|Expenses)'
AND date >= 2025-08-01 AND date <= 2025-08-31
GROUP BY account ORDER BY account;
Étape 7 : Clôture des comptes (optionnelle)
Dans la comptabilité traditionnelle, le processus de « clôture » consiste à créer des écritures pour ramener à zéro tous les comptes temporaires (Revenus et Charges) et transférer le résultat net dans un compte de capitaux propres appelé Résultat reporté. Cela réinitialise formellement les comptes temporaires pour l’année suivante.
Dans Beancount, cette étape est généralement inutile. Les rapports de Fava sont sensibles aux dates ; si vous demandez le P&L 2025, il n’utilisera que les données de 2025. Les soldes ne « débordent » pas. La plupart des utilisateurs laissent simplement les soldes tels quels.
Cependant, si vous devez effectuer une clôture formelle pour des exigences de conformité ou de reporting aux actionnaires, vous pouvez le faire avec une simple écriture de fin d’année qui transfère le total des revenus et charges vers Equity:Retained-Earnings
.
Checklist pratique de clôture mensuelle
Voici une checklist réutilisable pour clôturer vos comptes chaque mois avec Beancount.
- Capture : Importez toutes les transactions bancaires et de cartes de crédit. Saisissez manuellement les dépenses en espèces ou les éléments hors flux.
- Rapprochement : Ajoutez des assertions
balance
pour tous les comptes bancaires, cartes de crédit et prêts, en les faisant correspondre à vos relevés. - Revue : Parcourez la balance de vérification non ajustée dans Fava. Examinez tout solde étrange ou inattendu. Vérifiez les factures impayées (
Assets:AccountsReceivable
) ou les factures à payer (Liabilities:AccountsPayable
). - Ajustement : Comptabilisez les écritures d’accumulation de revenus/dépenses, de revenu différé et les corrections nécessaires.
- Validation : Lancez
bean-check
. Examinez la balance de vérification ajustée finale. - Publication : Générez le compte de résultat et le bilan. Envoyez‑les aux parties prenantes ou conservez‑les pour vos archives.
- Clôture : Optionnellement, effectuez une écriture de clôture si votre entreprise l’exige. Archivez une copie de vos fichiers
.beancount
pour la période.
Pourquoi Beancount brille pour le cycle comptable
- Transparence et auditabilité : Votre grand‑livre est un fichier texte. Vous pouvez utiliser
git
pour versionner votre historique financier, examiner les changements avecdiff
, et collaborer avec votre comptable dans un format clair et sans ambiguïté. - Contrôle total : Vous définissez votre plan comptable. Vous n’êtes pas enfermé dans la structure d’un éditeur propriétaire. Vos données vous appartiennent, pour toujours, dans un format ouvert.
- Puissance inégalée : La combinaison de requêtes de type SQL (BQL) et d’une interface web riche (Fava) vous donne un pouvoir sans précédent pour découper, analyser et comprendre vos données financières.
Extraits à copier‑coller pour démarrer
Plan comptable simple :
option "title" "My Personal Ledger"
option "operating_currency" "USD"
;; --- Accounts ---
1970-01-01 open Assets:Bank:Checking
1970-01-01 open Assets:AccountsReceivable
1970-01-01 open Liabilities:CreditCard
1970-01-01 open Liabilities:UnearnedRevenue
1970-01-01 open Equity:Owner:Capital
1970-01-01 open Equity:Retained-Earnings
1970-01-01 open Income:Consulting
1970-01-01 open Expenses:Office:Supplies
1970-01-01 open Expenses:Software
1970-01-01 open Expenses:Depreciation
Requête BQL utile :
-- Find all customers with an outstanding balance
SELECT payee, sum(position)
WHERE account = 'Assets:AccountsReceivable'
GROUP BY payee
HAVING sum(position) > 0
ORDER BY sum(position) DESC;
En mappant le cycle comptable intemporel aux outils modernes basés sur le texte de Beancount, vous obtenez un système robuste, transparent et conçu pour durer. Bonne comptabilité !