Salta al contingut principal

El teu primer mes amb bea

Obre un llibre major, registra una setmana de compres, importa una exportació bancària, concilia amb un saldo d'estat de 3206,81 USD i llegeix els informes del mes amb la línia d'ordres bea.

Tanca un mes de llibres de principi a fi amb bea, l'eina de línia d'ordres de Beancount.io. Obriràs un llibre major, registraràs compres, importaràs una exportació bancària, conciliaràs amb un saldo d'estat de 3206,81 USD i llegiràs l'estat de resultats i el balanç de situació del mes.

El mes és l'agost de 2026 i el llibre major comença amb 1.250 USD al compte corrent. Res d'aquí no et demana escriure Python o una consulta.

Instal·la primer bea si no ho has fet: la Guia ràpida del CLI de Beancount cobreix Homebrew i uv. La comptabilitat local no necessita cap compte de Beancount.io.

Treballa en un directori buit. Descarrega-hi els dos fitxers d'entrada abans de començar:

  • first-month.csv — l'exportació bancària que importes a la setmana 3.
  • rules.toml — les regles de categorització que utilitza aquesta exportació.

Cada ordre anomena el llibre major amb --file august/main.bean, perquè puguis executar-les des d'aquest directori sense canviar al llibre major.

Setmana 1 — configura els llibres

Crea el llibre major i després obre l'únic compte que la plantilla no té per a aquest mes.

bea --no-input init august --currency USD --date 2026-08-01 \
  --opening-balance "Assets:Checking 1250"
bea --file august/main.bean add open --date 2026-08-01 --account Expenses:Transport:Fuel -c USD

init escriu august/main.bean amb catorze comptes, incloent-hi Expenses:Uncategorized. Les importacions deixen allà les files que no poden categoritzar.

Setmana 2 — registra les compres diàries

Registra les compres a mesura que passen. La data per defecte és avui, per tant la història amb data retroactiva passa --date explícitament.

bea --file august/main.bean add transaction "Coffee" --date 2026-08-03 \
  --posting "Expenses:Dining 4.50" --posting "Assets:Checking"
bea --file august/main.bean add transaction "Weekly groceries" --date 2026-08-05 \
  --posting "Expenses:Groceries 62.30" --posting "Assets:Checking"
bea --file august/main.bean add transaction --date 2026-08-07 --payee "Employer" \
  --narration "August salary" --posting "Assets:Checking 2100" --posting "Income:Salary"

Cada addició es comprova contra tot el llibre major abans de substituir el fitxer. La segona anotació es deixa en blanc, de manera que Beancount completa l'import equilibrador.

Setmana 3 — importa l'exportació bancària

L'exportació de la resta d'agost conté tres files:

Date,Payee,Amount
2026-08-10,Whole Foods,-28.40
2026-08-12,Shell,-35.00
2026-08-20,Mystery Shop,-9.99

El fitxer de regles assigna un beneficiari a un compte. Les regles s'executen en ordre de fitxer i la primera coincidència guanya.

[[rule]]
match = "whole foods|trader joe|corner market"
account = "Expenses:Groceries"
 
[[rule]]
match = "shell|chevron|exxon"
account = "Expenses:Transport:Fuel"
 
[[rule]]
match = "salary|payroll|employer"
account = "Income:Salary"

Mapa les columnes de l'exportació amb --csv, previsualitza el resultat i després repeteix amb --apply per escriure-ho.

bea --file august/main.bean import first-month.csv \
  --csv date=Date,amount=Amount,payee=Payee --account Assets:Checking --rules rules.toml
bea --file august/main.bean import first-month.csv --apply

La previsualització imprimeix una fila per línia amb la regla que hi ha coincidit, més el diff exacte que escriuria. No s'escriu res fins a --apply.

La segona ordre no necessita cap indicador: el mapa de columnes, el compte i les regles es recorden per a aquest fitxer. Cada entrada escrita porta una línia import-id, de manera que tornar a importar la mateixa exportació omet el que ja hi ha al llibre major.

Dues files coincideixen amb una regla. La tercera, Mystery Shop, no coincideix amb cap, per tant es publica a Expenses:Uncategorized amb l'indicador ! — la teva cua de revisió per a més tard.

Per al format de columna de dèbit i crèdit, altres monedes i importadors de Python, consulta Importa exportacions bancàries amb el CLI.

Setmana 4 — concilia amb l'estat

L'estat d'agost tanca el compte corrent a 3206,81 USD. Els teus llibres diuen 3209,81 USD. La diferència és una comissió bancària de 3,00 USD que l'exportació no va incloure.

Registra la comissió i després afirma el saldo de l'estat. Beancount comprova una asserció a l'inici del seu dia, per tant una asserció de l'1 de setembre cobreix totes les transaccions d'agost.

bea --file august/main.bean add transaction "Bank fee" --date 2026-08-31 \
  --posting "Expenses:Fees 3.00" --posting "Assets:Checking"
bea --file august/main.bean add balance --date 2026-09-01 --account Assets:Checking \
  --amount "3206.81 USD"
bea --file august/main.bean list transaction --flag '!' --details

La cua conté una transacció, la fila de Mystery Shop. --details imprimeix el seu número de fitxer i línia.

Obre aquesta línia al teu editor. Canvia la seva anotació Expenses:Uncategorized al compte on pertany — Expenses:Dining aquí — i canvia el seu indicador de ! a * per marcar-la com a revisada. Mantén la línia import-id perquè una importació repetida encara ometi la fila.

Després confirma que el llibre major es carrega i que la cua és buida:

bea --file august/main.bean check
bea --file august/main.bean list transaction --flag '!' --details

Un llibre major net surt amb codi 0. Una asserció trencada o un compte desconegut es llisten amb una sortida no zero. La cua ara imprimeix No transactions found.

Llegeix el mes

bea --file august/main.bean report income-statement --time 2026-08
bea --file august/main.bean report balance-sheet
bea --file august/main.bean report income-statement --time month

L'estat de resultats equilibra el salari de 2.100,00 USD contra 143,19 USD de despeses per a un benefici net de 1.956,81 USD. Els saldos dels comptes s'imprimeixen en signes de Beancount, per tant les línies d'ingressos són negatives. El balanç de situació mostra el compte corrent a 3.206,81 USD, que coincideix amb l'estat amb el qual has conciliat.

--time 2026-08 fixa el mes d'aquest tutorial. --time month sempre significa el mes actual, que és el que faràs servir un cop els teus llibres estiguin al dia.

Continua des d'aquí

Font: https://beancount.io/ca/docs/Basics/bea-first-month