Clôturez un mois de comptes de bout en bout avec bea, l'outil en ligne de commande de Beancount.io. Vous ouvrirez un grand livre, enregistrerez des achats, importerez un export bancaire, rapprocherez un solde de relevé de 3206,81 USD et lirez le compte de résultat et le bilan du mois.
Le mois est août 2026 et le grand livre commence avec 1 250 USD sur le compte chèques. Rien ici ne vous demande d'écrire du Python ou une requête.
Installez d'abord bea si ce n'est pas déjà fait : le démarrage rapide de la CLI Beancount couvre Homebrew et uv. La tenue de livres locale ne nécessite pas de compte Beancount.io.
Travaillez dans un répertoire vide. Téléchargez les deux fichiers d'entrée avant de commencer :
- first-month.csv — l'export bancaire que vous importez à la semaine 3.
- rules.toml — les règles de catégorisation utilisées par cet export.
Chaque commande nomme le grand livre avec --file august/main.bean, vous pouvez donc les exécuter depuis ce répertoire sans changer de dossier.
Semaine 1 — Configurer les livres
Créez le grand livre, puis ouvrez le seul compte que le modèle ne fournit pas pour ce mois.
bea --no-input init august --currency USD --date 2026-08-01 \
--opening-balance "Assets:Checking 1250"
bea --file august/main.bean add open --date 2026-08-01 --account Expenses:Transport:Fuel -c USDinit écrit august/main.bean avec quatorze comptes, y compris Expenses:Uncategorized. Les importations y placent les lignes qu'elles ne peuvent pas catégoriser.
Semaine 2 — Enregistrer les achats quotidiens
Enregistrez les achats au fur et à mesure. La date par défaut est aujourd'hui, donc pour les entrées antidatées, passez --date explicitement.
bea --file august/main.bean add transaction "Coffee" --date 2026-08-03 \
--posting "Expenses:Dining 4.50" --posting "Assets:Checking"
bea --file august/main.bean add transaction "Weekly groceries" --date 2026-08-05 \
--posting "Expenses:Groceries 62.30" --posting "Assets:Checking"
bea --file august/main.bean add transaction --date 2026-08-07 --payee "Employer" \
--narration "August salary" --posting "Assets:Checking 2100" --posting "Income:Salary"Chaque ajout est vérifié par rapport à l'ensemble du grand livre avant que le fichier ne soit remplacé. La deuxième écriture est laissée vide, donc Beancount remplit le montant d'équilibrage.
Semaine 3 — Importer l'export bancaire
L'export pour le reste d'août contient trois lignes :
Date,Payee,Amount
2026-08-10,Whole Foods,-28.40
2026-08-12,Shell,-35.00
2026-08-20,Mystery Shop,-9.99Le fichier de règles associe un bénéficiaire à un compte. Les règles sont exécutées dans l'ordre du fichier et la première correspondance gagne.
[[rule]]
match = "whole foods|trader joe|corner market"
account = "Expenses:Groceries"
[[rule]]
match = "shell|chevron|exxon"
account = "Expenses:Transport:Fuel"
[[rule]]
match = "salary|payroll|employer"
account = "Income:Salary"Mappez les colonnes de l'export avec --csv, prévisualisez le résultat, puis répétez avec --apply pour l'écrire.
bea --file august/main.bean import first-month.csv \
--csv date=Date,amount=Amount,payee=Payee --account Assets:Checking --rules rules.toml
bea --file august/main.bean import first-month.csv --applyL'aperçu imprime une ligne par ligne avec la règle qui lui correspond, plus le diff exact qu'elle écrirait. Rien n'est écrit tant que --apply n'est pas utilisé.
La deuxième commande ne nécessite aucun drapeau : le mappage des colonnes, le compte et les règles sont mémorisés pour ce fichier. Chaque entrée écrite porte une ligne import-id, donc réimporter le même export saute ce qui est déjà dans le grand livre.
Deux lignes correspondent à une règle. La troisième, Mystery Shop, ne correspond à rien, elle est donc postée sur Expenses:Uncategorized avec le drapeau ! — votre file d'attente de révision pour plus tard.
Pour le format colonnes débit et crédit, d'autres devises et les importateurs Python, voir Importer des exports bancaires avec la CLI.
Semaine 4 — Rapprocher avec le relevé
Le relevé d'août clôture le compte chèques à 3206,81 USD. Vos livres indiquent 3209,81 USD. La différence est un frais bancaire de 3,00 USD que l'export a manqué.
Enregistrez le frais, puis affirmez le solde du relevé. Beancount vérifie une assertion au début de sa journée, donc une assertion au 1er septembre couvre toutes les transactions d'août.
bea --file august/main.bean add transaction "Bank fee" --date 2026-08-31 \
--posting "Expenses:Fees 3.00" --posting "Assets:Checking"
bea --file august/main.bean add balance --date 2026-09-01 --account Assets:Checking \
--amount "3206.81 USD"
bea --file august/main.bean list transaction --flag '!' --detailsLa file d'attente contient une transaction, la ligne Mystery Shop. --details imprime son fichier et son numéro de ligne.
Ouvrez cette ligne dans votre éditeur. Remplacez sa poste Expenses:Uncategorized par le compte auquel elle appartient — Expenses:Dining ici — et changez son drapeau de ! à * pour la marquer comme révisée. Conservez la ligne import-id pour qu'une réimportation saute toujours cette ligne.
Puis confirmez que le grand livre se charge et que la file d'attente est vide :
bea --file august/main.bean check
bea --file august/main.bean list transaction --flag '!' --detailsUn grand livre propre sort avec un code de sortie 0. Une assertion cassée ou un compte inconnu est listé avec un code de sortie non nul. La file d'attente affiche maintenant No transactions found.
Lire le mois
bea --file august/main.bean report income-statement --time 2026-08
bea --file august/main.bean report balance-sheet
bea --file august/main.bean report income-statement --time monthLe compte de résultat nette le salaire de 2 100,00 USD contre 143,19 USD de dépenses pour un bénéfice net de 1 956,81 USD. Les soldes des comptes s'affichent en signes Beancount, donc les lignes de revenus sont négatives. Le bilan montre le compte chèques à 3 206,81 USD, correspondant au relevé auquel vous avez rapproché.
--time 2026-08 épingle le mois de ce tutoriel. --time month signifie toujours le mois en cours, c'est ce que vous utiliserez une fois vos livres à jour.
Continuer à partir d'ici
- Importer des exports bancaires avec la CLI pour la révision des doublons, d'autres mises en page de colonnes et les réimportations.
- Automatiser la tenue de livres avec bea pour l'enveloppe JSON, les codes de sortie et les exécutions sans surveillance.
- Référence CLI Beancount pour chaque commande et option.