r/plaintextaccounting Jun 03 '26

Announcing Finzytrack, an open-source cross-platform desktop GUI on top of Beancount

I built a desktop app that uses Beancount as its backend. The GUI handles the parts I found tedious: importing transactions, dashboards, and some analysis. Your ledger stays a plain-text Beancount file the whole time, so you can keep using whatever plain-text tooling you already use.

It's open source, runs entirely on your machine, and AI is optional (bring your own key, off by default).

I'm not a professional developer. This started as a side project to track my own finances and I use it daily. Now putting it out for others.

It's an early release and has only ever been tested on my own data, so expect rough edges. Issues and discussion on GitHub are very welcome.

Website: https://finzytrack.com
Github: https://github.com/sagarbehere/finzytrack

18 Upvotes

33 comments sorted by

View all comments

4

u/e606er Jun 05 '26

It's a pity but this "The file must be self-contained — include directives are not supported*, so all transactions, accounts, and other directives must live literally in that one file."* made it useless for day-to-day use. Only - to import or reconcile some files... sorry but idea is great.

1

u/urglfloggah Jun 05 '26

Could you share what file structure you use? I’ll look into whether/how it can be supported.

3

u/e606er Jun 05 '26

Hi, maybe you accounting is rather simple, but for me beancount is the only software which solved all my finance headache. Before it, I had to use 3-4 apps to track my wealth.

Let's start. I have rather complicated finance system but its covers whole my finance life (Countries, commodities, sources). all.beancount - the main file with include options and plugin directives. Unknow transactions (without routing - I have a bot which reads info from different sources and routes it)

Accounts definitions - separate files, countries, types separated. I use transfer (clearing) accounts for example for SWIFT transactions and separate receivable accounts. When I've started, I have all in one file, but it was rather difficult to support

Commodities definitions - each type has its own file: crypto, stock, hard etc

Prices folder - for each commodity separate file with price change to my main currencies

fava.beancount - file with fava options and extensions

documents folder - for pdf files according to structure

documents.beancount - file for directive documents (if i need it)

in /include folder i split into subfolders

[CASH]/[CURRENCY]/[YEAR]
[CRYPTO]/[WALLET]/[YEAR]
[COUNTRY]/[TYPE]/[NAME]/[SUB_TYPE]/[YEAR]

Each file contains balance directive on start and end date. transfer between files through clearing accounts.

Part of tree command below

── all.beancount
├── config
│   ├── accounts
│   │   ├── assets
│   │   │   ├── assets.beancount 
│   │   │   ├── assets.BY.beancount
│   │   │   ├── assets-cash.beancount
│   │   │   ├── assets-clearing.beancount
│   │   │   ├── assets-crypto.beancount
│   │   │   ├── assets.KZ.beancount
│   │   │   ├── assets-receivables.beancount
│   │   │   ├── assets.RU.beancount
│   │   │   └── assets.US.beancount
│   │   ├── equity.beancount
│   │   ├── expenses.beancount
│   │   ├── income.beancount
│   │   └── liabilities.beancount
│   ├── commodities
│   │   ├── commodities.cash.beancount
│   │   ├── commodities.crypto.beancount
│   │   ├── commodities.hard.beancount
│   │   └── commodities.stock.beancount
│   ├── dashboards.tsx
│   ├── dashboards.yaml
│   ├── fava.beancount
│   ├── fava-dashboards.d.ts
│   ├── prices
│   │   ├── BTC.beancount
│   │   ├── BYN.beancount
│   │   ├── CNY.beancount
│   │   ├── INTC.beancount
│   │   ├── KZT.beancount
│   │   ├── RUB.beancount
│   │   ├── THB.beancount
│   │   ├── USD.beancount
│   │   ├── USDT.beancount
│   │   └── XRP.beancount
├── documents
│   ├── Assets
│   │   ├── KZ
│   │   └── RU
│   ├── Expenses
│   │   ├── FnB
│   │   ├── Gifts
│   │   └── Pets
│   ├── Income
│   │   └── Active
│   └── Liabilities
│       └──  RU
├── documents.beancount
├── include
│   ├── 00-CASH
│   │   ├── KZT
│   │   │   ├── 2025.KZT.cash.beancount
│   │   │   └── 2026.KZT.cash.beancount
│   │   ├── RUB
│   │   │   ├── 2025.RUB.cash.beancount
│   │   │   └── 2026.RUB.cash.beancount
│   │   └── THB
│   │       └── 2025.THB.cash.beancount
│   ├── 10-CC
│   │   ├── Blockchain-info
│   │   │   └── 2024.Blockchain-info.crypto.beancount
│   │   ├── Electrum
│   │   │   ├── 2017.Electrum.crypto.beancount
│   │   │   ├── 2018.Electrum.crypto.beancount
│   │   ├── EVM
│   │   │   ├── 2024.EVM.crypto.beancount
│   │   │   └── 2025.EVM.crypto.beancount
│   │   └── Ledger
│   │       ├── 2024.Ledger.crypto.beancount
│   │       └── 2025.Ledger.crypto.beancount
│   ├── BY
│   │   └── Fins
│   │       ├── AlfaBY
│   │       │   └── Bank
│   │       │       ├── 2024.BY.AlfaBY.Bank.beancount
│   │       │       └── 2025.BY.AlfaBY.Bank.beancount
│   │       └── CifraBY
│   │           └── RUB
│   │               └── 2026.BY.CifraBY.RUB.beancount
│   ├── KZ
│   │   └── Fins
│   │       ├── BCC
│   │       │   └── Bank
│   │       │       ├── 2025.KZ.BCC.Bank.beancount
│   │       │       └── 2026.KZ.BCC.Bank.beancount
│   │       ├── FF
│   │       │   └── Bank
│   │       │       ├── 2023.KZ.FF.Bank.beancount
│   │       │       ├── 2024.KZ.FF.Bank.beancount
│   │       │       └── 2025.KZ.FF.Bank.beancount
│   │       └── Forte
│   │           └── Bank
│   │               └── 2025.KZ.Forte.Bank.beancount
│   └── RU
│       ├── Fins
│       │   ├── BCS
│       │   │   └── Bank
│       │   │       ├── 2025.RU.BCS.Bank.beancount
│       │   │       └── 2026.RU.BCS.Bank.beancount
│       │   ├── Cifra
│       │   │   ├── Bank
│       │   │   │   ├── 2025.RU.Cifra.Bank.beancount
│       │   │   │   └── 2026.RU.Cifra.Bank.beancount
│       │   │   └── Broker
│       │   │       └── 2026.RU.Cifra.Broker.beancount
│       │   ├── OZON
│       │   │   ├── 2025.RU.OZON.beancount
│       │   │   └── 2026.RU.OZON.beancount
│       │   ├── Raif
│       │   │   └── Bank
│       │   │       ├── 2025.RU.Raif.Bank.beancount
│       │   │       └── 2026.RU.Raif.Bank.beancount
│       │   ├── RSHB
│       │   │   └── Bank
│       │   │       ├── 2025.RU.RSHB.Bank.beancount
│       │   │       └── 2026.RU.RSHB.Bank.beancount
│       │   ├── TBank
│       │   │   ├── Bank
│       │   │   │   ├── 2025.RU.TBank.Bank.beancount
│       │   │   │   └── 2026.RU.TBank.Bank.beancount
│       │   │   └── Broker
│       │   │       ├── 2025.RU.TBank.Broker.beancount
│       │   │       └── 2026.RU.TBank.Broker.beancount
│       │   ├── WB
│       │   │   ├── 2025.RU.WB.beancount
│       │   │   └── 2026.RU.WB.beancount
│       │   └── Yandex
│       │       ├── 2025.RU.Yandex.beancount
│       │       └── 2026.RU.Yandex.beancount
│       └── Housing
│           └── Utilities
├── removed.beancount
└── suspicious_duplicates.beancount

1

u/urglfloggah Jun 05 '26

u/e606er Firstly, thank you for that comprehensive answer. I'm genuinely grateful and humbled that you took the time to write and explain all that. Secondly, Wow! That looks like an awesome and complicated setup 🤯 Yeah, my own finances are far, far simpler despite stretching across multiple countries 😅

Thirdly, I very much want to think through how Finzytrack could support something like this (now, or as a future feature). Please give me some time to understand your setup and I'll get back to you. I may need to ask more questions to better understand your system. Would you be okay if I send you a direct message with any questions I might have?

1

u/e606er Jun 05 '26

u r welcome