Cierra un mes de contabilidad de principio a fin con bea, la herramienta de línea de comandos de Beancount.io. Abrirás un libro mayor, registrarás compras, importarás una exportación bancaria, conciliarás con un saldo de estado de cuenta de 3206.81 USD y leerás el estado de resultados y el balance general del mes.
El mes es agosto de 2026 y el libro mayor comienza con 1,250 USD en la cuenta corriente. Nada de esto te pide que escribas Python o una consulta.
Instala bea primero si aún no lo has hecho: la guía de inicio rápido de Beancount CLI cubre Homebrew y uv. La contabilidad local no requiere una cuenta de Beancount.io.
Trabaja en un directorio vacío. Descarga los dos archivos de entrada en él antes de comenzar:
- first-month.csv — la exportación bancaria que importarás en la semana 3.
- rules.toml — las reglas de categorización que utiliza esa exportación.
Cada comando nombra el libro mayor con --file august/main.bean, por lo que puedes ejecutarlos desde ese directorio sin cambiar al libro mayor.
Semana 1 — configura los libros
Crea el libro mayor y luego abre la única cuenta que la plantilla no incluye para este 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 USDinit escribe august/main.bean con catorce cuentas, incluyendo Expenses:Uncategorized. Las importaciones estacionan las filas que no pueden categorizar allí.
Semana 2 — registra las compras diarias
Registra las compras a medida que ocurren. La fecha se establece por defecto a hoy, por lo que para historial con fechas pasadas se pasa --date explícitamente.
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 adición se verifica contra todo el libro mayor antes de que el archivo sea reemplazado. El segundo asiento se deja en blanco, por lo que Beancount completa la cantidad compensatoria.
Semana 3 — importa la exportación bancaria
La exportación del resto de agosto contiene tres filas:
Date,Payee,Amount
2026-08-10,Whole Foods,-28.40
2026-08-12,Shell,-35.00
2026-08-20,Mystery Shop,-9.99El archivo de reglas empareja un beneficiario con una cuenta. Las reglas se ejecutan en el orden del archivo y gana la primera coincidencia.
[[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"Asigna las columnas de la exportación con --csv, previsualiza el resultado y luego repite con --apply para escribirlo.
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 --applyLa vista previa imprime una línea por fila con la regla que coincidió, más el diff exacto que escribiría. Nada se escribe hasta --apply.
El segundo comando no necesita banderas: la asignación de columnas, la cuenta y las reglas se recuerdan para ese archivo. Cada entrada escrita lleva una línea import-id, por lo que importar la misma exportación nuevamente omite lo que ya está en el libro mayor.
Dos filas coinciden con una regla. La tercera, Mystery Shop, no coincide con ninguna, por lo que se publica en Expenses:Uncategorized con la bandera ! — tu cola de revisión para más adelante.
Para el formato de columna de débito y crédito, otras monedas e importadores de Python, consulta Importar exportaciones bancarias con la CLI.
Semana 4 — concilia contra el estado de cuenta
El estado de cuenta de agosto cierra la cuenta corriente en 3206.81 USD. Tus libros dicen 3209.81 USD. La diferencia es una comisión bancaria de 3.00 USD que la exportación omitió.
Registra la comisión y luego afirma el saldo del estado de cuenta. Beancount verifica una afirmación al inicio de su día, por lo que una afirmación del 1 de septiembre cubre cada transacción de agosto.
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 '!' --detailsLa cola contiene una transacción: la fila de Mystery Shop. --details imprime su archivo y número de línea.
Abre esa línea en tu editor. Cambia su asiento Expenses:Uncategorized a la cuenta a la que pertenece — Expenses:Dining aquí — y cambia su bandera de ! a * para marcarla como revisada. Conserva la línea import-id para que una importación repetida aún omita la fila.
Luego confirma que el libro mayor carga y que la cola está vacía:
bea --file august/main.bean check
bea --file august/main.bean list transaction --flag '!' --detailsUn libro mayor limpio sale con 0. Una afirmación rota o una cuenta desconocida se listan con una salida distinta de cero. La cola ahora imprime No transactions found.
Lee 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 monthEl estado de resultados netea el salario de 2,100.00 USD contra 143.19 USD de gastos para un beneficio neto de 1,956.81 USD. Los saldos de cuentas se imprimen en signos de Beancount, por lo que las líneas de ingresos son negativas. El balance general muestra la cuenta corriente en 3,206.81 USD, coincidiendo con el estado de cuenta al que conciliaste.
--time 2026-08 fija el mes de este tutorial. --time month siempre significa el mes actual, que es lo que usarás una vez que tus libros estén al día.
Continúa desde aquí
- Importar exportaciones bancarias con la CLI para revisión de duplicados, otros formatos de columnas e importaciones repetidas.
- Automatiza la contabilidad con bea para el sobre JSON, códigos de salida y ejecuciones desatendidas.
- Referencia de la CLI de Beancount para cada comando y opción.