Configurações reais de Beancount no mundo real
Introdução
O Beancount é um sistema versátil de contabilidade em texto simples, e seus usuários o moldaram para atender a uma ampla variedade de necessidades do mundo real. Nesta vitrine da comunidade, apresentamos exemplos anonimizados de como diferentes pessoas estruturam e usam seus fluxos de trabalho contábeis no Beancount – de freelancers e pequenos empresários a entusiastas de finanças pessoais. Esses exemplos destacam práticas criativas como marcar transações com metadados, automatizar atualizações do livro-razão com scripts personalizados, lidar com múltiplas moedas, fazer orçamentos e previsões, e estender o Beancount com plugins ou integrações (como a interface web Fava). O objetivo é inspirar e informar contadores, desenvolvedores e usuários com conhecimento financeiro sobre o que é possível com o sistema flexível do Beancount.
Para visões gerais atualizadas do mesmo conjunto de ferramentas, consulte Beancount v3: O que há de novo?, Plugins nativos essenciais do Beancount que você deveria conhecer, O ecossistema Beancount e A vantagem técnica do Beancount.

Interface de exemplo: Muitos usuários do Beancount dependem do Fava – um painel web de código aberto – ou do equivalente hospedado em beancount.io para visualizar suas finanças. Essas ferramentas transformam um livro-razão Beancount em relatórios e gráficos interativos. Por exemplo, esta visão de Demonstração de Resultado detalha receitas e despesas por categoria ao longo do tempo, oferecendo uma visão rápida de onde o dinheiro vem e para onde vai. Os usuários podem filtrar essa visão por tempo, conta ou tags para aprofundar em projetos ou períodos específicos. Essas visualizações ajudam a tornar os dados em texto simples mais acessíveis, permitindo que os usuários identifiquem tendências e anomalias rapidamente.
Cada configuração do Beancount é única, mas temas comuns emergem. A seguir, mergulhamos em três cenários – um freelancer, um pequeno empresário e um usuário avançado de finanças pessoais – para ver como eles organizam suas contas e aproveitam os recursos do Beancount. Todos os detalhes pessoais foram removidos ou generalizados, com foco apenas em técnicas e configurações.
Freelancer: Etiquetagem de Projetos e Rastreamento de Faturas
Nosso primeiro exemplo é um consultor freelancer que usa o Beancount como a espinha dorsal das finanças de seu negócio. O livro-razão desse freelancer está organizado para rastrear receitas e despesas por projeto e para gerenciar faturas de vários clientes. Ele configurou contas dedicadas para Contas a Receber (A/R) em Ativos para cada cliente, o que ajuda a segregar quem deve o quê. Quando ele conclui um projeto e emite uma fatura para um cliente, ele registra uma transação debitando a conta de A/R do cliente e creditando uma conta de receita. Por exemplo, uma nova fatura pode ser registrada como:
2025-08-01 * "Project X Completed" ^INV-0001
Assets:AccountsReceivable:ClientA 5,000 USD
Income:Consulting -5,000 USDAqui, a notação ^INV-0001 é um link (um recurso de metadados integrado do Beancount) usado para marcar esta transação com o número da fatura. Quando o cliente paga parte ou a totalidade daquela fatura, a transação de pagamento inclui o mesmo link ^INV-0001, o que vincula os dois lançamentos. Esse vínculo facilita alocar pagamentos a faturas específicas e ver os saldos pendentes. Como explicou um membro da comunidade, você pode usar essas tags ou links para marcar pagamentos parciais – por exemplo, um pagamento de $20 referente a uma fatura de $30 – tanto no lançamento da fatura quanto no lançamento do pagamento. Ao consultar o livro-razão por esse link de fatura, o freelancer pode ver instantaneamente quanto da fatura foi pago e o que permanece em aberto.
Além dos links, o freelancer usa intensamente tags para categorização. Tags no Beancount são rótulos prefixados com # que podem marcar transações para filtragem posterior. Esse usuário marca cada despesa que é faturável a um cliente com o código do projeto, como #ProjectX, e marca as despesas reembolsáveis com #Reimbursable. Por exemplo, se ele compra passagens aéreas para um projeto de cliente, o lançamento da despesa pode incluir #ProjectX #Reimbursable. Essa prática permite gerar relatórios por projeto ou cliente filtrando pelas tags. Após um projeto, o freelancer pode executar uma consulta para listar todas as despesas #Reimbursable daquele projeto e garantir que ele fature ao cliente cada uma delas. Um usuário do Beancount observou que marcar despesas de viagens de trabalho ajudou a identificar aquelas que não foram reembolsadas – idealmente, as despesas de uma viagem de trabalho se anulam a $0 quando todos os reembolsos do cliente são recebidos. Isso destaca como a marcação, combinada com os recursos de consulta do Beancount, fornece uma camada extra de supervisão para freelancers que gerenciam despesas faturáveis.
Para gerenciar o status de pagamentos pendentes, nosso freelancer usa uma convenção especial para recebíveis pendentes. Ele aplica a tag #UNRESOLVED a qualquer transação de fatura que ainda não tenha sido totalmente paga. O Beancount (e o Fava) não impõe essa tag, mas é um padrão estabelecido pela comunidade para marcar transações aguardando liquidação. Por exemplo, até que o Cliente A pague os $5.000 integrais, a transação da fatura acima incluiria #UNRESOLVED. Ao filtrar por essa tag, o freelancer pode listar todas as faturas abertas a qualquer momento. Uma vez que o pagamento é recebido e aplicado (a transação correspondente de A/R é lançada), ele remove ou ignora a tag #UNRESOLVED, e a conta de recebíveis daquele cliente passará a zero. Esse sistema garante que nenhuma fatura "escape pelo ralo". É essencialmente um relatório de envelhecimento de contas feito em texto simples – se um A/R permanece não zerado e marcado como não resolvido, ele precisa de atenção.
Como freelancers frequentemente lidam com múltiplos métodos de pagamento e, às vezes, múltiplas moedas, a configuração do Beancount acomoda isso perfeitamente. Em nosso exemplo, o consultor pode faturar alguns clientes em USD e outros em EUR. O manuseio de múltiplas moedas é simples no Beancount: qualquer conta pode conter múltiplas commodities (moedas são tratadas como commodities). O freelancer pode manter subcontas separadas para cada moeda (por exemplo, Assets:AccountsReceivable:ClientA:EUR vs ...:USD), ou simplesmente lançar transações na moeda apropriada sob a mesma conta. O Beancount rastreará os saldos por moeda automaticamente. Um usuário enfatizou como é bom que "o Beancount pode rastrear quantidades em qualquer moeda, seja USD ou um símbolo de ticker", tudo em um único livro-razão. Nosso freelancer aproveita isso registrando taxas de câmbio com diretivas price sempre que precisa converter moedas para relatórios. Ele pode gerar um relatório de receita convertido para sua moeda local depois de inserir taxas de câmbio periódicas ou preços de mercado.
Por fim, esse freelancer integra seu livro-razão Beancount com ferramentas práticas para agilizar seu fluxo de trabalho. Por exemplo, ele anexa cópias em PDF de cada fatura ao livro-razão usando metadados de documento. Um lançamento típico de pagamento de fatura pode parecer com:
2025-08-30 * "ClientA" "Payment for INV-0001" ^INV-0001
Assets:Bank:Checking 5,000 USD
Assets:AccountsReceivable:ClientA -5,000 USD
document: "Invoices/ClientA/INV-0001.pdf"A diretiva document do Beancount, ou metadados, permite associar arquivos a lançamentos, e o Fava exibirá um hiperlink para esses anexos. Isso significa que o freelancer (ou seu contador) pode clicar diretamente do relatório do livro-razão para ver o PDF original da fatura, garantindo fácil acesso à documentação de suporte. O freelancer também usa os relatórios do Fava para monitorar seu negócio: filtrando a Demonstração de Resultado ou o Balanço Patrimonial por cliente, ela pode ver a lucratividade por cliente e verificar se todos os projetos estão pagos. Em resumo, o sistema Beancount desse freelancer demonstra uso intenso de marcação e vinculação para gerenciar contabilidade baseada em projetos. Ele transforma um livro-razão em texto simples em uma ferramenta robusta de contabilidade freelance, com visibilidade clara das despesas do projeto, da receita em múltiplas moedas e dos status das faturas.
Práticas-chave na configuração do Freelancer: Usar tags para agrupar transações por projeto ou finalidade, vincular faturas e pagamentos com IDs únicos, marcar recebíveis pendentes com uma tag #UNRESOLVED, anexar documentos de faturas aos lançamentos do livro-razão para referência, e aproveitar o suporte a múltiplas moedas do Beancount para faturar clientes internacionais sem complicações. Tudo isso é alcançado com lançamentos em texto simples mais algumas ferramentas auxiliares, mostrando o poder dos metadados no Beancount.
Pequenas Empresas: Automação e Contabilidade Multimoeda
A seguir, examinamos um pequeno empresário – especificamente um fundador de startup – que adotou o Beancount para administrar os livros da empresa. Pequenas empresas têm necessidades semelhantes às dos freelancers (faturas, despesas, múltiplas moedas), mas frequentemente em maior escala e com maior ênfase em automação, consistência e colaboração. Nesse caso, o fundador era tecnicamente habilidoso e construiu um fluxo de trabalho Beancount altamente automatizado para minimizar a contabilidade manual. Depois de avaliar softwares contábeis tradicionais como o QuickBooks, ele optou pela abordagem em texto simples do Beancount para manter controle total dos dados. Ao longo de alguns anos, ele desenvolveu iterativamente ferramentas personalizadas para alcançar um processo contábil 95% automatizado.
Importações e reconciliação automatizadas: Um dos primeiros desafios foi importar transações de várias fontes (contas bancárias, cartões de crédito, processadores de pagamento) para o livro-razão. Em vez de digitar cada transação, esse usuário configurou scripts de importação para buscar e traduzir dados para o formato Beancount. Ele escreveu importadores personalizados em Python para o formato CSV ou API de cada instituição financeira, de modo que, com um comando, ele pode puxar novas transações e anexá-las ao livro-razão. Por exemplo, usando importadores beangulp, o fundador pode executar um script que varre uma pasta de downloads em busca de novos extratos e os gera como lançamentos Beancount. Outro usuário, Rhyd Lewis, descreveu uma configuração semelhante em que ele tem scripts importadores separados para cada banco e pode invocá-los por meio de um comando simples (usando um Justfile) para atualizar seu livro-razão. Nosso pequeno empresário faz o mesmo – todas as transações bancárias, compras no cartão de crédito e até transações de PayPal ou Stripe são automaticamente obtidas e adicionadas aos livros, categorizadas com as contas apropriadas.
Para garantir a integridade dos dados mesmo quando esses lançamentos são adicionados automaticamente, ele valida o livro-razão antes de cada commit e usa plugins do Beancount. Por exemplo, o plugin beancount.plugins.noduplicates é habilitado para evitar importar acidentalmente a mesma transação duas vezes, e beancount.plugins.nounused sinaliza quaisquer contas que não tenham lançamentos (útil para limpar contas obsoletas). Recomendamos bea check para essa etapa de validação. O fundador também usa um formatador da comunidade (como o beancount-black) para manter o arquivo do livro-razão com estilo consistente. Isso importa porque, com muitas edições automatizadas, ter um estilo uniforme facilita os diffs e as auditorias. De fato, o fundador mantém o livro-razão em um repositório Git, tratando as atualizações do livro-razão como alterações de código. Cada novo lote de transações importadas se torna um commit no Git, e ele pode revisar os diffs para ver o que mudou. Em uma captura de tela, ele mostra um histórico do Git em que uma transação de cartão de crédito para "Costco" passa de um estado pendente para compensada no livro-razão, tudo sem intervenção manual. O controle de versão fornece uma trilha de auditoria: ele pode ver exatamente quando uma transação foi adicionada ou modificada e até reverter alterações se algo foi importado incorretamente. Este é um ótimo exemplo de trazer as melhores práticas de desenvolvimento de software (como o controle de código-fonte) para os registros contábeis.
Múltiplas moedas e transações internacionais: Pequenas empresas frequentemente transacionam em múltiplas moedas – por exemplo, uma startup pode ter despesas em USD, mas também receber pagamentos em EUR ou manter uma conta bancária em GBP. Nossa empresa da vitrine usa os recursos multimoeda do Beancount para consolidar tudo isso em um único livro-razão. Eles abriram contas separadas para cada moeda (por exemplo, Assets:Bank:Checking:USD e Assets:Bank:Checking:EUR), que é uma abordagem comum. No entanto, mesmo que moedas diferentes compartilhem uma conta, o Beancount rastreará o saldo de cada moeda separadamente e exigirá que as transações fechem por moeda. O fundador executa frequentemente relatórios de valoração para ver os saldos totais da empresa convertidos para a moeda base. Como o Beancount suporta consultas de preços, ele configurou feeds diários de preços para taxas de câmbio (e preços de ações para quaisquer investimentos) usando um script agendado de busca de cotações. O resultado é que, a qualquer momento, ele pode gerar um balanço patrimonial, digamos, em USD que inclui a conta em EUR convertida pela taxa mais recente. Membros da comunidade apontam que lidar com múltiplas moedas na contabilidade estilo livro-razão é simples – você apenas adiciona transações na moeda em questão e registra taxas de câmbio conforme necessário. Por exemplo, um usuário compartilhou um exemplo de conversão de USD para EUR para CAD por meio de contas intermediárias como forma de gerenciar conversões de moeda no Beancount. No nosso caso, a pequena empresa não necessariamente converte moedas nas transações (elas as mantêm na moeda nativa), mas usa relatórios para consolidar. Essa flexibilidade foi crucial à medida que a startup se expandiu globalmente.
Scripts e extensões personalizados: Nem tudo o que o fundador precisava estava disponível de imediato, então ele estendeu o Beancount com plugins personalizados. Com o tempo, ele acabou escrevendo uma biblioteca de parsing, uma ferramenta de formatação e um importador de transações baseado em regras, liberando muitos desses como pacotes de código aberto. Por exemplo, ele construiu um motor de importação baseado em regras que usa uma configuração YAML para categorizar transações automaticamente. Um trecho dessa configuração mostra como beneficiários ou descrições específicas (como "Comcast" ou "PG&E") são mapeados para certas contas de despesas e narrativas, de modo que, quando aparecem em um feed bancário, o lançamento Beancount correto é gerado sem edição manual. Isso é essencialmente uma automação personalizada para aplicar regras contábeis (para utilidades, assinaturas, etc.) em tempo real. Outro plugin garante que o livro-razão permaneça sempre balanceado e formatado. Todas essas ferramentas rodam como parte do fluxo de trabalho do fundador sempre que novos dados são ingeridos. O resultado é um livro-razão que "se atualiza sozinho" com intervenção mínima, o que o fundador diz lhe trazer "pura alegria" como um desenvolvedor obcecado por automação.
Segurança e acessibilidade também eram preocupações. O fundador queria que sua equipe financeira (e até seu cônjuge, atuando como supervisor) pudesse visualizar os livros facilmente. Para isso, ele configurou uma implantação privada do Fava na nuvem. Toda vez que ele envia um novo commit do livro-razão para o repositório Git privado, um pipeline de CI (usando GitHub Actions e AWS Elastic Beanstalk) implanta uma instância atualizada do Fava. A interface web fica atrás de uma senha (usando um proxy Nginx com autenticação básica), então apenas pessoas autorizadas podem vê-la. Dessa forma, as demonstrações financeiras mais recentes estão sempre disponíveis por meio de um painel no navegador, sem precisar instalar nada localmente. O diagrama de arquitetura abaixo ilustra essa configuração: o arquivo Beancount e a configuração necessária são empacotados em uma imagem Docker junto com o Fava, e servidos na AWS, com o Cloudflare na frente por segurança.
flowchart LR
A[Edit ledger locally] --> B[Push to private Git repo]
B --> C[CI builds Docker image<br/>Fava + Nginx basic auth]
C --> D[Deploy to AWS<br/>Elastic Beanstalk]
D --> E[Cloudflare proxy]
E --> F[Owner & team view<br/>reports in browser]Automatizando o Beancount na nuvem: o usuário atualiza o arquivo do livro-razão localmente e envia para o Git; um contêiner Docker (incluindo Fava e Nginx para autenticação) é construído e implantado em um servidor AWS Beanstalk, e o Cloudflare atua como proxy. O resultado é um portal web seguro onde os dados financeiros da pequena empresa podem ser acessados de qualquer lugar (pelo proprietário ou pela equipe) em tempo real. Essa configuração avançada demonstra como uma pequena empresa pode integrar o Beancount com ferramentas modernas de nuvem para obter conveniência sem abrir mão da propriedade dos dados.
No uso diário, o foco do pequeno empresário está no tratamento de exceções em vez de na entrada de dados. A cada mês, ele revisa brevemente as transações importadas automaticamente (usando diffs do Git ou a visão de diário do Fava) para identificar quaisquer lançamentos não categorizados ou incorretos. Ele também usa as asserções de saldo do Beancount para reconciliar contas. Por exemplo, após inserir todas as transações de junho, ele pode adicionar uma verificação de saldo para confirmar que o saldo final da conta bancária corresponde ao extrato; se não, o Beancount apresentará erro, indicando que algo está faltando ou foi inserido incorretamente. Isso garante que os livros permaneçam precisos.
Práticas-chave na configuração da Pequena Empresa: Automação intensa por meio de importadores e scripts personalizados (tornando o livro-razão "95% automático"), uso de controle de versão para trilhas de auditoria e colaboração, contabilidade multimoeda com feeds de preços para valoração, e implantação do Fava para acesso fácil e compartilhável aos relatórios financeiros. O cenário da pequena empresa mostra até onde o Beancount pode chegar com esforço de engenharia – transformando a contabilidade em um pipeline amplamente automatizado, preservando transparência e flexibilidade. Mesmo que alguém não seja programador, muitos desses benefícios podem ser alcançados usando plugins da comunidade (para formatação, detecção de duplicatas, etc.) e adotando o fluxo de trabalho em texto simples, que incentiva revisões e backups frequentes.
Entusiasta de Finanças Pessoais: Orçamento e Análise Personalizada
Nossa vitrine final é um entusiasta de finanças pessoais – alguém que usa o Beancount para gerenciar as finanças domésticas e os investimentos com alto nível de detalhe. Esse usuário trata suas finanças pessoais com o rigor de um contador e a curiosidade de um analista de dados. O resultado é um livro-razão Beancount que não apenas rastreia cada centavo, mas também serve de base para orçamentos, previsões e experimentos analíticos.
Organizando o livro-razão pessoal: Muitos indivíduos começam com um único arquivo Beancount para todas as suas contas, e esse entusiasta não é diferente. Ele mantém um livro-razão mestre (por exemplo, main.beancount) que inclui todas as contas (contas bancárias, cartões de crédito, empréstimos, carteiras de investimento, etc.) e transações. Com o tempo, ele introduziu alguma estrutura dividindo seções – por exemplo, ele tem um arquivo para abertura/fechamento de contas e arquivos separados para transações anuais – que são incluídos no arquivo principal. Essa organização modular facilita a navegação por anos de dados (pode-se arquivar anos antigos em arquivos separados) enquanto ainda é logicamente um único livro-razão. Outro usuário pessoal no fórum da comunidade descreveu um layout semelhante: um arquivo principal que inclui outros por categoria (por exemplo, Income.beancount, Expenses.beancount, Investments.beancount). Nosso entusiasta mantém a simplicidade por enquanto: um arquivo sincronizado entre dispositivos.
Falando em sincronização, por se tratar de finanças pessoais, esse usuário quer capturar transações onde quer que esteja. Ele usa um aplicativo móvel chamado Beancount Mobile para adicionar lançamentos rapidamente em movimento (por exemplo, registrar uma despesa em dinheiro direto na loja). O arquivo do livro-razão é compartilhado via sincronização em nuvem (Syncthing, neste caso), para que seu telefone, laptop e um VPS (servidor) tenham todos a cópia mais recente. No computador, ele prefere usar o Emacs com beancount-mode para edição confortável com realce de sintaxe. Essa configuração garante que, esteja ele em sua mesa ou na rua, possa registrar transações imediatamente e evitar esquecer qualquer coisa. É um ótimo exemplo de adaptação de ferramentas tecnológicas para conveniência pessoal – efetivamente construindo uma alternativa auto-hospedada aos aplicativos comerciais de orçamento.
Tags e metadados para rastreamento granular: Esse usuário aproveita as tags para adicionar uma segunda dimensão aos seus dados além do plano de contas. Para categorias regulares de orçamento, as contas bastam (ele tem contas como Expenses:Groceries, Expenses:Rent, etc.), mas para temas transversais como eventos ou metas, ele usa tags. Por exemplo, ele marca todas as transações relacionadas ao seu projeto de reforma da casa com #HomeReno, seja comprando madeira em uma loja de ferragens (despesa) ou recebendo um reembolso de um fabricante (receita). Assim, ele pode gerar um relatório do custo total do projeto facilmente, sem que essas despesas fiquem isoladas em contas diferentes. Um usuário do Reddit demonstrou essa abordagem marcando despesas como #garage-improvement ou #lighting-improvement para projetos domésticos, tornando trivial filtrá-las e somá-las por meio das consultas do Beancount. Nosso entusiasta faz o mesmo para viagens (#ItalyTrip2025), compras importantes e eventos pontuais.
Metadados (pares chave-valor nas transações) também são usados para alguns propósitos específicos. Por exemplo, ele adiciona um metadado location: ... a grandes despesas para rastrear onde gastou o dinheiro, ou um note: ... para contexto adicional além do beneficiário e da narrativa. Em alguns casos, ele até criou campos de metadados personalizados para ajudar com previsões. Um exemplo é adicionar budget: X e frequency: monthly a certas despesas recorrentes – uma ideia inspirada em uma discussão na lista de e-mails do Beancount, em que um usuário armazenava projeções de orçamento em metadados para cada despesa. Esses campos de metadados não afetam o núcleo do Beancount, mas o entusiasta escreveu um pequeno script Python que os lê e compara os gastos reais com o orçamento projetado. Isso é uma alternativa ao uso dos orçamentos integrados do Fava (descritos abaixo), mostrando como os metadados podem ser moldados à vontade do usuário. Como observou o criador do Beancount, os metadados "estão lá apenas para você [usar em scripts personalizados] – o Beancount os analisa, mas os ignora" por si só. Em resumo, esse usuário não tem medo de estender o livro-razão com informações extras para auxiliar sua análise pessoal.
Orçamento com Beancount: Um dos principais objetivos desse usuário é manter um orçamento mensal. Ele usava anteriormente um aplicativo de orçamento (YNAB) e queria replicar alguns de seus conceitos de orçamento por envelope. Existem algumas maneiras de fazer orçamento no Beancount, mas a mais fácil é usar as diretivas de orçamento do Fava. Nosso entusiasta adiciona lançamentos budget no livro-razão assim:
2025-01-01 custom "budget" Expenses:Groceries "monthly" 500 USD
2025-01-01 custom "budget" Expenses:DiningOut "monthly" 200 USD
2025-01-01 custom "budget" Expenses:Travel "yearly" 3000 USDCada linha define um orçamento para uma conta (categoria) ao longo de um período. O Fava então exibe barras de orçamento vs. real na interface web, permitindo ao usuário ver, por exemplo, que gastou 480 USD em Mercearia neste mês dos 500 orçados, e talvez 220 em Restaurantes (acima do orçamento). O entusiasta verifica regularmente os relatórios de Demonstração de Resultado e Despesas do Fava, que mostram tanto os totais mensais quanto as metas de orçamento. O Fava convenientemente agrega os orçamentos diários/semanais nos intervalos de tempo apropriados. Ao usar a interface do Fava para isso, o usuário não precisa de uma planilha separada para orçamento; está tudo integrado. (Ele também experimentou um sistema de "envelope" mais automatizado, movendo fundos para contas fictícias no início de cada mês, como sugerido nos fóruns, mas achou as diretivas de orçamento personalizadas mais simples de manter.)
Para previsões, além dos orçamentos, ele fica de olho nas contas futuras. Alguns membros da comunidade criaram plugins para gerar transações futuras para assinaturas ou cronogramas de amortização de empréstimos, mas esse usuário optou por uma abordagem mais simples: ele mantém uma seção separada do livro-razão com transações com data futura para itens conhecidos (como o aluguel do próximo mês, ou um próximo pagamento anual de seguro). Essas permanecem no livro-razão, mas não afetam os saldos de hoje, e, quando a data chega e a transação se torna atual, serve como um lembrete (e ele ajustará o valor, se necessário, para corresponder à cobrança real). É um pouco improvisado, mas funciona para prever o fluxo de caixa sem ferramentas complexas.
Rastreamento de investimentos e contabilidade multimoeda: Como entusiasta de finanças, esse usuário também usa o Beancount para consolidar contas de investimento – ações, fundos mútuos e criptomoedas – junto com contas de caixa. Ele tem contas de corretagem cujas participações (por exemplo, ações da AAPL, GOOG, etc.) são registradas no Beancount como commodities. Por exemplo, comprar 10 ações da Apple seria um lançamento que credita o caixa da corretora e debita uma conta de ativo com 10 AAPL como a quantidade de commodity. A capacidade do Beancount de lidar com qualquer commodity é muito útil aqui; pode-se misturar moedas e ações livremente. "O Beancount pode rastrear quantidades em qualquer moeda, seja USD ou um símbolo de ticker", como apontou um usuário, o que foi uma grande melhoria em relação a aplicativos de finanças pessoais que muitas vezes não suportam bem posições em ações. Nosso entusiasta usa um cron job noturno para buscar os preços de mercado mais recentes de todos os seus títulos e moedas estrangeiras. Todas as noites às 4h, um script busca preços (do Yahoo Finance ou outra fonte) e anexa registros de preços ao livro-razão para aquele dia. Assim, na próxima vez que ele abrir o Fava ou executar um relatório, pode ver valores de portfólio atualizados e até o desempenho dos investimentos ao longo do tempo. Todo o patrimônio líquido, abrangendo contas bancárias, fundos de aposentadoria e carteiras de criptomoedas, está disponível em uma visão unificada. Isso é um sonho para um investidor orientado por dados: sem necessidade de fazer login em várias plataformas para ver o quadro completo. Ele essencialmente construiu um painel financeiro pessoal alimentado pelo Beancount.
Análise e integração: O que realmente diferencia esse usuário avançado de finanças pessoais é como ele analisa os dados depois que estão no Beancount. Com todas as transações em um banco de dados SQLite (o Beancount pode consultar dados por meio de sua linguagem de consulta integrada, que é semelhante a SQL), o usuário pode fazer análises personalizadas. Ele escreveu scripts Python para responder a perguntas como "Qual é a média móvel de 3 meses dos meus gastos com mercearia?" ou "Como os gastos deste ano com utilidades se comparam aos do ano passado?" Um script consulta o livro-razão por tags específicas e envia os resultados para um dataframe do Pandas para cálculos adicionais. Como o livro-razão é texto simples, ele também usou notebooks Jupyter para experimentar diferentes visualizações (além do que o Fava oferece). Por exemplo, ele produziu um gráfico de barras personalizado da taxa de poupança mensal usando Matplotlib, agregando dados do Beancount em Python. Esse tipo de análise ad-hoc só é possível porque o Beancount mantém os dados acessíveis e legíveis por máquina. Como disse um usuário, extrair dados é trivial – "Eu tenho um script Python que extrai dados do Beancount usando a linguagem de consulta, e então uso um dataframe do pandas para preparar os dados em um relatório". Nosso entusiasta tem um repositório de pequenos scripts como esse que ele executa para sua revisão financeira anual.
É claro que nem tudo exige programação – na maior parte do tempo, ele conta com os gráficos integrados do Fava. O Fava oferece um gráfico de linha do patrimônio líquido, uma tendência de receitas vs. despesas e até um detalhamento em mapa de árvore (como mostrado anteriormente), todos a apenas um clique. O usuário aprecia que o histórico completo de suas finanças desde 2018 seja consultável e auditável. Por exemplo, se ele se pergunta "quanto gastei em reparos de carro nos últimos 5 anos", pode escrever uma consulta rápida ou filtrar no Fava para obter a resposta, em vez de vasculhar recibos. Esse empoderamento é exatamente o que o atraiu ao Beancount: propriedade total dos dados e flexibilidade infinita na análise. Como bônus, o livro-razão em texto simples é à prova de futuro – pode ser versionado, migrado ou até analisado por outras ferramentas, se necessário. Diferentemente de um aplicativo de código fechado, não há risco de perder o acesso ao seu histórico financeiro.
Práticas-chave na configuração Pessoal: Utilizar ferramentas móveis e de desktop para entrada de dados conveniente, usar tags e metadados personalizados para rastrear eventos da vida e agrupamentos entre categorias, implementar orçamentos por meio das diretivas budget do Fava para metas contínuas de gastos, rastrear investimentos e múltiplas moedas no mesmo livro-razão (com atualizações automáticas de preços), e realizar análises personalizadas consultando diretamente os dados do livro-razão. Este caso mostra que, com um pouco de configuração, até entusiastas de finanças pessoais podem alcançar um nível de insight e controle normalmente reservado às empresas – tudo isso mantendo as coisas divertidas e envolventes para um usuário com conhecimento técnico.
Para o equivalente hospedado dos scripts de busca de preços nesses exemplos, use Live Prices. Escolha ativos compatíveis e uma moeda de valoração, e então adicione os includes gerados ao seu livro-razão hospedado. Configurações locais do Fava ainda precisam de arquivos de preços locais. Os preços automáticos atualizam os dados de valoração; eles não alteram as transações ou os custos de lote nessas configurações.
Conclusão
Ao longo desses exemplos da comunidade, um tema claro é que a flexibilidade do Beancount possibilita um sistema contábil altamente personalizado. Usuários avançados da comunidade aproveitaram arquivos de texto simples para construir soluções que rivalizam com softwares comerciais em capacidade, mas sob medida para seus fluxos de trabalho. Freelancers marcam e vinculam lançamentos para gerenciar projetos de clientes e faturas com facilidade. Pequenos empresários automatizam tarefas tediosas de contabilidade e integram o Beancount com infraestrutura moderna para finanças sempre atualizadas. Entusiastas de finanças pessoais usam o livro-razão como fonte única de verdade para orçamento, investimento e tomada de decisão, aumentando-o com tags e ferramentas para responder a praticamente qualquer pergunta sobre seu dinheiro. Tudo isso é alcançado mantendo as vantagens centrais da contabilidade em texto simples: transparência, auditabilidade e controle sobre os próprios dados.
A comunidade do Beancount também produziu um rico ecossistema de plugins e integrações. De modos de editor e aplicativos móveis para entrada, à interface web Fava para visualização, a inúmeros importadores e utilitários no GitHub, há recursos para atender a quase todas as necessidades. Os usuários compartilham frequentemente suas configurações de livro-razão em fóruns e blogs, para que outros possam aprender e adotar as melhores práticas. É importante notar que informações sensíveis podem ser mantidas privadas (ou facilmente censuradas para compartilhamento) devido ao formato legível por humanos – como fizemos nesta vitrine. Os exemplos acima demonstram que, seja você um desenvolvedor freelancer, um fundador de startup ou um nerd de finanças pessoais, você pode moldar o Beancount à sua vontade. Ao usar tags e metadados de forma criativa, automatizar onde possível, lidar com transações em múltiplas moedas, planejar com orçamentos e estender por meio de plugins, a comunidade continua a ampliar os limites do que é possível em texto simples. O resultado são livros-razão contábeis de nível profissional que também são envolventes de manter, dando aos usuários tanto clareza quanto controle sobre suas finanças.