skillfed

beancount

Command-line Double-Entry Accounting

beancount v3.2.3 147.9K downloads/30d#11,047 on PyPI5,902
Copyleft license GPL-2.0-only Active released

What it is and what it does

Beancount is a command-line double-entry accounting system designed for developers and power users who want to track finances in plain text. You write financial transactions in a simple text-based format, load them into memory, and generate reports such as balance sheets and income statements, or query the data using an SQL-like language. It also includes a web interface to render reports to HTML and provides infrastructure to automate conversion of external financial data into Beancount syntax.

The package is actively maintained, has an engaged user base, and depends on only three common libraries: click, python-dateutil, and regex. It requires Python 3.9 or later and is released under GPL-2.0-only, which means any modifications or derived works must also be open-source under the same license.

Use it for:

  • Track personal finances in version-controlled text files alongside code repositories.
  • Generate monthly or annual balance sheets and income statements from transaction records.
  • Query and aggregate financial data across multiple accounts using SQL-like syntax.
  • Automate import of bank statements or investment data into a unified ledger format.
  • Build custom financial reports by parsing Beancount's in-memory transaction objects.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Beancount is a double-entry accounting system that reads financial transactions from text files, loads them into memory, and generates reports like balance sheets and income statements with an SQL-like query interface.

Yes, if you want a text-based accounting system that integrates with your development workflow. The package is actively maintained, has no known vulnerabilities, and three lightweight dependencies. The GPL-2.0-only license is not a barrier for personal or internal use but matters if you plan to redistribute or embed it in proprietary software. Medium install friction is typical for compiled packages.

Install

beancount on PyPI

pip

pip install beancount

uv

uv add beancount

poetry

poetry add beancount

Installing beancount

Before you install

Medium install friction due to compiled wheels; actively maintained with recent commits and a substantial user base. Requires Python 3.9 or later. Three lightweight runtime dependencies with no known security vulnerabilities.

License in practice

GPL-2.0-only copyleft license means any derivative work or modification must also be released under GPL-2.0. This restricts commercial redistribution or proprietary extensions without source disclosure.

Quickstart

pip install beancount

from beancount import loader
entries, errors, options = loader.load_file('ledger.beancount')

Requires Python 3.9 or later; a Beancount-format text file is needed to load transactions.

Verify before relying

  • Whether the web interface and HTML report rendering require additional dependencies beyond click, python-dateutil, and regex.
  • Performance characteristics when handling large transaction files or complex queries.
  • Availability of plugins or extensions for automating external data conversion beyond the scaffolding mentioned.

Package facts

License GPL-2.0-only (copyleft)
Python support supports the current Python release (>=3.9)
Install friction medium — platform-specific wheel
Runtime dependencies 3 — click, python-dateutil, regex
Maintenance actively maintained — 101 days since the last release
Last repo commit
First released
Downloads 147,941/month — #11,047 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: beancount-3.2.3-cp310-cp310-macosx_10_9_x86_64.whl; beancount-3.2.3-cp310-cp310-macosx_11_0_arm64.whl; beancount-3.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; beancount-3.2.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; beancount-3.2.3-cp310-cp310-win32.whl; beancount-3.2.3-cp310-cp310-win_amd64.whl; beancount-3.2.3-cp311-cp311-macosx_10_9_x86_64.whl; beancount-3.2.3-cp311-cp311-macosx_11_0_arm64.whl; beancount-3.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; beancount-3.2.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; beancount-3.2.3-cp311-cp311-win32.whl; beancount-3.2.3-cp311-cp311-win_amd64.whl; beancount-3.2.3-cp312-cp312-macosx_10_13_x86_64.whl; beancount-3.2.3-cp312-cp312-macosx_11_0_arm64.whl; beancount-3.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; beancount-3.2.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; beancount-3.2.3-cp312-cp312-win32.whl; beancount-3.2.3-cp312-cp312-win_amd64.whl; beancount-3.2.3-cp313-cp313-macosx_10_13_x86_64.whl; beancount-3.2.3-cp313-cp313-macosx_11_0_arm64.whl

Tags

double-entry accounting systemtext-based financial ledgerpersonal finance trackingaccounting query languagebalance sheet generatorincome statement reportstransaction ledger parser
accountingledgerfinance

More Utilities packages