# Beancount

> Double-entry plain text accounting software

**Wikidata**: [Q110755666](https://www.wikidata.org/wiki/Q110755666)  
**Source**: https://4ort.xyz/entity/beancount

## Summary  
Beancount is a free, open‑source command‑line accounting program that stores double‑entry bookkeeping data in plain‑text files. Written in Python and released under the GNU GPL v2, it was created by Martin Blais and runs on macOS and BSD‑derived operating systems.

## Key Facts  
- **Creator:** Martin Blais, who also maintains the project.  
- **Initial release:** Version 1, published 1 June 2013.  
- **Latest listed release:** Version 2.2.3, published 22 August 2019.  
- **License:** GNU General Public License version 2.0.  
- **Programming language:** Python.  
- **Operating systems supported:** macOS and BSD (including FreeBSD, NetBSD).  
- **Software class:** Accounting software, command‑line tool, and free software.  
- **Inspired by:** the Ledger accounting system.  
- **File format:** Uses a dedicated “Beancount fileformat” for both reading and writing.  
- **Distribution:** Packaged for Debian/Ubuntu (`beancount`, `python3-beancount`), FreeBSD (`finance/beancount`), NetBSD (`finance/py-beancount`), Guix, Homebrew (`beancount`), and Nix (`beancount`).  

## FAQs  
### Q: What does Beancount do?  
A: Beancount records financial transactions using double‑entry bookkeeping in plain‑text files, allowing users to generate reports and perform accounting analysis via the command line.  

### Q: Which platforms can run Beancount?  
A: It runs on macOS and BSD‑derived operating systems such as FreeBSD and NetBSD, and can be installed through package managers on Linux distributions like Debian, Ubuntu, and Arch.  

### Q: How is Beancount different from typical GUI accounting software?  
A: Beancount stores data as human‑readable text, enabling version control, easy editing, and reproducible accounting workflows, whereas most GUI tools use proprietary binary databases.  

## Why It Matters  
Beancount brings the rigor of double‑entry bookkeeping to a plain‑text, programmatic environment, bridging accounting with modern software development practices. By leveraging Python and a simple, version‑controlled file format, users can track finances with the same tools they use for code—Git for history, diff tools for change inspection, and automated scripts for reporting. Its open‑source GPL v2 license encourages community contributions and transparency, while its compatibility with major Unix‑like operating systems ensures broad accessibility. The software’s inspiration from Ledger and its extensive packaging across Debian, Ubuntu, FreeBSD, NetBSD, Guix, Homebrew, and Nix demonstrate a vibrant ecosystem that supports both individual accountants and developers seeking reproducible financial workflows. Consequently, Beancount has become a cornerstone for those who value auditability, automation, and the freedom to customize their accounting processes.  

## Notable For  
- **Plain‑text double‑entry bookkeeping** that integrates seamlessly with version‑control systems.  
- **Python implementation**, making it extensible and easy to integrate with other tools.  
- **Broad packaging support** across major Linux distributions, BSD ports, and macOS Homebrew.  
- **GPL v2 licensing**, guaranteeing freedom to run, study, modify, and redistribute the software.  
- **Direct lineage from Ledger**, inheriting a proven accounting model while adding modern scripting capabilities.  

## Body  

### Overview  
Beancount is a command‑line accounting application that records financial transactions in a human‑readable plain‑text format. It follows the double‑entry bookkeeping methodology, ensuring that every transaction balances debits and credits.

### History and Development  
- **2013‑06‑01:** First public release (Version 1).  
- **2013‑06‑01:** Follow‑up release (Version 1.1.0).  
- **2018‑03‑28:** Major update (Version 2.0.0).  
- **2018‑05‑12:** Incremental releases 2.1.0 through 2.1.2.  
- **2018‑10‑05:** Version 2.1.3.  
- **2019‑01‑05 to 2019‑08‑22:** Versions 2.2.0, 2.2.1, 2.2.3 released, marking continued active development.  

Martin Blais remains the primary maintainer, overseeing code contributions and releases.

### Technical Architecture  
- **Language:** Implemented in Python, enabling cross‑platform execution.  
- **File format:** The “Beancount fileformat” is both readable and writable, allowing users to edit ledgers directly with any text editor.  
- **Command‑line interface:** Users interact via terminal commands to import data, generate reports, and validate ledgers.  

### Licensing and Distribution  
- **License:** GNU GPL v2, classifying it as free software.  
- **Source repository:** Hosted on GitHub at `https://github.com/beancount/beancount`.  
- **Official website:** `https://beancount.github.io/`.  

### Platform Support  
- **macOS:** Officially supported since its inception.  
- **BSD family:** Includes FreeBSD (`finance/beancount`), NetBSD (`finance/py-beancount`), and generic BSD support.  

### Ecosystem and Packages  
| Distribution | Package Names |
|--------------|---------------|
| Debian/Ubuntu | `beancount`, `python3-beancount` |
| FreeBSD | `finance/beancount` |
| NetBSD | `finance/py-beancount` |
| Guix | Variable `beancount` |
| Homebrew (macOS) | Formula `beancount` |
| Nixpkgs | Identifier `beancount` |

These packages simplify installation and integration into system‑wide workflows.

### File Format Details  
- **Readable format:** Beancount fileformat allows direct inspection of ledger entries.  
- **Writable format:** The same format is used for programmatic generation of new entries, ensuring consistency.  

### Community and Influence  
Beancount draws inspiration from the Ledger system, extending its plain‑text philosophy while adding Python‑centric extensibility. Its open‑source nature has fostered a community that contributes plugins, reporting scripts, and integration tools for personal finance, small businesses, and academic research.

## References

1. [Release 1. 2013](https://github.com/beancount/beancount/releases/tag/v1)
2. [Release 1.1.0. 2013](https://github.com/beancount/beancount/releases/tag/1.1.0)
3. [Release 2.0.0. 2018](https://github.com/beancount/beancount/releases/tag/2.0.0)
4. [Release 2.1.0. 2018](https://github.com/beancount/beancount/releases/tag/2.1.0)
5. [Release 2.1.1. 2018](https://github.com/beancount/beancount/releases/tag/2.1.1)
6. [Release 2.1.2. 2018](https://github.com/beancount/beancount/releases/tag/2.1.2)
7. [Release 2.1.3. 2018](https://github.com/beancount/beancount/releases/tag/2.1.3)
8. [Release 2.2.0. 2019](https://github.com/beancount/beancount/releases/tag/2.2.0)
9. [Release 2.2.1. 2019](https://github.com/beancount/beancount/releases/tag/2.2.1)
10. [Release 2.2.3. 2019](https://github.com/beancount/beancount/releases/tag/2.2.3)
11. [Release 2.3.0. 2020](https://github.com/beancount/beancount/releases/tag/2.3.0)
12. [Release 2.3.1. 2020](https://github.com/beancount/beancount/releases/tag/2.3.1)
13. [Release 2.3.2. 2020](https://github.com/beancount/beancount/releases/tag/2.3.2)
14. [Release 2.3.3. 2020](https://github.com/beancount/beancount/releases/tag/2.3.3)
15. [Release 2.3.4. 2021](https://github.com/beancount/beancount/releases/tag/2.3.4)
16. [Release 2.3.5. 2022](https://github.com/beancount/beancount/releases/tag/2.3.5)
17. [Release 2.3.6. 2023](https://github.com/beancount/beancount/releases/tag/2.3.6)
18. [Release 3.0.0. 2024](https://github.com/beancount/beancount/releases/tag/3.0.0)
19. [Release 3.0.1. 2024](https://github.com/beancount/beancount/releases/tag/3.0.1)
20. [Release 3.0.2. 2024](https://github.com/beancount/beancount/releases/tag/3.0.2)
21. [Release 3.1.0. 2025](https://github.com/beancount/beancount/releases/tag/3.1.0)
22. [Release 3.2.0. 2025](https://github.com/beancount/beancount/releases/tag/3.2.0)
23. [Source](https://packages.debian.org/source/bookworm/beancount)
24. [Source](https://metadata.ftp-master.debian.org/changelogs//main/b/beancount/beancount_2.3.5-2_copyright)
25. [Source](https://hpc.guix.info/package/beancount)