3 pontos por GN⁺ 2024-09-17 | 1 comentários | Compartilhar no WhatsApp
  • Plain Text Accounting (PTA) é uma abordagem que registra dados contábeis em arquivos de texto simples e os processa com ferramentas amigáveis à linha de comando como Ledger, hledger e Beancount, e este site é um portal que reúne materiais relacionados em um só lugar
  • A atividade da comunidade está distribuída entre Matrix/IRC, fóruns, Reddit, Lemmy, Hacker News, Mastodon, X e Bluesky, permitindo acompanhar perguntas, notícias e conversas sobre projetos por vários canais
  • Os materiais de aprendizado estão organizados em comparação de apps, documentação oficial, fundamentos de contabilidade, guias introdutórios, cheat sheets, cookbook, FAQ, slides e vídeos, permitindo que mesmo quem está começando com PTA avance passo a passo
  • O ecossistema de apps oferece várias implementações e matrizes de recursos centradas em Ledger, Beancount e hledger, e as três principais ferramentas são baseadas respectivamente em C++/Python/Haskell, com histórico de lançamentos em 2025~2026
  • Há integrações para importação e conversão, plugins de editor, faturas, consulta de preços, relatórios, registro de tempo, UI, fluxo de trabalho e bibliotecas, permitindo conectar dados de contabilidade em texto simples a diversos ambientes de trabalho

Conceito de PTA e o papel do plaintextaccounting.org

  • Plain Text Accounting é uma forma de fazer escrituração e contabilidade usando arquivos de texto simples e softwares eficientes e amigáveis à linha de comando como Ledger, hledger e Beancount
  • O plaintextaccounting.org funciona como um portal para as ferramentas, documentação e casos práticos da comunidade PTA
  • É possível receber atualizações do repositório do site, e também há relatórios financeiros e orientações para apoio

Comunidade e canais de discussão

  • As conversas em tempo real seguem pelo Matrix em #plaintextaccounting, pelo espaço Matrix do plaintextaccounting e pelo canal IRC #plaintextaccounting na Libera Chat
  • Discussões e notícias estão distribuídas por vários canais públicos
  • No Stack Exchange, são fornecidos links de busca e tags como ledger-cli e hledger
  • Também há links para mailing lists e chats de cada projeto, além do This Week In Hledger

Documentação e materiais de aprendizado

  • Os materiais de comparação de apps incluem lista de apps PTA, matriz de recursos, FAQ “qual app PTA devo escolher?” e Syntax Quick Reference
  • A documentação oficial dos apps inclui Ledger, hledger, Beancount, rustledger, Ledger(Go), Tackler e pta
  • Os materiais de fundamentos de contabilidade incluem PTA FAQ, Accounting basics/links do hledger, Double-Entry Counting Method do Beancount e “Accounting for Computer Scientists”, entre outros
  • Os materiais introdutórios estão divididos por ponto de partida
  • Cheat sheets, cookbook, FAQ, slides e vídeos também estão organizados em seções separadas, e a seção de vídeos traz uma observação de que é difícil encontrar vídeos sobre PTA no YouTube

Principais apps de PTA e comparação de recursos

  • Ao começar com PTA, é possível experimentar um ou mais apps listados no site, e em geral a migração de dados entre apps é possível
  • A lista atual de apps principais reúne vários projetos
    • Ledger: C++, iniciado em 2003, último lançamento em 2025, cerca de 245 committers, cerca de 5.9k stars
    • Beancount: Python, iniciado em 2008, último lançamento em 2026, cerca de 103 committers, cerca de 5.5k stars
    • hledger: Haskell, iniciado em 2007, último lançamento em 2026, cerca de 194 committers, cerca de 4.4k stars
    • Transity, Ledger(Go), Abandon, zhang, Tackler, rustledger, knut, acc e ledg também estão incluídos na lista atual
  • Projetos antigos ou inativos são organizados separadamente, como placc, budget-cli, mynt, awk-pta, pta, blossom, .Net Ledger, monescript, Penny, UMM e cl-ledger
  • A matriz de recursos de Ledger, hledger e Beancount foi atualizada com base em 2024-09 e compara interface do usuário, instalação, ajuda, formatos de entrada e saída, comandos, configuração, extensibilidade, nomes de contas, orçamento, gráficos, consulta de preços, consultas e validação
  • As diferenças mais importantes se concentram em itens que afetam diretamente a escolha da ferramenta
    • Os CLIs incluem ledger no Ledger, hledger no hledger e beanquery no Beancount
    • Facilidade de instalação e configuração aparece como yes para Ledger/hledger e no para Beancount
    • O hledger oferece formatos de saída text/html/csv/tsv/fods/beancount/sql/json
    • A validação do Beancount é marcada como sempre rigorosa, enquanto Ledger e hledger aparecem como configuráveis

Ecossistema de software

  • A seção de AI inclui o agente de IA local-first e multimodelo accountant24, que usa hledger, além de um artigo de configuração que usa Claude Code como camada de agentes com hledger e um vault do Obsidian
  • Como distribuições e configurações alternativas, são listados Full-fledged hledger, hledger-flow, Lazy Beancount, hledger-youtube-business, rtrLEDGER e docker-finance
  • Conversão e importação de dados ocupam uma parte importante, incluindo além da conversão CSV nativa de Ledger e hledger, as ferramentas de importação do Beancount v2, banks2ledger, beancount-import, beancount2ledger, hledger2beancount, ledger2beancount, plaid2text e outras
    • Ferramentas para migrar de GnuCash, Intuit/QuickBooks/QIF, KMyMoney e YNAB para *ledger ou Beancount também estão organizadas em subseções separadas
  • Ferramentas de geração de dados são usadas para criar transações de preço, depreciação, juros, transações recorrentes e postings de ganhos/perdas de capital
  • Os plugins de editor são divididos para Emacs, JetBrains IDE, Nano, Sublime, TextMate, Vim e VS Code
    • Ex.: ledger-mode, beancount-mode, hledger-mode, vim-ledger, vim-beancount, hledger-vscode, vscode-beancount
  • As ferramentas de formatação listadas incluem beancount-black, beancount-black web app e hledger-fmt
  • Entre as ferramentas de faturas, é apresentado o utilitário Go kairos, que gera faturas a partir de arquivos timedot do hledger

UI, relatórios, fluxo de trabalho e bibliotecas

  • As ferramentas de consulta de preços incluem bean-price do Beancount, hledger-stockquotes, ledger-get-prices, pricehist e utilitários de consulta de ações e câmbio baseados no Yahoo Finance
  • As ferramentas de relatório se expandem para orçamento, análise de ativos, relatórios de diferença, taxa interna de retorno, gráficos, Sankey, saída em PDF e cálculo de ganhos de capital
  • As ferramentas de registro de tempo incluem org, hook do Taskwarrior, CSV do Toggl, conversão de timeclock e exemplos de registro de tempo com base em hledger
  • As UIs de terminal incluem hledger add, hledger-ui, hledger-iadd, bean-add, ledger xact, puffin e regdel, dando suporte à entrada, consulta e edição de transações
  • GUI, web e interfaces móveis também são ligadas como ferramentas separadas
    • Web: fava, hledger-web, Paisa, BeanHub
    • Mobile: Beancount Mobile CE, beancount-mobile, NanoLedger, cashier, cone, MoLe
    • GUI: fruit-credits, Ledgera, Prudent, Surebeans e outros
  • A seção de fluxo de trabalho trata de configurações para gerar journals do hledger a partir de CSV ou rastrear e reportar finanças tradicionais e de cripto com base em Docker
  • A seção de bibliotecas reúne componentes de desenvolvimento para analisar, consultar, gerar relatórios e integrar arquivos PTA, como parser do Beancount, BeanHub API, hledger-lib, hledger-web JSON API, node-hledger e pyhledger

1 comentários

 
GN⁺ 2024-09-17
Opiniões no Hacker News
  • Sistemas que exigem classificação rigorosa imediata não servem para algumas pessoas. Em uma empresa onde trabalhei antes, usávamos um fluxo em duas etapas: primeiro anotávamos rapidamente no iPhone Notes algo como -50 Alice tools, +20 Bob returned loan, e depois um script fazia o parsing de data, palavras-chave, contraparte e itens internos de análise, transformando tudo em um template de contabilidade por partidas dobradas
    Os itens que o script não conseguia entender eram classificados manualmente e, se necessário, adicionados a uma lista de regras; também mantínhamos uma lista de correspondências por pessoa para que Alice e Bob não precisassem usar o mesmo vocabulário
    É difícil imaginar que, toda vez que dinheiro muda de mãos, alguém que está em uma fila, dirigindo ou no meio de uma conversa vá preencher sempre um formato como Cat1:cat2:cat3. No fim, é provável que a pessoa volte a usar notas curtas ou chat, ou tente preencher “de memória” não no fim do dia, mas talvez no fim de semana

    • Isso também acaba soando como contabilidade em texto puro. Eu uso algo quase igual: em vez de digitar diretamente no arquivo de razão, coloco no KMyMoney e depois converto para um arquivo ledger com um script
      Com ferramentas baseadas em texto, dá para montar livremente o fluxo que quiser, como conectar um script que recebe notas do iPhone e as transforma no formato ledger; por isso, soa um pouco estranho ver isso como uma reclamação
    • Nós também não digitamos diretamente nos arquivos ledger; em vez de converter notas em formato livre, escrevemos a conta a ser aplicada no campo de memorando dos apps do banco e do app de relatórios de despesas Zoho
      A cada trimestre, baixamos CSVs das contas bancárias, dos cartões de crédito e do Zoho, e um script Ruby olha o campo de memorando e converte para arquivos ledger. O script e a saída precisam de pequenos ajustes, mas mais de 95% fica automatizado
      Como bônus, também adicionamos ao arquivo ledger verificações de consistência, como conferir se bate com o saldo recebido do banco e se os lançamentos estão dentro do período atual
  • Uso ledger-cli há quase 20 anos, desde que comecei a trabalhar por conta própria, e embora não seja perfeito, estou muito satisfeito. Como tudo é texto puro, consigo processar com scripts, ler no VIM e extrair dados facilmente
    O arquivo ledger de uma das empresas que administro hoje é um texto puro de 2 MB com transações desde 2016. Não vi muito valor em granular demais as contas/classificações, mas ele foi uma ferramenta indispensável para o acompanhamento geral
    Também foi divertido aprender a contabilidade por partidas dobradas usada por ferramentas como o ledger; olhando para trás, não foi difícil e parece uma habilidade útil para a vida toda

    • Ainda não uso esse tipo de ferramenta, mas este texto apareceu no momento perfeito, porque estou tentando reconciliar alguns lançamentos que o QuickBooks e o banco deixaram passar
      Como estratégia de contas/classificação, uso uma estrutura alinhada às categorias de despesas que a Receita Federal do Canadá exige na declaração de imposto. No começo, criei classificações lógicas, como custos de hospedagem e custos de protótipos/fabricação, mas depois de alguns anos remapeando tudo para as categorias da CRA, percebi que alinhar tudo às categorias fiscais desde o início torna a declaração de fim de ano muito mais simples
    • Quando vendi uma casa, a empresa de escrow enviou um cheque de reembolso de cerca de US$ 3.000 no fechamento da liquidação, mas eu nunca recebi esse cheque. Só descobri isso 5 anos depois, quando comecei a usar ledger-cli
    • Mais um voto para o ledger. Foi a melhor coisa que já usei até agora, e o fato de ser scriptável é enorme. Desde que comecei a usar, há mais de 2 anos, meus impostos ficaram corretos
    • Pensando melhor, a maior coisa de que sinto falta é a ausência de anexos, uma limitação geral do texto puro. Criei um sistema pessoal que referencia arquivos específicos e até um app para Mac que, ao arrastar um arquivo para uma transação, copia o arquivo para uma pasta designada e adiciona uma tag à transação
      Se os dados estivessem em SQLite, teria sido muito mais fácil implementar, mas aí eu perderia a vantagem de editar diretamente em um editor de texto
  • Graças aos LLMs, ficou muito mais fácil manter contabilidade em texto puro de forma consistente. Isso ajuda especialmente a importar extratos bancários para o hledger evitando entrada manual
    Uso um arquivo JSON que mapeia transações bancárias para contas hledger; se aparece uma transação sem novo mapeamento, um script Python gera um prompt para o Claude. O Claude olha a lista de contas, sugere o mapeamento da nova transação e, com base nisso, retorna o lançamento do hledger
    Depois, outro script imprime de forma limpa os lançamentos hledger das transações bancárias daquele mês, e eu só ajusto por alguns minutos antes de finalizar. Até as instruções de mapeamento, que antes virariam um monte frágil de regexes e condicionais, podem ser escritas em linguagem natural

    • Você acha que LLM não é frágil? E enviar informações bancárias para a Anthropic também é bem ousado
  • Gostei do processo de aprendizado usando Beancount, de escrever ferramentas de importação de dados e da experiência de mexer diretamente com contabilidade. Mas faz quase 1 ano desde a última vez que importei dados; eu pretendia fazer isso todo mês, mas mesmo com bastante automação ainda leva 30–60 minutos e dá trabalho

    • Gostaria que os bancos não dificultassem ativamente a exportação de dados. No passado, fiz engenharia reversa do processo de login com OCR e criei scripts para limpar lançamentos incorretos, mas o custo de manutenção era alto demais
      Quando passou a exigir também confirmação pelo celular, simplesmente desisti
    • Tive exatamente a mesma experiência com o GnuCash. Quando faço toda semana, tudo bem; perder de 1 a 3 semanas ainda é administrável, mas se passa disso, o esforço para recuperar o atraso cresce como uma bola de neve
      Também faz cerca de 1 ano que não importo dados, e para retomar só consigo imaginar dividir em pedaços pequenos, processando um mês por vez ao longo de vários dias
    • Se você conseguir tolerar um certo desconforto, vale a pena olhar o Plaid. Havia um tier de testes suficiente para uso pessoal, com até 100 contas conectadas
      https://plaid.com/
    • Com teller.io, a configuração costuma ser muito mais fácil do que com o Plaid. Uso para sincronizar extratos bancários e de cartão de crédito do Chase com o Google Sheets
  • Uso ledger para a escrituração e contabilidade pessoais e de várias LLCs. Se você tem familiaridade com terminal, lida bem com CLI, usa com frequência vim ou emacs, noções básicas de sed/awk e scripts em bash/python/perl/ruby, é bem provável que aprender ledger e contabilidade de partidas dobradas e migrar para ele seja muito mais satisfatório do que o método que você usa hoje
    Para importar transações rapidamente, o reckon é útil: https://github.com/cantino/reckon
    Também é bom dividir o problema com include. bal --dc pode ser um pouco familiar para contadores dos EUA, mas muitas vezes eles não entendem corretamente a forma como o ledger usa números negativos; então achei mais fácil escrever alguns scripts para converter para o estilo DR/CR. Fiquei surpreso ao ver como os contadores com quem lidei tinham dificuldade com abstrações

    • Concordo com as duas primeiras dicas. A terceira também parece boa, mas nunca precisei dela
      Se eu fosse acrescentar só uma dica, seria: amarre tudo com um Makefile ou algo parecido. Quando há muitos arquivos de transações separados por conta, os comandos para incluir os arquivos corretos tendem a ficar longos
      Também nunca lembro a sintaxe exata de vários scripts de gráficos e resumos; com make, dá para chamar coisas como make cashflow, make balance 'A=Checking', make balance-plot 'A=retirement'
  • Escrevi vários textos com receitas práticas para usar o Ledger de forma eficaz em situações mais complexas do que o tutorial básico: https://felixcrux.com/blog/ledger-practices

    • Como alguém que usa bastante ledger, essas receitas são excelentes. Uso um padrão em que rastreio clientes e fornecedores em detalhe e preciso atribuir pagamentos e recebimentos a projetos específicos e a classificações dentro deles
      Ao importar transações bancárias, primeiro atribuo à conta com o nome da contraparte; então um script usa ledger print para criar um segundo arquivo de diário por contraparte, revertendo a transação original e colocando-a temporariamente em subcontas do projeto Unknown e da classificação Unknown
      Depois, a pessoa responsável pela escrituração associa a transação a uma fatura específica e a atribui a uma conta Project:Category; se necessário, divide um único pagamento entre vários projetos/classificações. Incluindo todos os diários de transações bancárias e os diários de contrapartes, dá para verificar com ledger bal se a escrituração foi concluída
  • Contabilidade em texto simples é bacana, mas acho que a maior barreira para muita gente é baixar os dados bancários em um formato padrão
    Os bancos não vão apoiar ativamente nada além de CSV ou Excel, e plataformas agregadoras de dados como Yodlee ou Plaid não são amigáveis para open source nem para usuários amadores
    Antigamente havia uma empresa chamada Wesabe(https://en.wikipedia.org/wiki/Wesabe) que fazia um software para sincronização bancária no desktop. Ela acabou sendo praticamente engolida pelo Mint.com, mas ainda penso naquela abordagem e ela parece possível também em open source

    • O hledger tem uma ferramenta para converter CSVs bastante arbitrários em transações: https://hledger.org/1.40/hledger.html#csv
      Ainda não usei, mas depois de passar 4 horas ao longo de vários dias ajudando uma empresa SaaS de escrituração com problemas de conexão bancária, eu estaria disposto a dedicar tempo a isso
      Sempre que faço conciliação de transações, acabo brigando com um sistema cujo interior não posso ver nem corrigir diretamente. Agora estou começando a duvidar se o esforço vale a pena; se houver ferramentas razoáveis, acho melhor lidar diretamente com CSVs. Para constar, a empresa disse que era “algo normal” e nem reembolsou
    • Descobri recentemente o Paisa, que basicamente é uma boa UI em cima do ledger-cli. A importação é bem prática: você sobe um arquivo como CSV, vê uma prévia e depois escreve um script que transforma cada linha no formato de texto do ledger
      Ele também tem lint; se você gostar do resultado, pode salvar o script e importar de novo quando quiser. Para acompanhar coisas como ações, também oferece download de preços de commodities/ativos
      Os gráficos não são genéricos o suficiente para o meu gosto, então exporto os dados para outro lugar, mas como ferramenta de entrada de dados é excelente
    • Já passei por casos em que o extrato em PDF que o banco é obrigado por lei a fornecer não batia com o CSV. Além disso, o CSV quase não traz dados de saldo
      Por isso baixo o PDF e extraio os dados, mas isso é doloroso além do necessário. Para oferecer um PDF fácil de ler por máquinas, bastaria seguir regras simples que permitissem extrair 3 ou 4 campos de transação e alguns campos do extrato, como data e saldo, sem heurísticas frágeis
      Um PDF com marca, legível por humanos, e um PDF fácil de ler por máquinas não são coisas incompatíveis
    • No Reino Unido existe o Open Banking, uma API padrão para acesso a dados bancários: https://www.openbanking.org.uk/
    • No meu país, todas as transações chegam por SMS, então criei com o Tasker um sistema que capturava os SMS e salvava em um arquivo CSV. Coloquei esse CSV em uma pasta sincronizada para o desktop via SyncThing
      Eu planejava processar esses dados e inseri-los no sistema contábil, mas nunca cheguei a fazer isso; depois meu celular quebrou e perdi também as ações do Tasker. Não tenho mais ânimo para implementar de novo
  • O domínio relacionado ainda existe. Texto de 2023: https://news.ycombinator.com/item?id=36022005, texto de 2021: https://news.ycombinator.com/item?id=28420797, texto de 2016: https://news.ycombinator.com/item?id=11164330
    Outras menções ao conceito podem ser vistas em https://hn.algolia.com/?q=Plain+Text+Accounting

  • Tenho curiosidade sobre como outras pessoas realmente usam ferramentas de contabilidade em texto simples. Queria saber se usam para entender hábitos de consumo e mudar comportamento, para acompanhar despesas, receitas e patrimônio líquido, ou se o que atrai é o próprio processo ordenado
    Toda vez que vejo esse assunto, sinto ao mesmo tempo o impulso de mergulhar de vez e a culpa por não ter conseguido manter tentativas anteriores. Agora estou há um mês e meio sem atualizar meu livro-razão pessoal, então a culpa pesa mais
    No fim, como não tenho certeza de por que uso isso, com o tempo acaba parecendo registrar transações apenas por registrar

    • Eu sempre uso para acertos de contas em grupo improvisados. Em situações como três pessoas viajando juntas, é muito mais fácil dividir os custos no mesmo dia ou mais tarde na semana, e ir acumulando as relações de dívida para acertar quando necessário. Esse tipo de gasto caótico é muito difícil de acompanhar de outra forma
      Despesas de trabalho são parecidas. Pago equipamentos ou serviços no meu cartão e depois reporto para receber de volta em dinheiro ou por transferência. Mas isso não funciona em alguns países ou empresas
      Para gastos pessoais do dia a dia, já dá para saber pelo banco e pela experiência, então não há necessidade de fazer contabilidade. É preciso haver uma motivação financeira, não emocional. Quando você sabe que, se abandonar a contabilidade, um amigo vai gastar centenas de dólares seus em bebidas ou a empresa vai ficar com um cabo HDMI de graça, você digita o valor sem hesitar. O motivo de a contabilidade pessoal não funcionar bem é que o que se perde não é dinheiro, é só análise
    • Sou autônomo e uso Beancount para as contas da empresa e a carteira de ações. Gosto da abordagem mais rigorosa, e a interface web Fava é conveniente para relatórios e visualizações
      Também tenho alguns scripts que automatizam processos como importar transações da Wise e acompanhar taxas de câmbio. Mas não tenho disciplina suficiente para usar isso nos gastos pessoais diários ou no controle de orçamento
    • Não uso como ferramenta de motivação para mudar hábitos de consumo, mas gosto de manter registros de todas as contas e ativos. Isso me dá uma compreensão melhor da situação financeira geral, e crio contas virtuais dentro de uma conta de poupança com liquidez para separar saldos por itens a provisionar, como manutenção do carro ou seguro
    • Uso hledger para várias finalidades. Acompanho contas a receber de clientes, categorias de gastos como comida, restaurantes, livros e assinaturas de revistas, saldos atuais de contas em várias moedas, dinheiro emprestado a outras pessoas e presentes, além de envelopes virtuais de poupança para objetivos como viagens, presentes e investimentos
      Ver quanto desperdicei comendo fora todos os dias e calcular o resultado composto se eu tivesse colocado esse valor em um fundo de índice ajudou muito a reduzir meu hábito de comer fora. Também consigo diferenciar contas a receber de clientes, fluxo de caixa real e fluxo de caixa baseado em receita esperada
      Ao dividir mentalmente o saldo da conta poupança em algo como “40% para objetivo de investimento, 1% para presentes”, passei a gastar menos por impulso ao ver um saldo grande. Também tenho um programa que gera gráficos de crescimento do patrimônio e de aumento ou redução dos gastos por categoria, registra observações sobre se essas mudanças tiveram efeito líquido positivo na vida e despeja tudo em uma página web; uso isso todo ano para definir os próximos planos
      Também tenho um script em Python que converte o arquivo ledger para Excel e envia ao contador para a declaração anual de imposto. Mantenho o arquivo ledger da empresa separado, não o gerencio manualmente; exporto os dados do software do contador e faço meus próprios cálculos em casa
      No negócio, uso para projeções de fluxo de caixa que estimam como os gastos vão crescer conforme a receita aumenta, detecção de anomalias em despesas por departamento, decisões entre contratar mais ou aumentar gastos de marketing e cálculos de indicadores como ROIC
      A contabilidade por partidas dobradas ajuda a importar extratos bancários, gerar o ledger e encontrar divergências contábeis. Separo contas por finalidade, como gastos discricionários, benefícios de funcionários e insumos do negócio, e faço depósitos semanais a partir da conta principal para verificar se há algo fora do normal
      No passado, um contador, sem falar de forma transparente, lançou despesas falsas nos livros para fazer parecer que tinha economizado muito imposto, e acabei indo parar no tribunal e pagando uma multa alta e encargos por atraso. Agora não confio em contadores e sempre verifico tudo de novo
      Tenho muitos scripts de automação que importam dados do Stripe, extratos bancários, livros do contador etc., e uso Python para conciliá-los e encontrar divergências. Para mim, como programador, a contabilidade em texto simples se encaixa bem, e ao longo de anos construí meu próprio sistema em cima do hledger