- Usando o Beancount, registrou por 10 anos as finanças pessoais em arquivos de texto simples, gerenciando cerca de 45.000 linhas de dados e 10.000 transações
- Dedica de 30 a 45 minutos por mês para importar arquivos CSV de extratos bancários e organizá-los manual e automaticamente, separando-os em arquivos por ano para manter a legibilidade
- Desenvolveu pessoalmente uma biblioteca importer baseada em Python para bancos alemães e a integrou ao Beancount; parte dela ainda é mantida hoje
- Ao perceber as dificuldades de quem começa no Beancount, escreveu um guia introdutório para iniciantes, que recebeu avaliações positivas da comunidade
- Todos os dados ficam armazenados em seu dispositivo local e em um repositório Git, oferecendo mais durabilidade e controle do que apps ou serviços específicos
Estrutura do livro-razão do Beancount ao longo de 10 anos
- Desde 2016, gerencia os dados financeiros com Beancount, com um total de 45.011 linhas de registros armazenadas em 16 arquivos
.beancount
- O arquivo
main.beancount é o centro, conectando arquivos anuais por meio de include
- Há cerca de 9.895 transações no total, com 19.743 postings (lançamentos) dentro delas
- Existem 1.086 contas (accounts) no total, mas elas não são contas bancárias reais, e sim contas virtuais de classificação
- Ex.: é possível criar contas por item detalhado, como gastos em supermercado, renda, serviços de assinatura etc.
- 507 documentos PDF estão anexados às transações, facilitando a verificação de recibos relacionados na declaração de impostos
- O número de postings por ano cresceu de 715 em 2016 para 2.651 em 2023, sendo 2023 o ano mais ativo
Processo de gerenciamento mensal
- Investe cerca de 30 a 45 minutos por mês para baixar os extratos bancários em CSV e importá-los para o Beancount
- Usa CSV porque é mais fácil de processar do que PDF
- Um importer baseado em Python converte os dados do CSV para o formato do Beancount
- Depois de adicionar as transações convertidas ao arquivo
.beancount, ajusta tudo para que o saldo fique em 0 de acordo com o princípio das partidas dobradas
- Parte é classificada automaticamente, parte é ajustada manualmente
- Quando começa um novo ano, move as transações do ano anterior para o arquivo
<year>.beancount e as gerencia incluindo-o em main.beancount
- Todo o histórico de transações fica organizado em arquivos de texto dentro de um único diretório
Desenvolvimento de importers do Beancount para bancos alemães
- Como o Beancount não conhece por padrão os formatos de extratos bancários, é necessário convertê-los por meio de uma classe importer
- Como usa contas bancárias alemãs, desenvolveu diretamente vários importers
- As três primeiras bibliotecas ainda são mantidas e usadas ativamente
De usuário a autor
- A documentação do Beancount é extensa, mas a barreira de entrada para iniciantes é alta
- Com base no que aprendeu após várias tentativas e erros, escreveu um guia introdutório
- Publicado em personalfinancespython.com
- Mencionado na página de external contributions da documentação oficial do Beancount
- Recebeu reações positivas nas avaliações dos leitores
Encerramento
- Todos os dados financeiros estão armazenados como arquivos de texto locais com versionamento em Git
- Os dados ficam no próprio dispositivo e não dependem de um app ou serviço específico
- É possível analisá-los livremente usando as ferramentas do ecossistema Beancount
- Esse método de plaintext accounting é uma forma poderosa de gerenciar finanças que pode durar mais do que qualquer app
1 comentários
Comentários do Hacker News
Concordo totalmente com o livro do OP. Foi a melhor introdução que já vi para entender Beancount / contabilidade em texto puro
Eu também nunca tinha entendido bem partidas dobradas na vida toda, e só fui realmente sacar depois de ler "Accounting for Computer Scientists", do Martin Kleppman. A forma como ele explica com teoria dos grafos foi surpreendentemente intuitiva
Eu usava Quicken antigamente, mas a cada mudança de versão eu tinha que reinserir os dados, então acabei migrando para GNU Cash. Mas aí também houve problemas de migração
Depois descobri plaintext accounting (PTA) e escolhi o hledger (achei que o Beancount talvez tivesse problemas de desempenho). Aprender partidas dobradas foi mais simples do que eu esperava.
Eu fazia parsing dos extratos de investimento e holerites em PDF com scripts Python, e também automatizei a categorização de CSVs de banco/cartão.
Com cerca de uma hora por mês, gero relatórios de investimento, orçamento e resumo de impostos.
Por ser texto puro, os dados ficam seguros mesmo que o formato mude, e ainda dá para fazer controle de versão com git.
As desvantagens são não funcionar no celular e exigir algum conhecimento técnico. Mas, para quem se importa com o fluxo do dinheiro, essa é a solução certa
Mas o recurso de sincronização automática do Quicken ainda é o melhor, então é difícil substituir. Eu verifico 27 contas todos os dias para detectar fraudes ou erros, e baixar CSVs toda vez para processar manualmente seria um pesadelo.
Além disso, hoje em dia os bancos estão fechando o OFX e usando a Intuit como hub intermediário, então escapar está ficando cada vez mais difícil
Aprendi a ideia de gerenciar finanças pessoais como um sistema de build de projetos em full-fledged-hledger
Você armazena os dados brutos recebidos das instituições financeiras como estão, converte para CSV com scripts e depois usa arquivos de regras para mapear isso para lançamentos PTA.
Assim, se você mudar a lógica de conversão ou as regras de classificação, todo o histórico é atualizado automaticamente.
Dá para começar com um mês de dados e ir ampliando aos poucos — por exemplo, incluindo até histórico de pedidos da Amazon ou recibos do Paypal
Uso Beancount há vários anos.
Neste ano, mudei para uma estrutura de arquivos por ano, como o OP. Antes era um único arquivo com 2 milhões de linhas, e o plugin do Emacs ficou lento.
A vantagem dessa abordagem é que dá para rastrear tudo — investimentos, aposentadoria, RSU, contas bancárias etc. Dá até para modelar consumo de energia elétrica (kWh).
Ultimamente venho criando muitas ferramentas de automação com LLM. Por exemplo, refatorei com Claude um motor de regras de transações para virar um app com UI. Antes isso teria levado dias
Muita gente parece confundir texto puro com partidas dobradas.
O Beancount suporta os dois, mas dá para fazer contabilidade em texto puro mesmo sem entender partidas dobradas.
Ainda assim, recomendo aprender, porque partidas dobradas são uma ferramenta excelente para organizar o conhecimento.
Sou um pouco cético quanto à utilidade de texto puro em si. Parece uma reação contra dependência de nuvem ou vendor lock-in, mas já basta fazer partidas dobradas localmente com software livre.
Minha conclusão é a seguinte:
Eu uso GnuCash, e embora não seja perfeito, ele se encaixa bem nessa filosofia
Comecei com PTA recentemente, e a barreira de entrada é bem alta.
Primeiro você precisa aprender partidas dobradas e escolher entre ledger-cli / hledger / beancount. As diferenças são sutis, então comunidade e qualidade da documentação acabam sendo decisivas.
Depois vem a dúvida sobre quais contas importar primeiro, quanto histórico incluir e como configurar importadores automáticos.
O hledger usa uma DSL, o Beancount usa Python. A maior parte do tempo vai para edição manual.
Depois surgem novas perguntas: orçamento, impostos, compartilhamento com o cônjuge etc.
Mas sinto que o verdadeiro valor do PTA é justamente passar a perceber essas perguntas por conta própria.
Quando você toma várias decisões financeiras por ano — aposentadoria, seguro, internet, proposta de emprego nova — ter uma compreensão detalhada da sua economia pessoal faz muita diferença
Uso ledger-cli com Emacs há 10 anos, e antes também usei GnuCash.
Para iniciantes, também existe este material didático sobre partidas dobradas que escrevi
Uso PTA desde 2018, e aprendi muita coisa por tentativa e erro.
Serviços comerciais mostram só algumas contas, mas com PTA você consegue entender todo o fluxo das suas finanças.
Por exemplo, dá para rastrear a proveniência de todo o processo, desde ações recebidas da empresa até a venda e o depósito na conta bancária
Para mim, uma planilha do Excel é a ferramenta perfeita. Toda semana acrescento só os números de que preciso
A literatura é contraditória e obscura, e até contadores às vezes entendem os conceitos de forma errada
Eu gerencio minhas finanças há 20 anos de forma simples, com planilhas.
Atualizo por uns 5 minutos por mês e acompanho só os itens principais: eletricidade, aquecimento, seguro, poupança etc.
O objetivo é entender a tendência dos gastos e garantir o orçamento anual. O dinheiro que sobra eu simplesmente gasto
Registro separadamente só gastos acima de $100 para acompanhar os consumos grandes
Baixo CSVs de banco/cartão todo mês e analiso com scripts Python.
Com código escrito por LLM, analiso tendências de gasto por lojista, e deixo uma das cartas dedicada só a cobranças recorrentes para facilitar a identificação de mudanças
Recomendo o Fava, um frontend GUI para Beancount
https://beancount.github.io/fava/
Ele é muito útil para visualizar todas as contas e oferece uma interface de busca/consulta e edição em tempo real
Esse sistema parece muito legal, mas fico pensando em como fazer isso ao gerenciar finanças com um parceiro não técnico.
Nós usamos YNAB, porque a UI é limpa e a colaboração é fácil. Será que dá para implementar uma interface assim no Beancount?
Eu também já entrei fundo em PTA e comecei a registrar tudo, mas baixar transações manualmente de vários bancos é muito trabalhoso
Dizem que automação é a resposta, mas queria saber como isso funciona na prática — usam APIs como Plaid, ou fazem web scrapers e parsers de PDF?
No fim, estou pagando $130 por ano pelo YNAB. Minha esposa também gosta, e tudo fica conectado automaticamente.
Talvez dê para usar a API do YNAB para fazer backup dos dados e manter um PTA em paralelo
O setor financeiro está muito atrasado nessa parte. A automação está aumentando, mas por enquanto a relação esforço/retorno ainda é ruim
Antes eu usava YNAB, mas os problemas de transações duplicadas aconteciam com frequência, então acabei desistindo.
Reiniciei tudo três vezes, mas os erros continuavam, então voltei para rastreamento manual.
Agora o PTA é bem mais estável, e eu sinto que tenho controle