Saltar al contenido principal

Referencia de sintaxis de Beancount

Referencia de sintaxis del lenguaje Beancount: directivas, transacciones, nombres de cuentas, etiquetas

Esto proporciona una referencia concisa pero completa para la sintaxis del lenguaje Beancount, combinando estructura práctica, reglas y ejemplos. Para más detalles, consulta la Hoja de Referencia.

Resumen

Beancount es un sistema de contabilidad por partida doble en texto plano. Su lenguaje se estructura alrededor de tres bloques principales:

  • Mercancías (monedas, acciones, puntos, etc.)
  • Cuentas (libros contables jerárquicos y categorizados)
  • Directivas (entradas con fecha que registran eventos o configuración)

Mercancías

Las mercancías siempre se escriben en mayúsculas, por ejemplo, USD, EUR, AAPL, BTC, MILES, HORAS.

Cuentas

Las cuentas son nombres jerárquicos separados por dos puntos y capitalizados. Deben comenzar con uno de los cinco tipos de cuenta raíz:

NombreTipoContenido TípicoEjemplo
Activos+Efectivo, Banco, InversionesActivos:CuentaCorriente
Pasivos-Tarjetas de Crédito, PréstamosPasivos:TarjetaCredito
Ingresos-Salario, InteresesIngresos:EmpleadorA
Gastos+Compras, FacturasGastos:Alimentos:Restaurantes
Patrimonio-Saldos Iniciales/FinalesPatrimonio:Saldos-Iniciales
  • Los componentes deben estar capitalizados, separados por dos puntos (:), sin espacios.
  • Se permiten números y guiones en los componentes.
  • Los nombres de las cuentas raíz se pueden personalizar mediante opciones (ver más abajo).

Directivas

Las directivas son las declaraciones centrales en un archivo Beancount. La mayoría comienzan con una fecha, seguida de un tipo de directiva y argumentos. Se procesan en orden cronológico (por fecha), no en el orden del archivo.

Formato general:

YYYY-MM-DD <directive> <arguments...>

Directivas Comunes y Ejemplos

Apertura y Cierre de Cuentas

2023-01-01 open Assets:Checking USD,EUR  ; Optionally specify allowed currencies
2023-12-31 close Assets:Checking

Declaración de Mercancías

2020-07-22 commodity AAPL
  name: "Apple Inc."

Declaraciones de Precio

2022-04-30 price AAPL 150.00 USD

Notas y Documentos

2022-03-20 note Assets:Checking "Asked about refund"
2022-03-20 document Assets:Checking "statements/2022-03.pdf"

Transacciones

2024-01-05 * "Coffee Shop" "Morning coffee"
  Expenses:Food         4.50 USD
  Assets:Cash         -4.50 USD
 
2024-01-06 ! "Phone Bill" "Monthly payment" #utilities ^phone
  id: "INV12345"              ; Metadata
  Expenses:Utilities  60.00 USD
  Assets:Checking

Características de las Anotaciones

; With cost basis
  Assets:Stocks    1 AAPL {150.00 USD}
; With price annotation
  Assets:Cash   -100 USD @ 1.25 CAD
; With total price
  Assets:Cash   -100 USD @@ 125.00 CAD
; Implicit balance
  Assets:Cash   -100 USD
  Assets:Bank

Verificaciones de Saldo y Relleno (Padding)

El pad debe tener fecha anterior al balance que alimenta, porque la verificación se realiza al inicio de su día:

2024-06-01 pad Assets:Checking Equity:Opening-Balances
2024-06-02 balance Assets:Checking 1000.00 USD

Eventos

2024-06-01 event "location" "San Francisco, CA"

Opciones

Establece configuración a nivel de archivo:

option "title" "My Ledger"
option "operating_currency" "USD"
option "documents" "docs/"
option "name_assets" "Vermoegen"

Consulta la Referencia de Opciones para más información.

Plugins y Organización de Archivos

plugin "beancount.plugins.module_name"
plugin "beancount.plugins.module_name" "config-string"
include "other/file.beancount"
pushtag #project
; ...
poptag #project

Reglas Importantes

  • Todas las transacciones deben cuadrar: los pesos de todas las anotaciones deben sumar cero. El peso de una anotación es su importe, o su costo ({}) o precio (@) convertido a la otra moneda cuando está presente.
  • Las cuentas deben abrirse antes de usarse; las cuentas cerradas no pueden aceptar anotaciones.
  • Las verificaciones de saldo solo verifican la moneda especificada, se pueden usar en cuentas padre y se evalúan al inicio de su fecha (por lo que excluyen transacciones del mismo día).
  • Las anotaciones de precio (@ por unidad, @@ total) afectan el cuadre: establecen el peso de la anotación en la otra moneda. -100 USD @ 1.25 CAD pesa 125 CAD y compensa una anotación de 125 CAD; elimina el precio y la transacción ya no cuadra.

Patrones Comunes

Apertura de Cuentas con Saldo Inicial

Abre ambas cuentas, usa pad en la fecha de inicio y verifica el saldo al día siguiente (la verificación se realiza al inicio de su fecha):

2024-01-01 open Assets:Checking USD
2024-01-01 open Equity:Opening-Balances
2024-01-01 pad Assets:Checking Equity:Opening-Balances
2024-01-02 balance Assets:Checking 1000.00 USD

Transacción de Inversión

2024-01-01 * "Buy stock"
  Assets:Broker:Stock   10 AAPL {150.00 USD}
  Assets:Broker:Cash -1500.00 USD

Transacción Multimoneda

2024-01-01 * "Currency exchange"
  Assets:USD   -100.00 USD @ 1.25 CAD
  Assets:CAD    125.00 CAD

Comentarios

poptag  #trip-to-peru
; inline comments begin with a semi-colon
* any line not starting with a valid directive is also ignored silently

Fuente: https://beancount.io/es/docs/Basics/syntax