Pular para o conteúdo principal

O que é Beancount: escrituração contábil de partidas

Beancount é contabilidade de partidas dobradas em texto simples para ações, cripto e contabilidade do dia a dia — o que é e por que engenheiros a usam.

Este guia sintetiza as melhores práticas para contabilidade em texto simples usando a ferramenta poderosa, de código aberto e de texto simples, Beancount. Ele cobre a filosofia fundamental, sintaxe do básico ao avançado, estudos de caso práticos para ativos complexos e estratégias de gerenciamento de razão contábil de longo prazo.

Parte 1: O "Porquê" - Fundamentos da Escrituração Inteligente

Antes de mergulhar no "como", é crucial entender o "porquê". Uma escrituração eficaz é a base do gerenciamento financeiro pessoal e um passo necessário em direção à clareza e liberdade financeira.

Além do Controle de Despesas: O Caminho para a Clareza Financeira

Aplicativos simples de controle de despesas dizem para onde seu dinheiro foi. Um sistema contábil robusto diz isso e muito mais: ele fornece um quadro completo da sua saúde financeira, incluindo seu patrimônio líquido, fluxo de caixa e o desempenho dos seus investimentos. O objetivo principal é a observabilidade — obter uma compreensão clara e baseada em dados da sua vida financeira, o que permite tomar decisões informadas, avaliar riscos e trabalhar em direção a metas de longo prazo, como a aposentadoria.

Por que Partidas Dobradas? O Poder de um Sistema Balanceado

Ao contrário da escrituração de partidas simples (uma lista simples de despesas), o método de partidas dobradas registra cada transação como um fluxo de valor entre pelo menos duas contas. Seu princípio central é a equação contábil fundamental:

Ativos=Passivos+Patrimoˆnio Lıˊquido\text{Ativos} = \text{Passivos} + \text{Patrimônio Líquido}

Este sistema garante que seus livros estejam sempre balanceados, reduzindo drasticamente os erros. Ele fornece um quadro financeiro completo ao gerar relatórios essenciais como o Balanço Patrimonial (o que você possui e deve) e a Demonstração de Resultados (o que você ganhou e gastou).

Parte 2: Começando com o Beancount

Beancount é uma ferramenta poderosa baseada em Python para contabilidade em texto simples.

Sua Primeira Visão com o Fava no Beancount.io

O Beancount.io fornece um ambiente poderoso que combina o mecanismo Beancount com um aplicativo móvel (iOS, Android) e aplicativo web - Fava, uma interface web fantástica para visualizar seu razão contábil. Não há necessidade de instalação. Ao usar a plataforma, você está interagindo diretamente com um editor de texto para seu arquivo de razão (por exemplo, main.bean) e vendo os relatórios gerados pelo Fava serem atualizados em tempo real.

O Fava pega o texto simples que você escreve e o transforma em gráficos interativos, demonstrações financeiras e listas de transações filtráveis, dando a você uma visão clara dos seus relatórios financeiros.

Ou comece no Terminal com o bea

Se preferir trabalhar a partir de um shell, o bea é a linha de comando do Beancount.io. Nenhuma conta é necessária: instale-o com brew install bex-co/tap/bea ou uv tool install beancount-io, e ele cria, valida, consulta e gera relatórios sobre o mesmo arquivo de texto simples. O início rápido da CLI fornece seu primeiro livro-razão em poucos minutos, e Seu primeiro mês com o bea fecha um mês completo de ponta a ponta.

Os Cinco Tipos Principais de Contas

O Beancount usa cinco tipos principais de contas, que formam a estrutura do seu razão:

Tipo de ContaDescriçãoSaldo Típico
AtivosO que você possui (dinheiro, contas bancárias, investimentos, propriedades).Positivo
PassivosO que você deve (dívidas de cartão de crédito, empréstimos, hipotecas).Negativo
RendimentosDe onde o dinheiro vem (salário, bônus, juros).Negativo
DespesasPara onde o dinheiro vai (alimentação, aluguel, viagens, impostos).Positivo
Patrimônio LíquidoSeu patrimônio líquido; usado para saldos iniciais.Negativo

A Equação do Beancount

O Beancount impõe sua própria versão da equação contábil onde a soma de todos os lançamentos em todo o seu razão é igual a zero:

Ativos+Despesas+Passivos+Rendimentos+Patrimoˆnio Lıˊquido=0\text{Ativos} + \text{Despesas} + \text{Passivos} + \text{Rendimentos} + \text{Patrimônio Líquido} = 0

É por isso que, por convenção, as contas de Rendimentos, Passivos e Patrimônio Líquido mantêm valores negativos — elas são as fontes de fundos que aumentam seus Ativos e Despesas.

Parte 3: A Linguagem do Beancount - Sintaxe Principal

Todas as entradas no Beancount são diretivas que começam com uma data.

Definindo Contas (open) e Commodities

Antes de usar uma conta, você deve declará-la com a diretiva open. Você também pode opcionalmente especificar as moedas ou "commodities" que ela conterá.

; YYYY-MM-DD open Account:Name [Commodity1, Commodity2, ...]
2020-01-01 open Assets:Bank:US:Chase:Checking      USD
2020-01-01 open Liabilities:CreditCard:US:Discover USD
2020-01-01 open Expenses:Food:Groceries
2020-01-01 open Income:Salary:Google

Commodities podem ser moedas do mundo real (por exemplo, USD, JPY) ou qualquer unidade personalizada que você definir, como milhas aéreas (MILES_UA) ou tickers de ações (HOOL).

Registrando Sua Primeira Transação (*)

Transações são a entrada mais comum. Elas começam com uma data, uma flag (* para transação completa ou ! para incompleta), um pagador opcional e uma descrição. Cada linha seguinte (recuada por dois espaços) é um "lançamento" em uma conta.

; YYYY-MM-DD * "Payee" "Description"
;   Account1      Amount Commodity
;   Account2     -Amount Commodity
 
2024-07-28 * "Trader Joe's" "Weekly groceries"
  Expenses:Food:Groceries     125.50 USD
  Liabilities:CreditCard:US:Discover  -125.50 USD

Por conveniência, se uma transação tiver apenas dois lançamentos, você pode omitir o valor na segunda linha, e o Beancount o calculará automaticamente.

2024-07-28 * "Trader Joe's" "Weekly groceries"
  Expenses:Food:Groceries     125.50 USD
  Liabilities:CreditCard:US:Discover

Balanceamento em Nível de Transação: Mais importante para o uso diário, cada transação individual também deve ser balanceada — a soma de todos os lançamentos dentro de uma única transação deve ser igual a zero. Se uma transação não balancear, o Beancount mostrará um erro como este:

Alerta de Erro do Beancount

Lidando com Transações Multimoeda (@ e @@)

O Beancount é excelente em contabilidade multimoeda.

  • Use @ para especificar um preço de conversão por unidade.
  • Use @@ para especificar o custo total da conversão.
; Buying a flight in EUR with a USD card
2024-08-01 * "Lufthansa" "Flight to Berlin"
  Expenses:Travel:Flights      500.00 EUR @@ 545.00 USD  ; 500 EUR cost me 545 USD in total
  Liabilities:CreditCard:US:Discover  -545.00 USD

Parte 4: Garantindo a Precisão - A Arte da Conciliação

Uma prática fundamental para manter um razão preciso é a conciliação regular. Isso envolve comparar os saldos do seu razão Beancount com os extratos oficiais das suas instituições financeiras.

Automatizando Verificações com Asserções de Saldo (balance)

A diretiva balance é sua principal ferramenta para verificações automatizadas. Você afirma que, em uma determinada data, uma conta tinha um saldo específico. O Beancount levantará um erro se o saldo calculado não corresponder à sua afirmação. Isso é inestimável para localizar erros rapidamente.

Nota: A asserção de saldo verifica o estado da conta no início do dia especificado (antes de quaisquer transações naquele dia).

; From your monthly credit card statement
2024-08-01 balance Liabilities:CreditCard:US:Discover  -1432.78 USD

Vinculando Documentos de Apoio (document)

Você pode vincular arquivos externos como extratos bancários ou recibos, criando uma trilha auditável. O Fava torna esses links clicáveis.

2024-08-01 document Liabilities:CreditCard:US:Discover "statements/discover-2024-07.pdf"

Corrigindo Erros e Inicializando Saldos

Quando você inicia seu razão ou encontra uma discrepância que não consegue rastrear, você precisa fazer um ajuste. A prática padrão é usar uma conta especial de Patrimônio Líquido.

; Initializing a cash account when starting your ledger
2020-01-01 * "Initial Balance" "Setting up cash account"
  Assets:Cash:Wallet           200.00 USD
  Equity:Opening-Balances     -200.00 USD

A conta Equity:Opening-Balances detém valores que entram no seu razão de fontes desconhecidas ou externas.

Para correções rápidas onde a discrepância exata não é importante, a diretiva pad pode ajustar automaticamente o saldo de uma conta para atender a uma asserção de balance subsequente, registrando a diferença em uma conta de patrimônio líquido. Use isso com cautela, pois pode ocultar problemas maiores. Ajustes explícitos são geralmente mais seguros.

Parte 5: Padrões de Transação Avançados e Realistas

Rastreando Dívidas: Gerenciando Valores a Receber e a Pagar

A contabilidade de partidas dobradas é perfeita para rastrear dinheiro devido a você (Assets:Receivables) ou por você (Liabilities:Payable).

Exemplo: Você paga por um jantar em grupo de $90, e seu amigo Bob lhe deve sua parte de $45.

  1. Registre a despesa inicial e o valor a receber:

    2024-08-05 * "Dinner Place" "Dinner with Bob"
      Expenses:Food:Restaurant          45.00 USD  ; Your share
      Assets:Receivables:Bob            45.00 USD  ; Bob owes you
      Assets:Bank:US:Chase:Checking    -90.00 USD
  2. Quando Bob lhe pagar de volta:

    2024-08-06 * "Bob" "Paid me back for dinner"
      Assets:Bank:US:Chase:Checking     45.00 USD
      Assets:Receivables:Bob           -45.00 USD

A conta Assets:Receivables:Bob agora está zerada, e seus livros estão perfeitamente balanceados.

Ativos vs. Despesas: Compra de um Carro e Depreciação

Uma compra grande como um carro não é uma despesa simples; é a aquisição de um ativo que perde valor ao longo do tempo (depreciação).

  1. Registre a compra como um ativo:

    2023-01-15 * "Toyota Dealer" "Purchase of a new car"
      Assets:Car:ToyotaCamry         30000.00 USD
      Assets:Bank:US:Chase:Checking -30000.00 USD
  2. Registre a depreciação anual: Suponha que você estime que o carro perde $3.000 em valor a cada ano. No final do ano, você registra isso como uma despesa.

    2023-12-31 * "Depreciation" "Annual car value depreciation"
      Expenses:Depreciation:Car      3000.00 USD
      Assets:Car:ToyotaCamry        -3000.00 USD

Após esta entrada, sua conta Assets:Car:ToyotaCamry reflete corretamente o novo valor do carro ($27.000), e você contabilizou adequadamente o custo de uso como uma despesa para aquele ano.

Parte 6: Mergulho Profundo - Modelando Ativos Complexos do Mundo Real

Estudo de Caso 1: Contabilizando Imóveis

Uma casa é frequentemente seu maior ativo e passivo. Veja como modelá-la.

  1. Crie Contas e uma Commodity Personalizada:

    2022-01-01 commodity HOUSE_123MAIN
      name: "Property at 123 Main St"
    2022-01-01 open Assets:Property:Home:123Main        HOUSE_123MAIN
    2022-01-01 open Liabilities:Mortgage:HomeLoan       USD
    2022-01-01 open Expenses:Home:Interest
    2022-01-01 open Expenses:Home:PropertyTax
  2. Registre a Compra: Digamos que você compre uma casa de $500 mil com um pagamento inicial de $100 mil e um empréstimo de $400 mil.

    2022-03-15 * "Settlement Company" "Purchase of 123 Main St"
      Assets:Property:Home:123Main          1 HOUSE_123MAIN {500000.00 USD}
      Assets:Bank:DownPayment          -100000.00 USD
      Liabilities:Mortgage:HomeLoan    -400000.00 USD
  3. Registre os Pagamentos Mensais da Hipoteca: Seu pagamento mensal consiste em principal (reduz o passivo) e juros (uma despesa).

    2022-04-01 * "Mortgage Bank" "Monthly Mortgage Payment"
      Liabilities:Mortgage:HomeLoan      800.00 USD   ; Principal
      Expenses:Home:Interest            1200.00 USD   ; Interest
      Assets:Bank:US:Chase:Checking    -2000.00 USD
  4. Rastreando a Valorização (Ganhos Não Realizados): O valor de mercado de uma casa muda. Para rastrear isso sem afetar seu patrimônio líquido oficial (já que o ganho não é realizado até você vender), você pode usar uma diretiva de preço com uma moeda "virtual".

    ; The purchase price is the real cost basis
    2022-03-15 price HOUSE_123MAIN   500000.00 USD
     
    ; An updated market estimate is an unrealized gain
    2024-01-01 price HOUSE_123MAIN   550000.00 USD.UNREALIZED

Isso permite que você veja o valor estimado nos gráficos do Fava sem inflar indevidamente seu balanço patrimonial.

Explore um razão de exemplo de imóvel ao vivo com rastreamento de hipoteca, depreciação e venda de propriedade:

Abrir Razão de Exemplo de Imóvel em uma nova aba

Estudo de Caso 2: Rastreando Unidades de Ações Restritas (RSUs)

RSUs são uma forma comum de remuneração em ações. Contabilizá-las envolve rastrear a concessão inicial, eventos de aquisição e retenção de impostos.

  1. Configuração Inicial: Crie commodities para ações adquiridas (HOOL) e não adquiridas (HOOL.UNVEST), junto com todas as contas que as entradas posteriores tocam. Declarar todas elas antecipadamente é o que faz as duas transações abaixo carregarem por conta própria.

    2021-01-01 commodity HOOL
    2021-01-01 commodity HOOL.UNVEST
    2021-01-01 open Assets:Brokerage:Etrade:HOOL          HOOL
    2021-01-01 open Assets:Grant:Unvested                 HOOL.UNVEST
    2021-01-01 open Income:Grant:Awards                   HOOL.UNVEST
    2021-01-01 open Expenses:Grant:Vested                 HOOL.UNVEST
    2021-01-01 open Income:Salary:Hooli:RSU               USD
    2021-01-01 open Expenses:Taxes:Federal                USD
    2021-01-01 open Expenses:Taxes:State                  USD
  2. Registre a Concessão Inicial: Esta transação mostra a concessão total entrando em uma conta de ativos não adquiridos. Nada é tributável ainda, então a entrada inteira é denominada na commodity de rastreamento HOOL.UNVEST.

    2021-02-01 * "Hooli" "Initial RSU Grant"
      Assets:Grant:Unvested        1000 HOOL.UNVEST
      Income:Grant:Awards         -1000 HOOL.UNVEST
  3. Registre um Evento de Aquisição: Esta é a transação chave. Quando as ações são adquiridas, você reconhece renda, o empregador retém ações para pagar o imposto, e você fica com o restante. Suponha que 100 ações sejam adquiridas a $150,00, então:

    • Compensação bruta: 100 × $150,00 = $15.000,00
    • Ações retidas para imposto: 40 × $150,00 = $6.000,00 (federal $4.800,00 + estadual $1.200,00)
    • Ações que você mantém: 60 × $150,00 = $9.000,00 de base de custo
    • Dinheiro para você: $0,00 — toda a retenção é paga em ações

    Esses valores são a entrada, e eles reconciliam: $6.000,00 de imposto mais $9.000,00 de ações retidas é exatamente os $15.000,00 de renda.

    2022-02-01 * "Hooli" "RSU Vesting Event"
      ; Ordinary income: 100 shares * $150.00
      Income:Salary:Hooli:RSU                   -15000.00 USD
      ; Tax withheld, funded by 40 of the 100 shares (40 * $150.00 = $6,000.00)
      Expenses:Taxes:Federal                      4800.00 USD
      Expenses:Taxes:State                        1200.00 USD
      ; The 60 shares you keep, at their $150.00 vesting-day basis
      Assets:Brokerage:Etrade:HOOL                  60 HOOL {150.00 USD}
      ; Retire the 100 unvested units the grant was tracking
      Assets:Grant:Unvested                       -100 HOOL.UNVEST
      Expenses:Grant:Vested                        100 HOOL.UNVEST

Esta única transação balanceada modela o evento inteiro: a concessão não adquirida é reduzida, a renda é reconhecida, o imposto é retido, e as 60 ações adquiridas líquidas aparecem na sua conta de corretagem com a base de custo correta para cálculos futuros de ganhos de capital.

Dois detalhes valem ser copiados para o seu próprio razão. Primeiro, escreva a retenção conta por conta em vez de deixar uma conta de balanceamento geral absorvê-la — se os lançamentos federais e estaduais não somarem ao valor das ações retidas, a transação não será balanceada e o Beancount lhe dirá isso. Segundo, não deixe uma linha em branco entre os lançamentos: uma linha em branco encerra a transação, e o Beancount relata um erro de sintaxe nos lançamentos que a seguem.

Se seu empregador vender as ações retidas no mercado aberto em vez de retomá-las ao preço de aquisição, a venda é uma transação separada — uma redução de Assets:Brokerage:Etrade:HOOL contra dinheiro — e qualquer diferença entre o preço de venda e a base de $150,00 é um pequeno ganho ou perda de capital. Mantenha isso fora da entrada de aquisição.

Parte 7: Gerenciamento de Projeto para Seu Razão

À medida que seu razão cresce, a organização se torna fundamental.

Usando Controle de Versão (Git) para Proteger Seus Dados

Como seu razão é um arquivo de texto, é perfeito para controle de versão com Git. Isso lhe dá um histórico completo de todas as mudanças, protegendo-o contra exclusões acidentais ou erros. Aviso: Seus dados financeiros são altamente sensíveis. Use um repositório privado em serviços como GitHub/GitLab, ou hospede o seu próprio.

O Beancount fornece duas maneiras de agrupar transações além das contas:

  • Tags (#): Use para eventos ou projetos. Você pode filtrar todas as transações relacionadas a uma viagem específica, por exemplo. 2024-07-20 * "Hotel" "Viena" #viagem-europa-2024
  • Links (^): Use para conectar transações financeiramente relacionadas que ocorrem em momentos diferentes, como um saque em dinheiro e a taxa bancária associada.

Uma Estratégia Escalável para Estruturar Seus Arquivos (include)

Um único arquivo massivo é difícil de gerenciar. Use a diretiva include para dividir seu razão em vários arquivos. main.bean:

; Main ledger file
 
; Global options
option "title" "My Personal Ledger"
option "operating_currency" "USD"
 
; Include account declarations and other files
include "accounts.bean"
include "years/2023.bean"
include "years/2024.bean"
include "events/trip-europe-2024.bean"

Uma estratégia organizacional robusta, em ordem de precedência:

  1. Por Evento: Crie um arquivo separado para um evento importante e autocontido (por exemplo, viagem-europa-2024.bean).
  2. Por Categoria/Pagador: Para transações altamente regulares e recorrentes, como contas de serviços públicos ou salário, agrupe-as em seu próprio arquivo (por exemplo, aluguel-recorrente.bean).
  3. Por Conta: Para transações fortemente acopladas a uma conta específica (juros, taxas, pagamentos de cartão de crédito), considere um arquivo específico da conta.
  4. Por Data: Para todas as outras transações gerais, uma divisão simples por ano (2024.bean) ou mês (2024/07.bean) é eficaz.

Parte 8: Conclusão

O Beancount oferece uma curva de aprendizado íngreme, mas recompensa o esforço com poder, flexibilidade e controle incomparáveis sobre seus dados financeiros. Ao adotar os princípios da contabilidade de partidas dobradas e as ferramentas práticas que o Beancount fornece, você pode passar do simples controle de despesas para um sistema completo, preciso e perspicaz de gerenciamento financeiro pessoal. Seu razão se torna um ativo permanente, privado e inestimável para entender seu passado e planejar seu futuro.

Começando com o Beancount.io

O Beancount.io é uma plataforma moderna de gerenciamento financeiro baseada em nuvem que transforma seus registros de transações baseados em texto em demonstrações financeiras abrangentes, incluindo demonstrações de resultados, balanços patrimoniais e balancetes. Ao combinar a confiabilidade de arquivos de texto simples com ferramentas poderosas de visualização, o Beancount.io ajuda você a manter controle preciso sobre sua vida financeira enquanto obtém insights valiosos sobre o desempenho dos seus investimentos.

Comece sua jornada financeira com o Beancount.io — veja os planos e preços atuais para o que cada nível inclui.

painel do razão do beancount.io mostrando um gráfico de tendência de patrimônio líquido, saldos de contas e uma barra de assistente de IA

Explore o razão ao vivo →

Demonstração de resultados do razão Beancount público da Apple no beancount.io com gráfico de lucro líquido e detalhamentos de renda e despesas

Explore o razão ao vivo →

Balanço patrimonial do razão Beancount público da Apple no beancount.io com gráfico de patrimônio líquido e detalhes de ativos e passivos

Explore o razão ao vivo →

Fonte: https://beancount.io/pt/docs/introduction-to-beancount