TL;DR

A software engineer replaced brittle homegrown scripts with a plain-text, double-entry system built on Beancount to track a two-person, multi-currency household. The setup yields one reliable net-worth figure with weekly maintenance, but requires accounting basics, comfort with Python, and ongoing effort.

What happened

After a difficult 2021 tax season and a custom script-based system that produced mismatched balances and missing transactions, the author adopted double-entry bookkeeping and a plain-text workflow using the Python library Beancount. The current system covers two people, 18 accounts across three currencies, and produces a single net-worth number the author trusts. Most transactions import automatically—often from PDF statements—then are reviewed and categorized in a web interface. A weekly routine of downloading statements, categorizing entries, running scripts to regenerate reports, and committing changes takes roughly 20 minutes. The approach exposes transfers-in-flight, IOUs between people, and investment details as explicit accounts, which helps ensure every transaction balances. The author notes this is more work than consumer budgeting apps and requires learning accounting concepts and some programming, but delivers privacy, auditability, and flexible reporting.

Why it matters

  • Double-entry plain-text accounting prevents common single-entry errors like lost transfers or miscategorized reimbursements.
  • A single, auditable net-worth number reduces reconciliation headaches at tax time and for long-term tracking.
  • Plain-text files and Beancount-based workflows offer greater transparency and control than many closed-source apps.
  • The system supports multi-currency and investment tracking while keeping a compact weekly maintenance routine.

Key facts

  • The author rebuilt their system after issues with ad-hoc scripts that produced mismatched balances.
  • Current setup tracks two people and 18 accounts across three currencies.
  • Typical weekly maintenance is reported to take about 20 minutes.
  • The implementation uses plain-text accounting principles and the Python library Beancount.
  • Many transactions are imported automatically from PDF statements, which the author finds often more reliable than CSV.
  • Double-entry modeling represents transfers, expenses, income, and IOUs as explicit accounts, ensuring each transaction balances.
  • The workflow includes downloading statements, categorizing transactions in a web UI, running scripts to regenerate reports, and committing updates.
  • The author cautions that building and maintaining this system requires learning accounting basics and programming work.

What to watch next

  • Whether the author releases tooling, templates, or example configs for others to adopt — not confirmed in the source.
  • How the system handles ongoing currency conversion and revaluations in reports if exchange rates change over time — partially described in context of multi-currency but detailed mechanics not confirmed in the source.
  • Potential gaps when scaling beyond a two-person household or more complex investment vehicles — not confirmed in the source.

Quick glossary

  • Double-entry bookkeeping: An accounting method where every transaction has at least two sides (debits and credits) that sum to zero, helping ensure accuracy and traceability.
  • Plain-text accounting: A workflow that records financial transactions in human-readable text files, enabling version control, diffing, and manual inspection.
  • Beancount: A Python-based ledger and processing library for plain-text accounting that parses files and generates reports; used here as the core engine.
  • Assets and Liabilities: Basic account categories: assets represent things you own or claims on you, while liabilities represent money you owe.
  • Transfer-in-flight: An accounting construct for money that has left one account but not yet arrived in the destination, preserving net-worth accuracy during the interval.

Reader FAQ

Do I need coding skills to follow this approach?
The author says you should be comfortable with Python and scripting; so programming ability is required.

Is this system private compared to consumer apps?
The author describes the setup as private and self-hosted, implying more control than cloud services.

Is plain-text accounting overkill for everyone?
For simple day-to-day budgeting, the author recommends consumer tools or spreadsheets and calls the plain-text approach likely overkill.

Are the author's exact scripts and configs publicly available?
not confirmed in the source

One Number I Trust: Plain-Text Accounting for a Multi-Currency Household Jan 1, 2026 · Write-Up Two people. Eighteen accounts spanning checking, savings, credit cards, investments. Three currencies. Twenty minutes of…

Sources

Related posts

By

Leave a Reply

Your email address will not be published. Required fields are marked *