2 pontos por GN⁺ 2026-01-03 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2026-01-03
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

    • O resumo “Quicken é um sistema de contabilidade de entrada simples, então o dinheiro pode aparecer ou desaparecer do nada. Em partidas dobradas, para colocar dinheiro em uma conta, você necessariamente precisa tirar de outra” realmente acerta em cheio. Vi essa frase em quicken2beancount
    • Acho interessante alguém dizer que sentiu dificuldade com partidas dobradas. Na prática, é um princípio simples: toda transação mexe em duas contas ao mesmo tempo, e a soma de débitos e créditos precisa ser igual. Não consigo imaginar como teoria dos grafos tornaria isso ainda mais simples
    • Obrigado por mencionar isso, Michael!
  • 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

    • Fiquei curioso com o que significa “tinha que reinserir os dados”. Uso Quicken desde 1992 e nunca precisei digitar tudo de novo por causa de mudança de versão
    • Eu também queria sair do Quicken, mas a dependência da Intuit é forte demais. Todas as transações desde 2000 estão presas em um formato proprietário.
      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

    • Fez a piada: “por que PTA tem a ver com associação de pais e mestres (Parent Teacher Association)?”
    • Eu sempre me confundia com a contabilização de hipoteca, e esse link traz uma boa explicação. Fiquei curioso se você realmente usou esse codebase ou só aproveitou os princípios. Não conheço Haskell, então não sei o quanto de modificação seria necessário
  • 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

    • Eu também já rastreei conta de luz em kWh, mas honestamente não serviu para muita coisa 😂
    • Eu também queria criar ferramentas de finanças pessoais com LLM, mas me preocupo em fornecer dados sensíveis. Talvez seja melhor processar tudo com um modelo local anonimizado
  • 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:

    • contabilidade: importante
    • partidas dobradas: importante
    • evitar nuvem/lock-in: importante
    • evitar formatos proprietários: importante
    • texto puro: não é importante
      Eu uso GnuCash, e embora não seja perfeito, ele se encaixa bem nessa filosofia
    • Acho que automação é essencial em contabilidade. Fazer tudo manualmente gera muitos erros, e precisão é um requisito P0
    • Eu amo e odeio o GnuCash ao mesmo tempo. A UI está velha demais. Seria ótimo se o engine fosse separado como biblioteca para poder ser usado com várias interfaces
  • 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

    • Sou matemático, programador e formado em finanças, então aprendi partidas dobradas cedo. Acho esse sistema abstrato e elegante realmente bonito.
      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
    • Partidas dobradas ficam fáceis depois que você se acostuma, mas no começo a curva de aprendizado é íngreme.
      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
    • Acho que partidas dobradas são overkill para finanças pessoais.
      Para mim, uma planilha do Excel é a ferramenta perfeita. Toda semana acrescento só os números de que preciso
    • Concordo que contabilidade parece fácil, mas é difícil de aprender.
      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

    • Eu faço algo parecido. Registro por mês saldo das contas, renda, impostos, transferências para investimento, moradia e seguro. Isso já é suficiente para entender a situação financeira
    • Eu também fazia em texto puro, mas depois de casar migrei para planilha para gestão compartilhada.
      Registro separadamente só gastos acima de $100 para acompanhar os consumos grandes
    • Eu também uso planilha para finanças domésticas, mas quando preciso administrar dinheiro de terceiros (trusts etc.), uso hledger. Porque aí preciso de partidas dobradas e conferência
    • Se você quer automação, recomendo Tiller. Ele se conecta ao banco, importa transações automaticamente para a planilha e ainda oferece modelos de orçamento
    • Eu também sou menos obsessivo, mas não gosto de serviços proprietários nem de apps pagos.
      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?

    • No comentário logo abaixo, recomendam o Fava
    • Se você usa iPhone, recomendo o app MoneyStats. É bonito, fácil de configurar e bom para usar em conjunto
  • 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

    • Eu mesmo criei parsers de extrato em PDF. Alguns escrevi diretamente com PyMuPDF, e outros fiz o Claude gerar a partir de extratos de exemplo.
      O setor financeiro está muito atrasado nessa parte. A automação está aumentando, mas por enquanto a relação esforço/retorno ainda é ruim
    • Eu também terminei de configurar isso hoje de manhã. Como eu gosto de revisar 18 contas a cada duas semanas, para mim não é um grande peso.
      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