Les comptes fournisseurs (AP) représentent l'argent que votre entreprise doit à ses fournisseurs pour des biens ou services déjà reçus, mais qui n'ont pas encore été payés. Dans le domaine de la comptabilité, les comptes fournisseurs sont classés comme un passif courant dans votre bilan—un montant généralement dû au cours de l'année suivante, et souvent sous 30 à 60 jours.
Ce concept est essentiel à la comptabilité d'exercice, où vous enregistrez la dépense et le passif correspondant dès l'arrivée d'une facture, et non lorsque vous envoyez réellement les fonds. Ce guide vous montrera comment gérer l'ensemble du flux de travail des comptes fournisseurs de manière propre et efficace en utilisant l'outil de comptabilité en texte brut, Beancount.
Résumé rapide
Avant d'entrer dans les détails, couvrons l'essentiel :
- Comptes fournisseurs (AP) représentent vos dettes à court terme envers les fournisseurs. Vous les trouverez dans la section
Passifsde votre bilan. - Comptabilité d'exercice vs. de trésorerie : Les comptes fournisseurs sont un concept qui n'existe que si vous tenez vos livres selon la comptabilité d'exercice. Beancount prend pleinement en charge les flux de travail en comptabilité d'exercice, et son interface web, Fava, affichera correctement vos passifs.
- AP vs. AR : C'est simple : les comptes fournisseurs correspondent à ce que vous devez, tandis que les comptes clients (AR) correspondent à ce que d'autres vous doivent.
Où vit la AP dans Beancount (et Fava)
Pour commencer à suivre la AP, vous devez d'abord déclarer un compte pour celle-ci dans votre registre. Une convention standard est :
Liabilities:AccountsPayable
Vous pouvez éventuellement créer des sous-comptes pour les principaux fournisseurs (par exemple, Liabilities:AccountsPayable:ForestPaintSupply).
Dans Fava, ce compte apparaîtra sur votre bilan sous Liabilities. Vous pouvez cliquer dessus pour explorer en profondeur et voir les écritures qui composent le solde. Vous pouvez même voir cela en action dans le registre d'exemple public de Fava, qui inclut un compte Liabilities:AccountsPayable.
Convention de signe : Beancount stocke les soldes de passif comme des crédits (nombres négatifs). Un solde de -500.00 USD sur Liabilities:AccountsPayable signifie que vous devez $500. Le rapport d'éléments ouverts ci-dessous inverse le signe avec -SUM(number) afin que chaque facture impayée affiche un montant impayé positif. Une facture entièrement réglée totalise zéro et est exclue par HAVING.
Blocs de construction Beancount que vous utiliserez
Un flux de travail AP robuste dans Beancount repose sur quelques fonctionnalités de base :
- Comptes : Vous utiliserez principalement votre compte
Liabilities:AccountsPayable, un compte de trésorerie commeAssets:Bank:Checking, et vos différents comptes de dépenses (par exemple,Expenses:Supplies). - Métadonnées : Vous pouvez attacher des données clé-valeur à toute transaction. Pour la comptabilité fournisseurs (AP), vous utiliserez des métadonnées comme
invoice:,due:,terms:etdocument:. Définissezoption "documents"sur un dossier pour que Beancount puisse y découvrir des fichiers ; dans Fava, déposer un fichier sur une ligne de journal insère une entrée de métadonnéesdocument:, et activerplugin "fava.plugins.link_documents"relie ces entrées aux directives Document découvertes. - Balises et liens : Utilisez
#balises(comme#ap) pour un filtrage facile et^liens(comme^INV-10455) pour lier programmatiquement une facture et son paiement ultérieur. Cela crée une piste claire et vérifiable dans le journal — mais les liens seuls ne suffisent pas pour la requête de factures ouvertes ci-dessous. - Requêtes (BQL) : Le langage de requête de type SQL de Beancount (BQL) vous permet d'exécuter des rapports puissants, comme la liste de tous les comptes fournisseurs ouverts triés par date d'échéance, directement depuis la ligne de commande avec
bean-queryou sur la page "Requête" de Fava.
Identité de la facture (requise pour les requêtes de factures ouvertes) : Chaque facture et chaque paiement de règlement — complet, partiel ou avec escompte anticipé — doivent porter les mêmes métadonnées de transaction invoice: et due:, ainsi que le même ^lien. La requête regroupe par payee, any_meta('invoice') et any_meta('due'). Si un paiement omet ces clés, son écriture AP atterrit dans un groupe séparé (payee, null, null) et une facture réglée semble toujours ouverte. Gardez (payee, invoice) unique parmi les fournisseurs. Les champs facultatifs spécifiques aux factures comme terms: et document: n'ont pas besoin d'être répétés sur les paiements.
Workflow de base pour les comptes fournisseurs dans Beancount
La gestion des comptes fournisseurs dans votre registre implique deux ou trois étapes clés : l'enregistrement de la facture, son paiement, et parfois la gestion des paiements partiels ou des remises.
1) Enregistrer la facture fournisseur (cela crée le passif)
Tout d'abord, vous comptabilisez la dépense et créez le passif lorsque la facture arrive.
; Optionally set your documents folder in your main Beancount file:
option "documents" "documents"
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
invoice: "INV-10455"
due: "2025-09-04"
terms: "2/10, n/30"
document: "invoices/2025-08-05-forest-paint-INV-10455.pdf"
Expenses:Supplies:Paint 500.00 USD
Liabilities:AccountsPayable -500.00 USDCette écriture unique accomplit deux choses essentielles :
- Elle reconnaît immédiatement la dépense de 500 $ dans la bonne période (août) — une seule fois. Ne repassez pas la dépense lors du paiement.
- Elle crédite les comptes fournisseurs de 500 $ (
-500,00 USD), enregistrant que vous devez ce montant à Forest Paint Supply.
Le lien ^INV-10455 ainsi que les métadonnées invoice: / due: constituent l'identité de la facture. Chaque paiement ultérieur de cette facture doit réutiliser ces trois éléments.
2) Payer la facture (cela solde le passif)
Lorsque vous payez la facture, vous créez une transaction qui déplace l'argent de votre compte bancaire pour solder le passif. Copiez invoice: et due: de la facture sur le paiement afin que les deux opérations partagent un même groupe de requête.
a) Paiement standard (sans remise) :
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
invoice: "INV-10455"
due: "2025-09-04"
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USDCette écriture réduit votre solde de comptes fournisseurs de 500 $ et votre solde de compte chèques du même montant. Le passif pour cette facture est maintenant soldé (la somme des comptes fournisseurs du groupe est de zéro). La dépense reste sur la facture d'août — le paiement ne touche pas à Expenses:.
b) Remise pour paiement anticipé (par exemple, « 2/10, n/30 ») — choisissez exactement une méthode :
Si les conditions sont « 2/10, n/30 », vous pouvez bénéficier d'une remise de 2 % si vous payez dans les 10 jours. Pour notre facture de 500 $, cela représente une remise de 10 $. Le bloc ci-dessous présente deux alternatives mutuellement exclusives : l'option 1 est active ; l'option 2 est entièrement commentée afin qu'un collage ne puisse pas comptabiliser les deux. Pour utiliser l'option 2 à la place, commentez l'option 1 et décommentez l'option 2. Ne laissez jamais les deux actives — cela solderait les comptes fournisseurs deux fois et créerait un second avantage de 10 $. Le choix entre un compte de produits ou de charges est une décision de politique comptable pour vos livres ; Beancount n'en exige pas un plutôt qu'un autre.
; Pick EXACTLY ONE of the two transactions below for a given invoice.
; Do not paste both into the same ledger — that clears AP twice.
; Option 1: Record the discount as other income
2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
invoice: "INV-10455"
due: "2025-09-04"
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -490.00 USD
Income:Discounts:Payables -10.00 USD
; Option 2: Reduce the original expense directly
; 2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
; invoice: "INV-10455"
; due: "2025-09-04"
; Liabilities:AccountsPayable 500.00 USD
; Assets:Bank:Checking -490.00 USD
; Expenses:Supplies:Paint -10.00 USDDans l'une ou l'autre alternative seule, vous soldez le passif total de 500 $, réduisez votre solde bancaire des 490 $ que vous avez effectivement payés, et comptabilisez l'avantage de 10 $. Remplacez la transaction de paiement intégral standard par l'alternative choisie — n'empilez pas un paiement avec remise par-dessus le paiement en espèces de 500 $ et ne combinez pas ce bloc avec la section 2a pour la même facture.
3) Gestion des paiements partiels
Réutilisez la même identité invoice: / due: / ^lien sur chaque versement afin que chaque paiement réduise le même groupe de factures ouvertes.
; Invoice for $1,200
2025-08-10 * "Acme Parts" "INV-9001" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Expenses:Parts 1200.00 USD
Liabilities:AccountsPayable -1200.00 USD
; First payment of $400
2025-08-20 * "Acme Parts" "Payment INV-9001 (1/3)" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Liabilities:AccountsPayable 400.00 USD
Assets:Bank:Checking -400.00 USD
; Final payment of $800
2025-09-05 * "Acme Parts" "Payment INV-9001 (final)" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Liabilities:AccountsPayable 800.00 USD
Assets:Bank:Checking -800.00 USDAprès le premier paiement, la somme des comptes fournisseurs du groupe de factures est de -800,00 USD (vous devez encore 800 $). Après le paiement final, elle est de zéro. Filtrer le journal par ^INV-9001 affiche toujours l'historique complet.
Requêtes utiles (BQL)
Vous pouvez exécuter ces requêtes dans l’onglet « Query » de Fava ou en ligne de commande avec bean-query (Référence BQL). Vérifié ci-dessous avec Beancount 3.2.3 et beanquery 0.2.0.
Astuce : La fonction
any_meta()recherche d’abord une clé de métadonnée sur l’écriture, puis revient à la transaction — ainsi les valeursinvoice:/due:au niveau de la transaction apparaissent dans le jeu de résultats.
Dettes fournisseurs ouvertes par fournisseur (vue de bilan) :
Cette requête fait la somme de l’inventaire du passif par fournisseur. Un total créditeur (négatif) correspond à ce que vous devez encore à ce fournisseur.
SELECT payee, COST(SUM(position)) AS amount
WHERE account ~ "^Liabilities:AccountsPayable"
GROUP BY payee
ORDER BY payee;Factures ouvertes à une date donnée (rapport des postes ouverts) :
Un rapport des postes ouverts répond à la question « qu’est-ce qui reste impayé ? ». Il doit (1) s’arrêter à une date explicite afin que les paiements ultérieurs ne puissent pas effacer silencieusement un instantané antérieur, (2) regrouper par identité commune de facture (payee + invoice: + due:), (3) exclure les groupes soldés (nuls), et (4) afficher un montant en attente positif — et non un crédit AP signé brut.
Date de reporting utilisée partout ci-dessous : 2025-09-04.
Grand livre de démarrage AP téléchargeable
Téléchargez accounts-payable-starter.bean — un grand livre autonome généré à partir du bloc complet ci-dessous (ouvertures de comptes, trésorerie d’ouverture fictive, factures soldées / partielles / impayées, à la date du 2025-09-04). Tous les noms et montants sont des exemples fictifs. Aucun PDF de facture, dossier de documents ou autre fichier n’est requis pour le valider ou l’interroger.
Premier lancement depuis un répertoire temporaire propre (versions épinglées Beancount 3.2.3 / beanquery 0.2.0) :
# Save the download as accounts-payable-starter.bean in this directory, then:
uvx --from beancount==3.2.3 bean-check accounts-payable-starter.bean
uvx --from beanquery==0.2.0 --with beancount==3.2.3 bean-query accounts-payable-starter.bean \
"SELECT payee, any_meta('invoice') AS invoice, any_meta('due') AS due, -SUM(number) AS outstanding WHERE account ~ '^Liabilities:AccountsPayable' AND date <= 2025-09-04 GROUP BY payee, invoice, due HAVING SUM(number) < 0 ORDER BY due, payee"bean-check se termine avec le code 0 et aucune sortie. La requête renvoie les cinq lignes ouvertes dans le tableau attendu ci-dessous (Forest absent ; Acme en attente 800.00 ; somme des montants en attente positifs = 1500.00). Régénérez le téléchargement validé avec yarn generate:ap-starter après avoir modifié le bloc ; yarn generate:ap-starter --check échoue si l’artefact est obsolète.
Collez ce scénario complet (ouvertures + trésorerie d’ouverture + les trois formes de factures, ainsi que les lignes échéant aujourd’hui / en retard / cas limites pour le vieillissement). Les alternatives d’escompte pour anticipation d’INV-10455 restent entièrement commentées — activez exactement une seule uniquement si vous remplacez le paiement Forest standard ; ne laissez jamais les deux options d’escompte actives en même temps que ce paiement.
; accounts-payable-starter — complete runnable AP workflow
option "operating_currency" "USD"
2025-01-01 open Assets:Bank:Checking USD
2025-01-01 open Equity:Opening-Balances USD
2025-01-01 open Liabilities:AccountsPayable USD
2025-01-01 open Expenses:Supplies:Paint USD
2025-01-01 open Expenses:Parts USD
2025-01-01 open Expenses:Office USD
2025-01-01 open Income:Discounts:Payables USD
; Fictional opening cash — enough to cover every payment in this ledger
2025-01-01 * "Opening balance"
Assets:Bank:Checking 5000.00 USD
Equity:Opening-Balances -5000.00 USD
; Settled before as-of — must disappear from the open report
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
invoice: "INV-10455"
due: "2025-09-04"
Expenses:Supplies:Paint 500.00 USD
Liabilities:AccountsPayable -500.00 USD
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
invoice: "INV-10455"
due: "2025-09-04"
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USD
; Early-payment discount alternatives for INV-10455 — mutually exclusive with
; the standard payment above AND with each other. To take 2/10 instead: delete
; (or comment out) the 2025-09-01 payment, then uncomment EXACTLY ONE option.
; Never leave both options active — that clears AP twice.
;
; Option 1: Record the discount as other income
; 2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
; invoice: "INV-10455"
; due: "2025-09-04"
; Liabilities:AccountsPayable 500.00 USD
; Assets:Bank:Checking -490.00 USD
; Income:Discounts:Payables -10.00 USD
;
; Option 2: Reduce the original expense directly
; 2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
; invoice: "INV-10455"
; due: "2025-09-04"
; Liabilities:AccountsPayable 500.00 USD
; Assets:Bank:Checking -490.00 USD
; Expenses:Supplies:Paint -10.00 USD
; Partial before as-of; final $800 payment is AFTER 2025-09-04
2025-08-10 * "Acme Parts" "INV-9001" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Expenses:Parts 1200.00 USD
Liabilities:AccountsPayable -1200.00 USD
2025-08-20 * "Acme Parts" "Payment INV-9001 (1/3)" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Liabilities:AccountsPayable 400.00 USD
Assets:Bank:Checking -400.00 USD
2025-09-05 * "Acme Parts" "Payment INV-9001 (final)" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Liabilities:AccountsPayable 800.00 USD
Assets:Bank:Checking -800.00 USD
; Unpaid — not yet due as of 2025-09-04
2025-08-15 * "Bright Office Co" "INV-220" ^INV-220
invoice: "INV-220"
due: "2025-09-14"
Expenses:Office 300.00 USD
Liabilities:AccountsPayable -300.00 USD
; Unpaid — due today (as-of == due)
2025-08-20 * "Helix Industries" "INV-440" ^INV-440
invoice: "INV-440"
due: "2025-09-04"
Expenses:Parts 200.00 USD
Liabilities:AccountsPayable -200.00 USD
; Unpaid — 30 days overdue as of 2025-09-04
2025-07-06 * "Metro Hardware" "INV-77" ^INV-77
invoice: "INV-77"
due: "2025-08-05"
Expenses:Parts 150.00 USD
Liabilities:AccountsPayable -150.00 USD
; Overpayment — credit balance (not an amount due; see edge cases)
2025-08-01 * "Credit Vendor" "INV-C1" ^INV-C1
invoice: "INV-C1"
due: "2025-08-20"
Expenses:Parts 100.00 USD
Liabilities:AccountsPayable -100.00 USD
2025-08-18 * "Credit Vendor" "Overpay INV-C1" ^INV-C1
invoice: "INV-C1"
due: "2025-08-20"
Liabilities:AccountsPayable 150.00 USD
Assets:Bank:Checking -150.00 USD
; Missing due metadata — still open; age into a separate bucket, do not drop
2025-08-12 * "No Due Co" "INV-ND" ^INV-ND
invoice: "INV-ND"
Expenses:Office 50.00 USD
Liabilities:AccountsPayable -50.00 USDRequête des postes ouverts (beanquery 0.2.0 prend en charge HAVING SUM(number) < 0 ; il ne prend pas en charge la comparaison d’un inventory à 0 avec COST(SUM(position)) != 0) :
SELECT payee,
any_meta('invoice') AS invoice,
any_meta('due') AS due,
-SUM(number) AS outstanding
WHERE account ~ "^Liabilities:AccountsPayable"
AND date <= 2025-09-04
GROUP BY payee, invoice, due
HAVING SUM(number) < 0
ORDER BY due, payee;Lignes attendues au 2025-09-04 (dérivées indépendamment des transactions : facture − paiements datés ≤ à la date de clôture ; Forest se solde à 0 et est absent) :
| payee | invoice | due | outstanding |
|---|---|---|---|
| No Due Co | INV-ND | (vide) | 50.00 |
| Metro Hardware | INV-77 | 2025-08-05 | 150.00 |
| Helix Industries | INV-440 | 2025-09-04 | 200.00 |
| Acme Parts | INV-9001 | 2025-09-09 | 800.00 |
| Bright Office Co | INV-220 | 2025-09-14 | 300.00 |
Somme des montants en attente positifs = 1 500,00. La facture de 500 $ de Forest a disparu. Acme affiche toujours 800 $ (1 200 $ − 400 $) ; le paiement de 800 $ du 2025-09-05 est postérieur à la date de clôture, il ne peut donc pas clore cet instantané.
Rapprochez-vous du passif AP à la même date de clôture :
SELECT COST(SUM(position)) AS ap_balance
WHERE account ~ "^Liabilities:AccountsPayable"
AND date <= 2025-09-04;Attendu : ap_balance = (-1450.00 USD). Indépendamment : montant en attente ouvert de 1 500 $ moins le crédit fournisseur de 50 $ (ci-dessous) = 1 450 $ dus → inventaire du passif -1450.00 USD.
Déplacez la date de clôture d’un jour plus tard (date <= 2025-09-05) et relancez la requête des postes ouverts : la ligne d’Acme disparaît (paiement final inclus), et ap_balance devient (-650.00 USD). Un paiement postérieur à la date de reporting ne réécrit jamais le rapport antérieur.
Crédits fournisseurs / trop-payés : HAVING SUM(number) < 0 ne conserve que les montants que vous devez encore. Un trop-payé fait passer la somme AP du groupe en positif. Listez-les séparément — ne traitez pas un solde AP positif comme un « montant dû » :
SELECT payee,
any_meta('invoice') AS invoice,
any_meta('due') AS due,
SUM(number) AS credit
WHERE account ~ "^Liabilities:AccountsPayable"
AND date <= 2025-09-04
GROUP BY payee, invoice, due
HAVING SUM(number) > 0
ORDER BY payee;Attendu : une ligne — Credit Vendor / INV-C1 / 2025-08-20 / credit = 50.00 (vous avez payé 50 $ en trop).
due: manquant : INV-ND apparaît toujours dans le rapport ouvert avec un due vide. Vieillissez-le dans un compartiment dédié missing-due (ci-dessous) ; ne l’omettez jamais silencieusement.
Lister les factures avec PDF joints :
SELECT date, payee, any_meta('invoice') AS invoice, any_meta('document') AS file
WHERE account ~ "^Liabilities:AccountsPayable"
ORDER BY date DESC;Où voir les comptes fournisseurs (AP) dans Fava
- Bilan : Naviguez vers
Bilan→Passifs→Comptes fournisseurspour voir le solde total et explorer les détails des transactions. - Journal : Filtrez le journal par
account:Liabilities:AccountsPayableou par un lien spécifique comme^INV-xxxxpour voir le cycle de vie complet d'une facture. - Documents : Avec l'option
option "documents"définie, Beancount découvre les fichiers sous cet arbre. Les vues Documents de Fava et le pluginlink_documents(voir ci-dessus) connectent ces fichiers aux transactions qui portent les métadonnéesdocument:.
Vieillissement des comptes fournisseurs, rotation et gestion de la trésorerie
Tableau de vieillissement (export reproductible + catégories) : beanquery 0.2.0 peut produire les lignes d'éléments ouverts ci-dessus, mais il ne fournit pas d'expression intégrée pour les catégories de vieillissement basées sur la métadonnée due. Exportez le rapport des éléments ouverts, puis classez de manière déterministe en fonction de la même date de référence.
bean-query -f csv -o open-ap.csv accounts-payable-starter.bean \
"SELECT payee, any_meta('invoice') AS invoice, any_meta('due') AS due, -SUM(number) AS outstanding WHERE account ~ '^Liabilities:AccountsPayable' AND date <= 2025-09-04 GROUP BY payee, invoice, due HAVING SUM(number) < 0 ORDER BY due, payee"Colonnes CSV : payee (bénéficiaire), invoice (facture), due (échéance), outstanding (montant impayé).
Règle de catégorisation pour la date de référence D = 2025-09-04 et l'échéance due de chaque ligne (au format ISO AAAA-MM-JJ) :
| Condition | Catégorie |
|---|---|
due vide | échéance-manquante |
due > D | non-échue |
due == D | échéance-aujourd'hui |
1 ≤ (D − due) ≤ 30 | en-retard-1-30 |
31 ≤ (D − due) ≤ 60 | en-retard-31-60 |
(D − due) ≥ 61 | en-retard-61+ |
Code Python compact (stdlib uniquement) qui implémente ce tableau :
from datetime import date
AS_OF = date(2025, 9, 4)
# Apply bucket() to each CSV row's due column (ISO YYYY-MM-DD or empty).
def bucket(due: str | None) -> str:
if not due:
return "missing-due"
days = (AS_OF - date.fromisoformat(due)).days
if days < 0:
return "not-yet-due"
if days == 0:
return "due-today"
if days <= 30:
return "1-30-overdue"
if days <= 60:
return "31-60-overdue"
return "61+-overdue"Vieillissement attendu pour les lignes ouvertes au 2025-09-04 :
| facture | échéance | jours de retard | catégorie | montant impayé |
|---|---|---|---|---|
| INV-ND | (vide) | — | échéance-manquante | 50,00 |
| INV-77 | 2025-08-05 | 30 | en-retard-1-30 | 150,00 |
| INV-440 | 2025-09-04 | 0 | échéance-aujourd'hui | 200,00 |
| INV-9001 | 2025-09-09 | −5 | non-échue | 800,00 |
| INV-220 | 2025-09-14 | −10 | non-échue | 300,00 |
Les échéances du jour ne sont pas regroupées dans la catégorie « courant » : échéance == date-référence constitue sa propre catégorie. La catégorie « non-échue » exige échéance > date-référence.
- Taux de rotation des comptes fournisseurs :
Total des achats fournisseurs ÷ Moyenne des comptes fournisseurs. Une mesure connexe, le Délai moyen de paiement des fournisseurs (DPO), est approximativement365 ÷ Taux de rotation. - Si vous ne pouvez pas payer à temps : Les comptes fournisseurs sont destinés à la dette à court terme. Si un fournisseur accepte un remboursement formel à plus long terme, reclassez hors des comptes fournisseurs vers un billet à payer — conservez le même identifiant de facture lors de la conversion afin que le groupe de comptes fournisseurs soit soldé.
2025-10-01 * "Helix Industries" "Convert overdue AP to 12-month note" ^INV-1110
invoice: "INV-1110"
due: "2025-09-15"
Liabilities:AccountsPayable 2000.00 USD
Liabilities:NotesPayable -2000.00 USDBonnes pratiques pour la comptabilité fournisseurs dans un grand livre en texte brut
- Passez au sans papier : Stockez les PDF des factures sous votre arborescence de documents et associez-les avec la clé de métadonnées
document:(et le téléversement Fava /link_documentslorsque vous utilisez Fava). - Réutilisez l’identité de la facture sur les paiements : Placez les mêmes
invoice:,due:et^linksur la facture et sur chaque paiement qui la règle. - Faites des rapports à une date donnée : Coupez les requêtes sur les postes ouverts et l’ancienneté avec
date <= AAAA-MM-JJafin qu’un paiement ultérieur ne puisse pas réécrire un instantané antérieur ; calculez l’ancienneté avec le mêmeD. - Gardez les métadonnées propres : Utiliser systématiquement
invoice:,due:etterms:améliore la recherche, les requêtes et les revues financières. - Comptabilité d’engagement jusqu’au bout : Si vous voulez des rapports fournisseurs utiles, engagez-vous à tenir vos livres en comptabilité d’engagement. Beancount et Fava gèrent les soldes d’engagement au bilan sans plugins spéciaux.
Copier-Coller de Démarrage : Facture Fournisseur + Paiement
Pour le flux de travail complet à éléments ouverts (réglé + partiel + impayé, date d'effet, vieillissement), préférez le starter AP téléchargeable ci-dessus. La paire minimale facture+paiement ci-dessous montre toujours l'identité sur les deux lignes — ouvrez d'abord les comptes (ou incluez ces ouvertures dans votre grand livre principal). Les métadonnées optionnelles document: sont omises ici afin qu'aucun élément externe au grand livre ne soit requis.
option "operating_currency" "USD"
2025-01-01 open Assets:Bank:Checking USD
2025-01-01 open Liabilities:AccountsPayable USD
2025-01-01 open Expenses:Supplies:Paint USD
; ---- Bill ----
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
invoice: "INV-10455"
due: "2025-09-04"
Expenses:Supplies:Paint 500.00 USD
Liabilities:AccountsPayable -500.00 USD
; ---- Payment (no discount) ----
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
invoice: "INV-10455"
due: "2025-09-04"
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USDAvec Beancount 3.2.3 et beanquery 0.2.0, le chargement de ce starter ne produit aucune erreur, le compte AP est soldé à zéro, et la requête facture+dû renvoie un seul groupe (Forest Paint Supply, INV-10455, 2025-09-04) dont le montant est vide (réglé) — et non une ligne facturée plus une ligne de paiement orpheline (…, null, null).
Ce guide a une vocation éducative et ne constitue pas un conseil fiscal, juridique ou financier.
Références et lectures complémentaires :
- Syntaxe du langage Beancount — comptes, métadonnées, tags, liens et documents (vérifié le 2026-09-11)
- Référence du langage de requête Beancount (BQL) (vérifié le 2026-09-11)
- Fonctionnalités de Fava — téléchargement de documents et
link_documents(vérifié le 2026-09-11) any_meta()pour interroger les métadonnées de transactions/écritures (Martin Blais, liste de diffusion Beancount ; vérifié le 2026-09-11)





