Pular para o conteúdo principal

Referência de sintaxe do Beancount

Referência de sintaxe da linguagem Beancount: diretivas, transações, nomenclatura de contas, tags, metadados e formatação para livros-razão em texto puro.

Este é um guia de referência conciso e abrangente para a sintaxe da linguagem Beancount, combinando estrutura prática, regras e exemplos. Para mais detalhes, consulte a Folha de Consulta Rápida.

Visão Geral

Beancount é um sistema de contabilidade de partidas dobradas em texto simples. Sua linguagem é estruturada em três blocos principais:

  • Commodities (moedas, ações, pontos, etc.)
  • Contas (livros-razão hierárquicos e categorizados)
  • Diretivas (entradas datadas que registram eventos ou configurações)

Commodities

Commodities são sempre escritas em maiúsculas, ex.: USD, EUR, AAPL, BTC, MILES, HOURS.

Contas

Contas são nomes hierárquicos separados por dois-pontos e capitalizados. Elas devem começar com um dos cinco tipos de conta raiz:

NomeTipoConteúdo TípicoExemplo
Ativos+Dinheiro, Banco, InvestimentosAtivos:ContaCorrente
Passivos-Cartões de Crédito, EmpréstimosPassivos:CartaoDeCredito
Receitas-Salário, JurosReceitas:EmpregadorA
Despesas+Compras, ContasDespesas:Alimentacao:Mercado
PatrimonioLiquido-Saldos de Abertura/FechamentoPatrimonioLiquido:Abertura
  • Os componentes devem ser capitalizados, separados por dois-pontos (:), sem espaços.
  • Números e hífens são permitidos nos componentes.
  • Os nomes das contas raiz podem ser personalizados via opções (veja abaixo).

Diretivas

Diretivas são as declarações centrais em um arquivo Beancount. A maioria começa com uma data, seguida pelo tipo de diretiva e argumentos. Elas são processadas em ordem cronológica (por data), não na ordem do arquivo.

Formato geral:

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

Diretivas Comuns e Exemplos

Abertura e Fechamento de Contas

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

Declaração de Commodities

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

Declarações de Preço

2022-04-30 price AAPL 150.00 USD

Notas e Documentos

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

Transações

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 Lançamentos

; 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

Verificações de Saldo e Preenchimento

O pad deve ser datado antes do balance que ele complementa, porque a verificação é feita no início do dia:

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"

Opções

Defina configurações de todo o arquivo:

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

Consulte a Referência de Opções para mais informações.

Plugins e Organização de Arquivos

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

Regras Importantes

  • Todas as transações devem equilibrar: a soma dos pesos de todos os lançamentos é zero. O peso de um lançamento é o seu valor, ou o seu custo ({}) ou preço (@) convertido para a outra moeda quando presente.
  • As contas devem ser abertas antes do uso; contas fechadas não podem receber lançamentos.
  • As verificações de saldo verificam apenas a moeda especificada, podem ser usadas em contas pai e são avaliadas no início da sua data (portanto, excluem transações do mesmo dia).
  • Anotações de preço (@ por unidade, @@ total) afetam o equilíbrio: elas definem o peso do lançamento na outra moeda. -100 USD @ 1.25 CAD pesa 125 CAD e compensa um lançamento de 125 CAD; remova o preço e a transação não equilibra mais.

Padrões Comuns

Abertura de Contas com Saldo Inicial

Abra ambas as contas, use pad na data de início e verifique o saldo no dia seguinte (a verificação é feita no início da sua data):

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

Transação de Investimento

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

Transação Multi-Moeda

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

Comentários

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

Fonte: https://beancount.io/pt/docs/Basics/syntax