Passer au contenu principal

Configuration de Beancount pour les startups

Une base pratique, copiable-collable pour gérer la comptabilité d'une startup en texte brut. Fonctionne du pré-amorçage à la Série A. Ceci ne constitue pas un avis juridique ou fiscal.


beancount-setup-for-startups

Gérer une startup signifie porter plusieurs casquettes, et l'une des plus importantes est celle de "comptable". Avant de pouvoir vous permettre un logiciel coûteux ou un comptable à temps plein, vous avez besoin d'un système précis, auditable et qui ne vous enfermera pas dans un écosystème propriétaire. Découvrez Beancount : un système de comptabilité open source en texte brut.

Utiliser Beancount signifie que votre grand livre financier vit dans des fichiers texte, juste à côté de votre code dans un référentiel Git. Il est contrôlé par version, transparent et personnalisable à l'infini. Ce guide fournit une configuration complète, copiable-collable pour démarrer la comptabilité de votre startup de l'incorporation jusqu'à votre Série A, basée sur des principes comptables sains et en comptabilité d'exercice.

1) Ce que vous allez configurer

Ce guide vous guidera dans la création d'une configuration comptable complète et de qualité professionnelle. À la fin, vous aurez :

  • Un grand livre unique source de vérité géré dans Git (main.beancount), vous donnant un historique complet et auditable des finances de votre entreprise.
  • Fava pour des rapports et des graphiques magnifiques. Fava est une interface web pour Beancount qui transforme vos fichiers texte en états des résultats, bilans et analyses de flux de trésorerie interactifs.
  • Une structure pour les importateurs que vous pourrez ajouter plus tard pour automatiser la saisie des transactions à partir de vos comptes bancaires, cartes de crédit, PayPal et Stripe. Nous commencerons manuellement pour apprendre le système, puis nous automatiserons.
  • Un plan comptable prêt pour la comptabilité d'exercice conçu pour les startups modernes, avec un support intégré pour les produits constatés d'avance, les charges payées d'avance et les passifs salariaux.
  • Des primitives pour le financement de démarrage, y compris des exemples clairs pour l'enregistrement des notes SAFE (soit en tant que passif, soit en tant que capitaux propres) et des obligations convertibles avec intérêts.

2) Structure du projet (déposer dans votre dépôt)

Commencez par créer cette structure de répertoire à l'intérieur du référentiel Git de votre entreprise. Cette organisation maintient votre grand livre propre et évolutif.

/ledger
main.beancount
/includes
accounts.beancount
opening-balances.beancount
policies.beancount
/documents
/bank
/invoices
/receipts
/importers # optional; add when you automate CSV ingestion
bank_importer.py
card_importer.py
  • main.beancount : Le fichier central qui rassemble tout.
  • /includes : Contient votre plan comptable, les soldes d'ouverture et les politiques comptables.
  • /documents : Un endroit pour stocker les PDF des relevés bancaires, des factures et des reçus pour une piste d'audit propre.
  • /importers : Où vivront vos futurs scripts Python pour l'analyse des CSV bancaires.

3) main.beancount minimal et sain

C'est le point d'entrée de votre grand livre. Il définit quelques options globales et inclut les autres fichiers composants. Copiez ce contenu dans ledger/main.beancount et personnalisez le titre.

option "title" "Acme, Inc. Ledger"
option "operating_currency" "USD"
option "documents" "ledger/documents"

include "includes/accounts.beancount"
include "includes/opening-balances.beancount"
include "includes/policies.beancount"

; If you later add importers, you’ll add plugin lines here.
; plugin "beancount.plugins.implicit_prices"

4) Plan comptable de départ (comptabilité d'exercice d'abord)

Votre plan comptable est la liste complète des catégories pour les transactions financières de votre entreprise. Ce modèle de départ est conçu pour la comptabilité d'exercice, qui donne une image beaucoup plus précise de la santé de votre entreprise que la comptabilité de caisse.

Placez ceci dans includes/accounts.beancount. N'hésitez pas à supprimer les comptes dont vous n'avez pas besoin tout de suite.

; --- Assets ---
1970-01-01 open Assets:Bank:Checking USD
1970-01-01 open Assets:Bank:Savings USD
1970-01-01 open Assets:AR USD ; Accounts Receivable
1970-01-01 open Assets:Prepaid:Software USD
1970-01-01 open Assets:Prepaid:Insurance USD
1970-01-01 open Assets:Deposits USD ; Security deposits
1970-01-01 open Assets:Equipment USD
1970-01-01 open Assets:Intangibles USD
1970-01-01 open Assets:Crypto:BTC BTC
1970-01-01 open Assets:Other

; --- Liabilities ---
1970-01-01 open Liabilities:AP USD ; Accounts Payable
1970-01-01 open Liabilities:CreditCard:Corporate USD
1970-01-01 open Liabilities:DeferredRevenue USD
1970-01-01 open Liabilities:Payroll:Withholding USD
1970-01-01 open Liabilities:Payroll:EmployerTaxes USD
1970-01-01 open Liabilities:SalesTax:CA USD
1970-01-01 open Liabilities:SAFE USD
1970-01-01 open Liabilities:NotesPayable USD
1970-01-01 open Liabilities:Other

; --- Equity ---
1970-01-01 open Equity:CommonStock USD
1970-01-01 open Equity:APIC USD ; Additional Paid-in Capital
1970-01-01 open Equity:SAFE USD ; If you classify SAFEs as equity
1970-01-01 open Equity:RetainedEarnings USD
1970-01-01 open Equity:OpeningBalances USD

; --- Income (negative balances) ---
1970-01-01 open Income:Revenue:SaaS USD
1970-01-01 open Income:Revenue:Services USD
1970-01-01 open Income:Other USD

; --- Expenses ---
1970-01-01 open Expenses:COGS USD
1970-01-01 open Expenses:Payroll:Wages USD
1970-01-01 open Expenses:Payroll:EmployerTaxes USD
1970-01-01 open Expenses:Benefits USD
1970-01-01 open Expenses:Contractors USD
1970-01-01 open Expenses:Software:Subscriptions USD
1970-01-01 open Expenses:Cloud USD
1970-01-01 open Expenses:Rent USD
1970-01-01 open Expenses:Meals USD
1970-01-01 open Expenses:Travel USD
1970-01-01 open Expenses:Marketing USD
1970-01-01 open Expenses:Legal USD
1970-01-01 open Expenses:Accounting USD
1970-01-01 open Expenses:Insurance USD
1970-01-01 open Expenses:BankFees USD
1970-01-01 open Expenses:Taxes:Income USD
1970-01-01 open Expenses:Taxes:Sales USD
1970-01-01 open Expenses:Other USD

Remarques

  • Les comptes de revenus sont négatifs car ils représentent des crédits en comptabilité en partie double. Ne vous inquiétez pas pour cela ; Fava inverse automatiquement les signes dans les rapports, de sorte que vos revenus apparaîtront comme un nombre positif dans l'état des résultats.
  • Conservez des catégories étroites et ciblées pour commencer. Il est beaucoup plus facile d'ajouter de nouveaux comptes plus tard que de nettoyer un plan comptable désordonné et trop granulaire.

5) Soldes d'ouverture (premier jour)

La première transaction dans votre grand livre donne le ton. Elle enregistre l'état initial de vos comptes le jour où vous commencez le suivi. Placez cette transaction dans includes/opening-balances.beancount, en ajustant la date et les montants pour refléter votre position de départ réelle.

2025-01-01 * "Opening balances"
Assets:Bank:Checking 5,000.00 USD
Liabilities:CreditCard:Corporate -500.00 USD
Equity:OpeningBalances -4,500.00 USD

Cette entrée établit que l'entreprise a commencé avec $5 000 à la banque et un solde de $500 sur sa carte de crédit. Le compte Equity:OpeningBalances est un compte spécial utilisé pour s'assurer que la transaction s'équilibre à zéro, comme l'exige la comptabilité en partie double.


6) Transactions courantes de startup (copier-coller)

Voici des recettes pour les événements financiers les plus courants dans une startup en phase de démarrage. Copiez, collez et adaptez-les pour votre propre usage.

Achat d'actions par le fondateur (simple, devise uniquement)

Lorsque les fondateurs achètent leurs actions initiales à la valeur nominale, l'argent arrive dans l'entreprise et est enregistré comme capitaux propres. Votre table de capitalisation (Carta, Pulley ou une feuille de calcul) est la source de vérité pour le nombre d'actions ; le grand livre ne comptabilise que les dollars.

2025-01-05 * "Founder stock purchase @ par"
Assets:Bank:Checking 800.00 USD
Equity:CommonStock -0.80 USD
Equity:APIC -799.20 USD
; 8,000,000 common @ $0.0001 — counts maintained off-ledger

(Facultatif) Suivre vos propres actions en tant que marchandise

Si vous voulez que le grand livre suive le nombre d'actions émises, vous pouvez définir votre action comme une "marchandise". C'est plus complexe, mais cela fournit un enregistrement plus complet dans le grand livre.

2025-01-05 commodity ACME
name: "Acme, Inc. Common"

2025-01-05 * "Founder share issuance"
Assets:Bank:Checking 800.00 USD
Equity:APIC -799.20 USD
Equity:CommonStock -8,000,000 ACME {0.0001 USD}

Encaissement SAFE (choisir la classification)

Un SAFE (Simple Agreement for Future Equity) peut être traité soit comme un passif, soit comme une forme de capitaux propres (plus précisément, des "capitaux propres mezzanine"). Consultez votre comptable pour choisir la bonne approche et soyez cohérent.

; (A) Equity classification (mezzanine)
2025-02-01 * "Post-money SAFE — SeedFund"
Assets:Bank:Checking 500,000.00 USD
Equity:SAFE -500,000.00 USD

; (B) Liability classification (until conversion)
2025-02-01 * "Post-money SAFE — SeedFund"
Assets:Bank:Checking 500,000.00 USD
Liabilities:SAFE -500,000.00 USD

Lorsqu'un tour de table à prix est conclu, vous reclassifierez le solde SAFE en actions privilégiées et en capital versé supplémentaire en fonction des documents de clôture.

Obligation convertible avec intérêts courus

Contrairement à un SAFE, une obligation convertible est sans ambiguïté un passif qui accumule des intérêts. Vous enregistrerez l'encaisse initiale, puis vous comptabiliserez les charges d'intérêts périodiquement (par exemple, trimestriellement).

2025-03-01 * "Convertible Note — 6% annual"
Assets:Bank:Checking 250,000.00 USD
Liabilities:NotesPayable -250,000.00 USD

2025-06-30 * "Accrue note interest Q2"
Expenses:Interest 3,750.00 USD
Liabilities:NotesPayable -3,750.00 USD
; 250,000 * 6% * 0.25 = 3,750

Vente annuelle de SaaS (produits constatés d'avance + comptabilisation mensuelle)

C'est une pierre angulaire de la comptabilité d'exercice. Lorsqu'un client paie d'avance pour un an, vous ne gagnez pas tous ces revenus en une seule fois. Vous les comptabilisez dans un passif (DeferredRevenue), puis vous comptabilisez 1/12ème de ceux-ci chaque mois.

2025-03-10 * "Annual subscription — AcmeCo — INV-001"
Assets:AR 1,200.00 USD
Liabilities:DeferredRevenue -1,200.00 USD
narration: "SaaS annual prepay"

2025-03-20 * "Payment INV-001"
Assets:Bank:Checking 1,200.00 USD
Assets:AR -1,200.00 USD

; Recognize month 1/12 (repeat monthly or script it)
2025-04-01 * "Revenue recognition 1/12 — INV-001"
Liabilities:DeferredRevenue 100.00 USD
Income:Revenue:SaaS -100.00 USD

Charge payée d'avance et amortissement

C'est l'inverse des produits constatés d'avance. Lorsque vous payez d'avance pour un service (comme un logiciel annuel ou une assurance), vous l'enregistrez comme un actif (Prepaid), puis vous "amortissez" ou comptabilisez une partie de celui-ci chaque mois.

2025-03-01 * "Annual software prepaid"
Assets:Prepaid:Software 1,200.00 USD
Assets:Bank:Checking -1,200.00 USD

2025-04-01 * "Amortize prepay 1/12"
Expenses:Software:Subscriptions 100.00 USD
Assets:Prepaid:Software -100.00 USD

Paie (encaisse nette, avec retenues + impôts de l'employeur)

Une entrée de paie comporte plusieurs parties : la charge salariale brute, la charge fiscale de l'employeur, l'encaisse nette versée aux employés et le passif pour les impôts que vous avez retenus et qui doivent être versés au gouvernement.

2025-04-15 * "Payroll — Apr 15"
Expenses:Payroll:Wages 15,000.00 USD
Expenses:Payroll:EmployerTaxes 1,200.00 USD
Liabilities:Payroll:Withholding -4,000.00 USD
Assets:Bank:Checking -12,200.00 USD

Collecte et versement de la taxe de vente (exemple CA)

Lorsque vous collectez la taxe de vente, ce n'est pas votre argent. C'est un passif que vous devez à l'État. Vous enregistrez le passif lorsque vous effectuez la vente et vous le supprimez lorsque vous versez la taxe.

2025-05-10 * "Invoice #123 — CA taxable"
Assets:AR 1,088.75 USD
Income:Revenue:SaaS -999.00 USD
Liabilities:SalesTax:CA -89.75 USD

2025-06-05 * "Payment #123"
Assets:Bank:Checking 1,088.75 USD
Assets:AR -1,088.75 USD

2025-07-20 * "Remit CA sales tax Q2"
Liabilities:SalesTax:CA 89.75 USD
Assets:Bank:Checking -89.75 USD

FX et crypto (léger)

Beancount gère plusieurs devises nativement. Utilisez les directives price pour enregistrer les taux de change et la syntaxe de coût {} pour les transactions spécifiques.

2025-03-01 price EUR 1.0832 USD

2025-03-02 * "AWS EU charge"
Expenses:Cloud 90.00 EUR
Liabilities:CreditCard:Corporate -90.00 EUR

2025-03-05 * "Buy BTC for testing"
Assets:Crypto:BTC 0.0200 BTC {3400.00 USD}
Assets:Bank:Checking -3,400.00 USD

7) Utilisation de Fava (rapports en une seule commande)

Fava est la brillante interface web qui donne vie aux données Beancount. C'est la récompense de votre saisie de données minutieuse.

  • Installation : $ pip install fava
  • Exécution : $ fava ledger/main.beancount
  • Vues utiles : État des résultats, Bilan, Journal (pour filtrer par compte/tag) et Requête (pour les requêtes personnalisées de type SQL).

Filtres Fava rapides :

  • account:DeferredRevenue : Afficher toute l'activité dans votre compte de produits constatés d'avance.
  • tag:#invoice-001 : Marquer les transactions liées à une facture spécifique et les filtrer.
  • from:2025-01-01 to:2025-12-31 : Se concentrer sur une période financière spécifique.

8) Liste de contrôle de la clôture mensuelle (15 à 45 minutes)

À la fin de chaque mois, parcourez cette liste de contrôle pour vous assurer que vos livres sont exacts et à jour. Cette discipline facilite l'établissement des impôts et la diligence raisonnable des investisseurs.

  • Banque/cartes de crédit : Importer ou saisir manuellement toutes les transactions. Rapprocher les soldes avec vos relevés.
  • AR/AP : Comptabiliser toutes les factures émises et les factures reçues ; marquer les éléments payés comme réglés.
  • Revenus : Comptabiliser les écritures mensuelles de comptabilisation des revenus pour tous les contrats payés d'avance.
  • Prépayés : Amortir 1/12ème (ou la fraction appropriée) de toutes les charges payées d'avance.
  • Paie : Comptabiliser l'écriture de journal à partir du rapport de votre fournisseur de services de paie.
  • Taxe de vente : Comptabiliser votre passif de taxe de vente pour le mois.
  • Instruments d'amorçage : Accumuler les intérêts sur les obligations convertibles.
  • Vérifications de cohérence :
    • Les revenus de votre état des résultats correspondent-ils à peu près à votre MRR/ARR prévu ?
    • Votre taux d'utilisation et votre autonomie financière correspondent-ils à votre plan financier ?
    • Est-ce que $ bean-check s'exécute sans erreur ? Les rapports de Fava semblent-ils corrects ?
  • Commit to Git avec une note concise et cohérente (par exemple, close: 2025-04).

9) Métadonnées et documents (faciliter les audits)

Votre grand livre doit être auto-documenté. Utilisez des métadonnées et des liens vers les documents sources pour créer une piste d'audit à toute épreuve. Votre futur vous (et votre comptable) vous remercieront.

  • Ajoutez des métadonnées telles que payee:, narration:, invoice:, customer: ou link: aux transactions pour plus de clarté.
  • Joignez les PDF sources (factures, reçus, relevés bancaires) à votre dossier ledger/documents/ et liez-les à l'aide de la balise de métadonnées document:.
  • Utilisez des balises (#payroll, #saas, #vendor-aws, #invoice-001) pour faciliter le filtrage et l'analyse.

Exemple :

2025-03-10 * "Annual subscription — AcmeCo" #saas #invoice-001
payee: "AcmeCo"
invoice: "INV-001"
document: "documents/invoices/INV-001.pdf"
Assets:AR 1,200.00 USD
Liabilities:DeferredRevenue -1,200.00 USD

10) Importer plus tard (quand vous aurez le temps)

Commencez par saisir les transactions manuellement pendant le premier mois ou deux. C'est la meilleure façon d'apprendre le système et vos propres habitudes de dépenses. Une fois que vous êtes à l'aise, vous pouvez écrire des importateurs Python simples pour automatiser le processus et réduire la corvée.

Un ordre de bataille typique d'un importateur :

  1. CSV bancaire → Assets:Bank:Checking
  2. CSV de carte de crédit → Liabilities:CreditCard:Corporate
  3. Rapports de versement Stripe/PayPal → Mappage des revenus et de l'encaisse

Conservez vos importateurs dans /ledger/importers et examinez leurs transactions générées comme vous le feriez pour tout autre changement de code.


11) Politiques (placer dans includes/policies.beancount)

Ce fichier est l'endroit où vous documentez vos décisions comptables pour assurer la cohérence. C'est un simple fichier texte, mais il est essentiel pour maintenir la discipline.

  • Base de la comptabilité d'exercice ; comptabiliser les revenus SaaS au prorata.
  • La devise fonctionnelle est l'USD ; enregistrer les opérations de change au taux quotidien ou au taux de la transaction.
  • Seuil de capitalisation (par exemple, les éléments de plus de $2 500 deviennent un élément Assets:Equipment ; sinon, ils sont passés en charges immédiatement).
  • Voyages/repas : Le but commercial doit être documenté dans le champ narration.
  • Enregistrement des capitaux propres : Indiquez explicitement si vous utilisez la méthode devise uniquement ou action-marchandise.
  • SAFE/notes : Documentez votre classification choisie (Passif ou Capitaux propres).

Exemple de policies.beancount :

; Policy: Accrual basis, revenue deferred and recognized monthly.
; Policy: USD functional currency. FX gains/losses are derived from cost/price data.
; Policy: Capitalize tangible assets over $2,500 with a 3-year straight-line depreciation.
; Policy: SAFEs are recorded as Liabilities until conversion in a priced round.

12) Dépannage rapide

  • Les revenus semblent négatifs dans le journal : C'est correct ! Le revenu est un crédit. Les rapports de Fava l'afficheront comme un nombre positif.
  • Les soldes ne sont pas à zéro : Vous avez probablement une transaction incomplète. Les écritures d'une transaction doivent totaliser zéro. Utilisez la vue Journal de Fava pour trouver le coupable. À titre de mesure temporaire, vous pouvez ajouter une branche d'équilibrage à un compte Equity:Suspense pour rendre le fichier valide, puis enquêter et corriger la cause profonde.
  • Incompatibilités FX : Assurez-vous d'avoir des directives price pour les dates pertinentes ou que vous spécifiez la base de coût dans votre devise opérationnelle, comme 90.00 EUR {97.49 USD}.

13) Ce qu'il faut suivre en dehors du grand livre (conserver les liens)

Beancount est destiné à vos transactions financières, mais certaines choses sont mieux gérées dans des systèmes dédiés. La clé est de les relier à partir de votre grand livre.

  • Table de capitalisation : Utilisez Carta, Pulley ou une feuille de calcul. Liez les documents de clôture signés à partir de vos transactions de financement dans Beancount.
  • Consentements du conseil d'administration, plan d'actions, rapports 409A : Stockez-les dans un endroit sûr et ajoutez des métadonnées link: aux transactions d'actions pertinentes.
  • Déclarations de revenus : Stockez les PDF finaux et liez-les à partir d'une transaction de clôture de fin d'année.

Fichier de démarrage prêt à copier (tout-en-un)

Si vous préférez commencer avec un seul fichier avant de passer à la structure d'inclusion, vous pouvez simplement coller le contenu des fichiers des sections ci-dessus dans un grand fichier main.beancount. Vous pouvez toujours le remanier plus tard à mesure que votre grand livre grandit.

Ce cadre fournit une base solide et évolutive pour les finances de votre startup. En conservant vos livres en texte brut sous contrôle de version, vous gagnez une transparence et un contrôle inégalés, ce qui permet à votre entreprise de faire preuve de discipline financière dès le premier jour.