Passer au contenu principal

2 articles tagués avec "double-entry accounting"

Voir tous les tags

Enregistrement des impôts dans Beancount (la méthode pragmatique)

· 8 min de lecture
Mike Thrift
Mike Thrift
Marketing Manager

Les impôts peuvent sembler être une bête spéciale et compliquée dans le monde des finances personnelles. Mais si ce n'était pas le cas ? Et si vous pouviez les traiter comme n'importe quel autre flux d'argent dans votre registre ? Bonne nouvelle : vous le pouvez. En traitant les impôts comme de simples mouvements de valeur, votre registre Beancount restera propre, facile à interroger et—plus important—compréhensible.

Voici un modèle pratique et sans fioritures que vous pouvez insérer dans un fichier Beancount personnel ou de petite entreprise. C’est un système simple pour gérer les fiches de paie, les paiements d’impôts et même ces ennuyeux remboursements qui débordent sur la nouvelle année. Nous couvrirons les comptes essentiels dont vous avez besoin, parcourrons des exemples concrets et vous montrerons les requêtes exactes à exécuter pour obtenir les réponses recherchées.

2025-08-25-recording-taxes-in-beancount


Les principes fondamentaux

Avant de plonger dans le code, convenons de quelques règles simples. Ces principes maintiennent la structure claire et lisible.

  • Séparer "ce que c'est" de "quand l'argent bouge." 🗓️
    C'est le concept le plus important. Une dépense fiscale appartient à l'année où vous avez perçu le revenu (par ex. 2024), même si vous réglez la facture auprès de l'IRS en avril 2025. Si vous ne séparez pas le moment de la dépense du moment du paiement en espèces, vos rapports d'année en année deviendront confus et trompeurs.

  • Gardez votre hiérarchie de comptes ennuyeuse et simple. 📁
    Nommez vos comptes clairement en fonction du type d'impôt (par ex. IncomeTax, SocialSecurity). Cela rend vos requêtes incroyablement simples. N'encombrez pas les noms de comptes avec des noms de fournisseurs ou des numéros de formulaire comme « W-2 » ou « 1099 » ; utilisez plutôt les métadonnées et les tags pour ces détails.

  • Adoptez la comptabilité d'exercice pour les ajustements de fin d'année. ⚖️
    Même pour un registre personnel, utiliser une écriture d'exercice simple en fin d'année est la façon la plus propre de rendre vos rapports précis. Cela signifie reconnaître une dépense ou un remboursement dans l'année correcte, même si l'argent ne bouge qu'aujourd'hui suivant. C’est une petite étape supplémentaire qui vous évite des acrobaties mentales plus tard.

  • Écrivez pour votre futur vous. 🧠
    Votre objectif est la clarté. N’ajoutez des détails supplémentaires, comme l'année fiscale, au nom d’un compte que si cela rend réellement vos requêtes plus faciles. Évitez de créer un nouvel ensemble de comptes chaque année (Expenses:Taxes:2024:Federal, Expenses:Taxes:2025:Federal, etc.) à moins d'avoir une raison impérieuse. Une structure plate est souvent plus facile à gérer.

Structure de comptes minimale

Voici un ensemble de comptes de base pour commencer. Cette structure est centrée sur les États‑Unis, mais vous pouvez facilement adapter les noms au système fiscal de votre pays. Il suffit d’insérer ces directives open dans votre fichier Beancount.

2024-01-01 open Assets:Checking
2024-01-01 open Assets:Cash
2024-01-01 open Liabilities:Taxes:Federal
2024-01-01 open Liabilities:Taxes:State
2024-01-01 open Assets:Tax:Receivable

Cette configuration sépare les impôts retenus des paiements directs et des remboursements, ce qui facilite la visualisation exacte de la destination de votre argent. Les comptes Liabilities et Assets sont notre arme secrète pour garantir l'exactitude des rapports de fin d'année.


Exemple 1 – Enregistrement d'une fiche de paie

Enregistrons une fiche de paie typique où les impôts sont retenus automatiquement. L'essentiel est d'enregistrer d'abord votre salaire brut, puis de montrer comment il a été réparti entre les impôts et l'argent réellement déposé sur votre compte bancaire.

2025-07-15 * "Employer Inc." "Paycheck"
Assets:Checking 4341.00 USD
Expenses:Taxes:Federal:IncomeTax 1200.00 USD
Expenses:Taxes:Federal:SocialSecurity 372.00 USD
Expenses:Taxes:Federal:Medicare 87.00 USD
Income:Salary:Gross -6000.00 USD

Cette transaction unique raconte toute l’histoire :

  • Vous avez gagné 6 000 $ de revenu brut.
  • 1 200 $ ont été envoyés à l’IRS pour l’impôt fédéral sur le revenu.
  • 372 sontalleˊsaˋlaSeˊcuriteˊSocialeet87sont allés à la Sécurité Sociale et 87 à Medicare.
  • Les 4 341 $ restants sont ce que vous avez perçu.

Astuce : Vous pouvez joindre des métadonnées de votre bulletin de paie (comme pay_period_end: "2025-07-15") à la transaction pour une piste d’audit facile.


Exemple 2 – Ajustements de fin d'année

Voici le scénario qui pose problème : nous sommes en avril 2025 et vous déclarez vos impôts de 2024. Vous découvrez qu’après toutes vos retenues, vous devez encore 3 000 $ supplémentaires.

Comment l’enregistrer ? Vous voulez que la dépense soit imputée à 2024, mais que le paiement en espèces se fasse en 2025. Voici deux excellentes façons de procéder.

Option A – Méthode pure Beancount (sans plugin)

Cette méthode est purement Beancount, aucun plugin requis. C’est un processus clair en deux étapes.

Étape 1 – Reconnaître la dépense à la fin de l'année fiscale.

2024-12-31 * "Tax adjustment"
Liabilities:Taxes:Federal:IncomeTax 3000.00 USD
Assets:Tax:Receivable -3000.00 USD

Maintenant, votre compte de résultat 2024 montre correctement cette dépense de 3 000 $.

Étape 2 – Enregistrez le paiement en espèces lorsqu’il se produit.

2025-04-15 * "Pay IRS"
Assets:Checking -3000.00 USD
Liabilities:Taxes:Federal:IncomeTax 3000.00 USD

Vos rapports 2024 sont corrects, et votre flux de trésorerie 2025 l’est aussi. Parfait ! Ce même modèle fonctionne à l’inverse pour un remboursement — utilisez simplement Assets:Tax:Receivable au lieu du compte de passif.

Option B – Utiliser le plugin effective_date

Si vous préférez regrouper le paiement dans une seule transaction, un plugin communautaire fantastique appelé beancount_reds_plugins.effective_date peut aider. Il vous permet d’attribuer une « date d’effet » différente à une ligne.

Tout d’abord, activez le plugin dans votre fichier Beancount principal :

plugin "beancount_reds_plugins.effective_date"
2025-04-15 * "Pay IRS" effective_date: "2024-12-31"
Assets:Checking -3000.00 USD
Expenses:Taxes:Federal:IncomeTax 3000.00 USD

Ici, la partie en espèces est enregistrée le 15 avril 2025, mais la partie dépense est appliquée rétroactivement au 31 décembre 2024. Cela donne le même résultat que l’Option A avec un flux de travail différent.


Qu'en est‑il de la taxe de vente ?

Pour la plupart des registres personnels, la taxe de vente est simple. Si vous ne la réclamez pas, séparez‑la simplement comme une dépense distincte lors d’un achat.

2025-07-01 * "Purchase"
Assets:Checking -120.00 USD
Expenses:Taxes:Sales 10.00 USD
Expenses:Supplies 110.00 USD

Cela vous permet de suivre facilement le montant que vous dépensez en taxes de vente au cours de l'année. Si vous dirigez une entreprise qui traite la TVA, vous utiliseriez un système plus formel avec des comptes de dettes et de créances, mais le principe reste le même.


Requêtes BQL pour obtenir vos réponses

L’objectif de cette structure est de faciliter l’obtention de réponses. Voici quelques requêtes BQL pour visualiser votre situation fiscale.

1. Quel était mon impôt fédéral sur le revenu total pour 2024 ?

SELECT SUM(amount) FROM transactions
WHERE account = 'Expenses:Taxes:Federal:IncomeTax' AND year = 2024;

2. Comment ce total se décompose‑t‑il entre retenues, paiements et remboursements ?

SELECT account, SUM(amount) FROM transactions
WHERE account LIKE 'Expenses:Taxes:%' AND year = 2024
GROUP BY account;

3. Ai‑je des dettes fiscales ou créances en cours ? (Utile pour vérifier votre travail !)

SELECT account, SUM(amount) FROM transactions
WHERE account IN ('Liabilities:Taxes', 'Assets:Tax:Receivable')
GROUP BY account;

Si cette requête renvoie des soldes non nuls, cela signifie que vous avez des accumulations non réglées.


FAQ rapide

  • Ai‑je vraiment besoin de comptes par année comme Expenses:Taxes:2024 ?
    Probablement pas. La méthode d’accumulation (ou le plugin) maintient une structure de comptes plate, propre et lisible. Créez des comptes annuels uniquement si cela facilite réellement l’écriture de vos requêtes spécifiques.

  • Beancount peut‑il calculer mes impôts à ma place ?
    Pas directement, mais il peut préparer les données. Certains utilisateurs avancés écrivent des scripts pour acheminer les résultats des requêtes BQL vers un logiciel de calcul d’impôt, ce qui est idéal pour estimer votre dette fiscale au cours de l’année.

  • S’agit‑il d’un conseil fiscal ?
    Non. Il s’agit d’un modèle de comptabilité pour organiser vos données. La comptabilité est solide, mais vous devez toujours consulter un professionnel fiscal pour des conseils adaptés à votre situation.


Checklist à insérer

  1. Ajoutez la structure de comptes à votre fichier Beancount (et adaptez les noms à votre pays).
  2. Enregistrez les fiches de paie en commençant par le revenu brut et en séparant les écritures fiscales.
  3. En fin d'année, accumulez les ajustements pour les paiements ou remboursements en utilisant un compte de passif/actif (ou utilisez le plugin effective_date).
  4. Suivez les remboursements comme créances et soldez‑les lorsque l’argent arrive.
  5. Exécutez les requêtes BQL ci‑dessus pour vérifier vos totaux avant de déposer votre déclaration.

Gardez-le simple, gardez-le cohérent, et votre saison fiscale ressemblera enfin à une simple partie de votre histoire financière — pas à un mystère à résoudre.

Le cycle comptable, style Beancount

· 9 min de lecture
Mike Thrift
Mike Thrift
Marketing Manager

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. 🧑‍💻

2025-08-13-the-accounting-cycle-beancount-style


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 lancez bean-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 avec diff, 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é !