El cicle comptable, estil Beancount
Els estats financers no apareixen per màgia. Són el producte final d’un procés estructurat i repetible conegut com a cicle comptable. Tot i que els principis són universals, les eines que utilitzes poden canviar dramàticament l’experiència. Aquesta guia et porta a través del cicle comptable amb un enfocament en Beancount, l’eina potent de comptabilitat en text pla.
Veurem com l’enfocament text‑first de Beancount elimina passos tediosos, què hauràs d’automatitzar i quins informes et donen la imatge més clara de la teva salut financera. 🧑💻
TL;DR: El flux de treball amb Beancount
- Captura i diari: Registra cada transacció com una anotació neta de partida doble al teu fitxer de text
.beancount
. - Validació i conciliació: Utilitza les assercions
balance
per confirmar que el teu llibre coincideix amb els extractes bancaris i executabean-check
per detectar errors. - Revisió: Genera un balanç de prova no ajustat per a una comprovació ràpida.
- Ajust: Publica entrades per a acumulacions, diferiments, amortitzacions i altres elements de final de període.
- Revisió d’ajust: Comprova el balanç de prova ajustat per assegurar que tot és correcte.
- Publicació i tancament: Genera el teu compte de resultats, balanç i estat de flux de caixa. Tancar els llibres és opcional a Beancount, ja que els informes són conscients de la data.
Aquest flux es pot visualitzar així:
Pas 1: Captura i registra transaccions
Aquest és el pas fonamental. Cada esdeveniment financer —una venda, una compra, una comissió bancària— ha de ser registrat. A Beancount ho fas creant transaccions en un fitxer de text senzill, normalment anomenat main.beancount
o organitzat en diversos fitxers per any.
Cada transacció ha de seguir les regles de la comptabilitat de partida doble, és a dir, la suma de totes les anotacions ha de ser zero. Beancount ho imposa per a tu.
2025-08-10 * "Walmart" "Compra de subministraments d'oficina"
Expenses:Office:Supplies 45.67 USD
Assets:Bank:Checking -45.67 USD
- Consell professional: Utilitza etiquetes com
#project-phoenix
o#client-acme
per afegir dimensions a les teves dades. Això fa que les consultes i els informes siguin increïblement flexibles més endavant.
Higiene de conciliació ✅
La característica més potent per garantir precisió és l’asserció de balanç. Al final d’un període d’estat (per exemple, final de mes), declares quin hauria de ser el saldo d’un compte.
2025-08-31 balance Assets:Bank:Checking 12345.67 USD
Si la suma de totes les transaccions que afecten Assets:Bank:Checking
fins a aquesta data no coincideix amb 12345.67 USD
, Beancount generarà un error. Aquesta simple directiva converteix el teu llibre en un document auto‑auditat.
Per a aquells que estan retroalimentant dades històriques, la directiva pad
pot crear automàticament una transacció d’ajust per fer que els teus saldos d’obertura coincideixin amb la teva primera asserció.
Pas 2: "Publicar al llibre major" (¡Gratuït!)
En els sistemes comptables tradicionals, primer escrius anotacions en un "diari" i després una etapa separada de "publicació" copia aquests valors al "llibre major general".
Amb Beancount, el teu fitxer .beancount
és tant el diari com el llibre major. Quan escrius i guardes una transacció, ja l’has publicat. No hi ha cap pas separat. Aquesta directesa és un avantatge clau de la comptabilitat en text pla: el que veus és el que obtens.
Pas 3: Prepara un balanç de prova no ajustat
Abans de començar a fer ajustaments, necessites una comprovació ràpida de "tot suma?". Un balanç de prova és un informe senzill que llista cada compte i el seu saldo total. El total de tots els saldos de deure ha de ser igual al total de tots els saldos d’haver.
Pots generar‑lo amb una consulta simple:
bean-query main.beancount \
"SELECT account, sum(position) GROUP BY 1 ORDER BY 1"
O, per a un enfocament més visual, obre el teu llibre a Fava (la interfície web de Beancount) i navega cap a l’informe "Trial Balance". Busca qualsevol anomalia: un compte d’actiu amb saldo a crèdit, o un compte de despesa amb un valor estrany.
Pas 4: Registra entrades d’ajust
Les entrades d’ajust són crucials per a un informe precís segons el principi d’acumulació. Asseguren que els ingressos es reconeixen quan es guanyen i les despeses quan es generen, independentment de quan es produeixi el flux de caixa.
Ajustos comuns inclouen:
- Acumulacions: Registrar ingressos que has guanyat però encara no has facturat, o despeses que has generat però encara no has pagat.
- Diferiments: Gestionar prepagaments. Si un client et paga per un any de servei per avançat, el registres com a passiu (
Liabilities:UnearnedRevenue
) i reconeixes 1/12 cada mes com a ingressos. - Elements no monetaris: Registrar coses com l’amortització d’actius.
- Correccions: Corregir errors o comptabilitzar ítems perduts de les extraccions bancàries, com un petit pagament d’interessos.
Exemple: Acumulació d’ingressos
Has finalitzat un projecte el 31 d’agost però no enviaràs la factura fins al setembre. Per reconèixer l’ingrés en el període correcte (agost), fas una entrada d’ajust:
2025-08-31 * "Acumular ingressos per al projecte client #1042"
Assets:AccountsReceivable 3000.00 USD
Income:Consulting -3000.00 USD
Exemple: Registrar amortització
La teva empresa té un calendari d’amortització per als seus actius. Al final del període, registres la despesa:
2025-12-31 * "Amortització anual d'equipament informàtic"
Expenses:Depreciation 4800.00 USD
Assets:Fixed:AccumulatedDepreciation -4800.00 USD
Pas 5: Executa un balanç de prova ajustat i valida
Un cop les entrades d’ajust estan registrades, torna a executar l’informe de balanç de prova. Aquest és el teu Balanç de prova ajustat. Proporciona el conjunt final de números que s’utilitzaran per crear els estats financers.
És també el moment perfecte per executar la comprovació interna de Beancount:
bean-check main.beancount
Aquesta ordre verifica tota la sintaxi, les regles d’equilibri i les assercions. Si s’executa sense cap sortida, els teus llibres són mecànicament sòlids.
Pas 6: Publica els estats financers 📊
Aquesta és la recompensa. Amb les xifres del balanç de prova ajustat, pots generar els informes clau. Fava és la manera més senzilla de fer-ho, ja que ofereix informes interactius i amb possibilitat de aprofundir.
- Compte de resultats (Profit & Loss): Mostra els teus ingressos i despeses durant un període, resultant en el teu benefici net o pèrdua.
- Balanç: Una instantània del que posseeixes (Actius) i del que deguis (Passius), així com el teu patrimoni net (Patrimoni), en una data concreta.
- Estat de flux de caixa: Reconciliació del teu caixa inicial amb el final mostrant d’on ha vingut el diners i on ha anat.
Per a informes personalitzats, pots utilitzar el Beancount Query Language (BQL). Aquí tens una consulta per a un compte de resultats mensual:
-- P&L per a l'agost 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;
Pas 7: Tancament dels llibres (Opcional)
En la comptabilitat tradicional, el procés de "tancament" implica crear entrades de diari per posar a zero tots els comptes temporals (Ingressos i Despeses) i transferir el benefici net a un compte de patrimoni anomenat Retained Earnings. Això reinicia formalment els comptes temporals per al proper any.
A Beancount, aquest pas sol ser innecessari. Els informes de Fava són conscients de la data; si demanes un P&L del 2025, només usarà dades del 2025. Els saldos no "es desborden". La majoria d’usuaris simplement deixen els saldos tal com són.
Tanmateix, si necessites fer un tancament formal per compliment o per informes a accionistes, pots fer‑ho amb una simple transacció de final d’any que mou el total d’ingressos i despeses a Equity:Retained-Earnings
.
Llista de verificació per al tancament mensual
Aquí tens una llista de verificació repetible per tancar els teus llibres cada mes amb Beancount.
- Captura: Importa totes les transaccions bancàries i de targetes de crèdit. Introdueix manualment qualsevol despesa en efectiu o ítem fora de banda.
- Conciliació: Afegeix assercions
balance
per a tots els comptes bancaris, targetes de crèdit i préstecs, coincidint amb els teus extractes. - Revisió: Examina el balanç de prova no ajustat a Fava. Investiga qualsevol saldo estrany o inesperat. Revisa factures pendents (
Assets:AccountsReceivable
) o comptes per pagar (Liabilities:AccountsPayable
). - Ajust: Registra entrades per a ingressos/despeses acumulats, ingressos diferits i qualsevol correcció necessària.
- Validació: Executa
bean-check
. Revisa el balanç de prova ajustat final. - Publicació: Genera el P&L i el Balanç. Envia’ls a les parts interessades o desa’ls per als teus registres.
- Tancament: Opcionalment, realitza una entrada de tancament si el teu negoci ho requereix. Arxiva una còpia dels teus fitxers
.beancount
per al període.
Per què Beancount destaca en el cicle comptable
- Transparència i auditabilitat: El teu llibre és un fitxer de text. Pots utilitzar
git
per al control de versions del teu historial financer, revisar canvis ambdiff
i col·laborar amb el teu comptable en un format clar i inequívoc. - Control total: Tu defineixes el teu pla de comptes. No estàs lligat a l’estructura d’un proveïdor de programari. Les teves dades són teves, per sempre, en un format obert.
- Poder inigualable: La combinació de consultes similars a SQL (BQL) i una rica interfície web (Fava) et dóna un poder sense precedents per tallar, picar i entendre les teves dades financeres.
Fragmentos per copiar i enganxar per començar
Pla de comptes senzill:
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
Consulta BQL útil:
-- 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 mapar el cicle comptable atemporal a les eines modernes basades en text de Beancount, guanyes un sistema robust, transparent i construït per durar. ¡Feliç comptabilitat!