Création et suivi des factures avec Beancount
Un modèle en texte brut, un flux de travail reproductible et une seule requête pour savoir « Qui me doit encore de l'argent ? »
La facturation peut sembler être une corvée, coincée entre le travail que vous avez terminé et le paiement que vous attendez. Mais un bon processus de facturation est l'épine dorsale d'un flux de trésorerie sain. Il a une double fonction : il indique clairement à vos clients ce qu'ils doivent et quand, et il fournit à votre système comptable les faits incontestables dont il a besoin.
Bien que les applications SaaS dédiées puissent envoyer des PDF automatisés et élégants, elles sont souvent assorties de frais mensuels et enferment vos données dans un silo propriétaire. Une approche légère en texte brut utilisant Beancount offre une alternative puissante. Vous pouvez transformer chaque facture en un ensemble clair d'écritures comptables, vous offrant tous les avantages du contrôle de version, de métadonnées puissantes et d'interrogation instantanée, sans abonnement requis.
La facture minimale viable (champs à ne jamais omettre)
Avant de toucher à votre grand livre, vous avez besoin d'une facture professionnelle. Le format peut être simple, mais le contenu doit être précis. Ces champs, empruntés aux pratiques éprouvées des petites entreprises, sont non négociables.
- Coordonnées du vendeur : Nom et adresse physique de votre entreprise.
- Coordonnées du client : Nom et (idéalement) adresse de votre client.
- Numéro de facture : Un identifiant unique et séquentiel qui n'est jamais réutilisé.
FACT-045
suitFACT-044
. - Dates d'émission et d'échéance : Indiquez clairement la date d'émission de la facture et la date à laquelle le paiement est attendu.
- Lignes d'articles : Une description claire des services ou des produits, ainsi que la quantité, le taux et le total de la ligne.
- Sous-total, taxes et total : Montrez le calcul pour que le client puisse le suivre facilement.
- Notes facultatives : Un endroit pour un remerciement, des instructions de virement ou un numéro de bon de commande fourni par le client.
Pour vous aider à démarrer, nous avons créé un ensemble de modèles prêts à être modifiés qui incluent tous ces champs. Les versions tableur pré-calculent même les totaux pour vous.
Téléchargez nos modèles ici : beancount.io/invoice‑templates (Disponibles aux formats Google Docs, Word, Sheets, Excel et PDF)
Enregistrer la facture dans votre grand livre
Une fois que vous avez envoyé le PDF de la facture à votre client, vous devez l'enregistrer dans Beancount. Il s'agit d'une étape cruciale qui reconnaît les revenus lorsqu'ils sont gagnés, et pas seulement lorsqu'ils sont payés. Le processus implique deux transactions distinctes.
1. Lorsque vous émettez la facture :
Vous créez une transaction qui déplace le montant total de votre compte Revenus
vers Actifs:ComptesClients
. Cela crée une reconnaissance de dette numérique dans vos livres.
; 2025‑07‑21 Facture #045 Sprint de conception Web pour Acme Corp.
2025-07-21 * "Acme Corp" "FACT-045 Sprint de conception Web"
Actifs:ComptesClients 3500.00 USD ; échéance:2025-08-04
Revenus:Conception:Web
invoice_id: "FACT-045"
contact_email: "ap@acme.example"
link: "docs/invoices/2025-07-21_Acme_FACT-045.pdf"
Ici, vous débitez ComptesClients
et créditez votre compte Revenus
. Remarquez les métadonnées riches : la date d'échéance, un invoice_id
unique et même un link:
direct vers le PDF que vous avez envoyé.
2. Lorsque le client paie :
Lorsque l'argent arrive sur votre compte bancaire, vous enregistrez une deuxième transaction pour « clôturer » la reconnaissance de dette. Cela déplace le solde de ComptesClients
vers votre compte courant.
2025-08-01 * "Acme Corp" "Paiement FACT-045"
Actifs:Banque:CompteCourant 3500.00 USD
Actifs:ComptesClients
invoice_id: "FACT-045"
Le solde de FACT-045
dans Actifs:ComptesClients
est maintenant nul, et vos livres sont parfaitement équilibrés.
Joindre le PDF : La clé de métadonnées
link:
est particulièrement puissante lorsqu'elle est utilisée avec Fava, l'interface web de Beancount. Fava affichera un lien cliquable directement dans la vue de la transaction, de sorte que le document source n'est jamais à plus d'un clic. Ce flux de travail a été envisagé dès 2016 dans une demande de fonctionnalité (GitHub).
Une requête pour lister toutes les factures ouvertes
Alors, qui vous doit encore de l'argent ? Avec ce système, vous n'avez pas besoin de chercher dans vos e-mails ou vos feuilles de calcul. Vous avez juste besoin d'une simple requête.
Enregistrez ce qui suit dans un fichier nommé factures-ouvertes.sql
:
SELECT
meta('invoice_id') AS id,
payee,
narration,
date,
number(balance) AS outstanding
WHERE
account = "Actifs:ComptesClients"
AND balance != 0
ORDER BY
date;
Maintenant, exécutez-la depuis votre ligne de commande :
bean-query books.beancount factures-ouvertes.sql
En quelques secondes, vous obtiendrez un rapport de vieillissement clair et à jour de toutes les factures impayées, indiquant l'ID de la facture, le client, la date d'émission et le montant dû. Aucun logiciel supplémentaire requis.
Automatiser les tâches fastidieuses
La beauté du texte brut est sa scriptabilité. Vous pouvez automatiser les parties fastidieuses de ce flux de travail.
- Modèle + Pandoc = PDF : Maintenez votre modèle de facture en Markdown. Un petit script Python peut renseigner les variables (nom du client, lignes d'articles, numéro de facture), et l'outil en ligne de commande Pandoc peut le convertir instantanément en un PDF professionnel.
- Hook Git Pre-commit : Si vous stockez votre grand livre dans Git, un simple hook pre-commit peut effectuer des vérifications avant d'enregistrer votre travail. Il peut vérifier que chaque nouvel
invoice_id
est unique, que les écritures de la transaction sont équilibrées à zéro et que le fichier référencé dans les métadonnéeslink:
existe réellement. - Tâche Cron : Configurez une tâche planifiée (une tâche cron) pour exécuter votre requête
factures-ouvertes.sql
chaque nuit et vous envoyer le résumé par e-mail. Vous commencerez chaque journée en sachant exactement qui a besoin d'un petit rappel amical.
Une mise en garde réaliste
Beancount est un outil comptable, pas un service de facturation. Il n'enverra pas automatiquement de rappels de paiement à vos clients ni ne traitera leurs paiements par carte de crédit. Le flux de travail est le suivant : vous créez et envoyez la facture en utilisant la méthode de votre choix (comme les modèles ci-dessus), puis vous enregistrez les écritures comptables dans votre grand livre.
Pour la plupart des freelances et des petites entreprises, cette étape manuelle est un faible prix à payer pour un système comptable à l'épreuve des balles, vérifiable et gratuit que vous possédez et contrôlez entièrement (beancount.io).
Prochaines étapes
Prêt à prendre le contrôle de votre facturation ? Voici comment démarrer.
- Téléchargez un modèle et utilisez-le pour créer votre prochaine vraie facture, en vous assurant d'utiliser un numéro de facture séquentiel.
- Stockez vos PDF envoyés dans un dossier dédié comme
docs/invoices/
et utilisez la clé de métadonnéeslink:
dans votre transaction Beancount pour les référencer. - Enregistrez la requête
factures-ouvertes.sql
et intégrez son exécution à votre revue financière hebdomadaire.
La comptabilité en texte brut ne signifie pas renoncer à la précision ou au contrôle, cela signifie simplement que la base de données est interrogeable avec grep
. Avec un modèle simple et les extraits ci-dessus, vous serez payé plus rapidement et vous garderez vos livres impeccables.