Beanbook
Plain-text accounting for Beancount ledgers. Runs the real Beancount and Fava on your device to view balances, add entries, and edit text files directly. Includes receipt scanning, widgets, and optional local sharing.
Beanbook keeps your books where they already live: in ordinary Beancount text files, on your phone. It runs the real Beancount and Fava on the device, so the figures you see are the ones bean-check and Fava produce on a desktop.
There is no account to create, no sign-in and no server run by this project. Your ledger is a folder of text files you own.
What you can do • Read your ledger: a Home page with net worth and where the money went, a searchable Journal, and Balances for every account. • Show figures three ways, as Fava does: Units, At cost, or Market value. • Add entries and other Beancount directives with a form that shows the exact text before it is written. • Edit the files themselves, with every save re-read by Beancount before it is called saved, and an Undo for the last change. • Scan receipts and statements into PDFs and file them under an account. • Open Fava's Reports inside the app. • Mirror a project to a folder you choose, and back it up with an optional passphrase. • Use Beancount plugins and Fava extensions, and run your own Python scripts. • Home-screen widgets for balances and net worth.
Your data stays yours • No telemetry, analytics, crash uploads or ads. • Local mode makes no network requests. • If you turn on Share on Wi-Fi, other devices can reach your Reports only while it is on, only on a private network, and only after signing in. • Nothing is sold, and there is nothing to subscribe to.
Two editions The Expert edition adds plugins and packages that include native code, fetched only when you ask. The Play edition does without them. Both are free.
Beanbook is an independent project. It is built on Beancount and Fava and is not affiliated with or endorsed by them. It comes with no warranty, as its GPL-2.0 licence states: keep backups of your ledger.
Summary generated by Zapstore from source.
Original description, as the developer published it.
Latest release
The catalog lists this app from
pintofi/beanbook
and signs its releases. The developer has not claimed it.
Are you the developer? Claim your app
Uses the camera to scan receipts and statements into PDFs.
Permissions
- Camera CAMERA Take photos and record video To take pictures of documents for scanning.
- Notifications POST_NOTIFICATIONS Send you notifications
Release notes
Beanbook 1.0.4 changes how an entry's flag is chosen, lets a backup be restored from the first-run setup, makes the widgets follow the system colours, and fixes a number of problems found in daily use.
Entry form. The flag is one choice of Cleared, Pending or Other. Other takes any flag Beancount allows, such as P, and says what is wrong with one it would refuse. An entry that carries such a flag can now be edited, saved and cloned from the form, which it could not before. Account suggestions follow Fava's ranking, the suggestion list floats over the fields below it, and templates are one list where each can be renamed or deleted.
Journal and Accounts. The Errors, Pending and Other flags filters are one choice. The Accounts page has a search box and the currencies each account allows.
Backups, Mirror and widgets. A Beanbook backup (.bcaz) can be restored from the first-run setup and from the Projects page, and comes back as a new project. In Mirror, a file deleted on one side can now be settled. The widgets take their colours from the system palette when dynamic colour is on, and the Balances widget shows the basis you tap.
Fixed. Market values worked out through a price quoted the other way round now round as Beancount and Fava do. The blank-posting sentence on the form and the Accounts page follow the ledger's own rounding and separators, and Use last no longer fills in the currency of the posting left blank. A tap on a notification opens the page it is about.
Added
- The Accounts page has a search box: type words and only the accounts whose name has all of them stay listed, closed accounts included. (#314)
- On the Accounts page, the details of an account now include the currencies it allows: add, change or clear them. Only the currency list on its open line is rewritten, in the same single save as any other detail you changed. (#315)
Changed
- The widgets take their colours from the system palette when dynamic colour is on (paper, text, the basis row and the accent, as the app does), and on Android 14 and later they follow a change of the system's light or dark setting without waiting for a redraw. (#357)
- On the entry form, the flag is one choice of Cleared (
*), Pending (!) or Other, and Other opens a field for any flag Beancount takes (one capital letter, or one of& # ? %), refusing the rest with a reason. An entry that carries another flag, such asP, can now be edited, saved and cloned from the form, and a template keeps its flag when it is applied. (#361) - The Journal's Errors, Pending and Other flags filters are one choice: choosing one replaces the last, and choosing it again shows every entry. Flags are named as Beancount does:
*is Cleared,!is Pending, and any other character is an Other flag, replacing "Flagged" across the app. (#350) - A Beanbook backup (.bcaz) can be restored from the first-run setup and from the Projects page: it comes back as a new project, and an encrypted one asks for its passphrase. Import zip no longer reads a backup as a ledger. (#342, #354)
- Work in progress, such as Saving, Writing or Unlinking, shows as a banner with a larger loading indicator and a moving bar, instead of a small spinner beside small text. (#339)
- The plugin catalogue in the app no longer lists the two entries that cannot work on a phone (autobean.truelayer and fava-classy-portfolio). The catalogue file and docs/plugin-compatibility.md still record them. (#340)
- The accounts the entry form suggests follow Fava's: the ones you post to most and most recently come first (a posting from a year ago counts half), the ones used with the payee you typed come ahead of those, typed letters match in order and not only as one piece, and an account that has been closed is still offered, and accepted, for an entry dated up to the day it closed. (#313)
- Opening or closing an account is always written to files/accounts.beancount. If your ledger does not read that file yet (one brought in from elsewhere, with its accounts in the main file), Beanbook shows the one include line it needs and adds it only after you agree, then finishes the save. Accounts already opened in your ledger stay where they are. (#318)
- On the entry form, templates saved with Save as template are listed in alphabetical order, in one Templates button that opens the list whether there is one template or many, showing who is paid and the first account of each, with a search box once there are more than eight, and a way to rename or delete each one there. Before, every template was in one row that had to be scrolled sideways. (#317, #337)
Fixed
- In Mirror, choosing a side of a conflict works when the file was deleted: Keep the folder's deletes the file here (through the write protocol, so Undo puts it back), and putting it back or deleting it from the folder are offered too. A record of a file gone from both sides is dropped, so a file that arrives later is no longer removed from the folder as if it had been deleted. (#341)
- The Balances widget on Android 12 and newer shows the basis you tapped, and its rows are updated in the same step: the list of accounts travels in the update, where a service-backed list made the system hand the launcher only a notice, which the Microsoft Launcher acted on late or not at all. (#358)
- Tapping Unlink on the Organize page says at once that it is unlinking, instead of showing nothing until the ledger files have been searched. (#338)
- The Units, At cost and Market value buttons on a home-screen widget no longer vanish for a moment during a resize or when tapped: a widget is redrawn only when its size or place changes how it is drawn, and not each time the launcher repeats the same size. (#332)
- Market values worked out through a price quoted the other way round (a price of USD in PKR used to value PKR in USD) now round exactly as Beancount and Fava do. In the rare case the exact result was half a cent the app could show a different cent: 0.165 at a rate of 3 shows 0.05 as in Fava, not 0.06. 1,400 conversions were checked against Beancount 3.2.3 to the last digit. (#328)
- The Accounts page shows each balance with the ledger's own decimal places and separators, as every other screen does, and not at the full length of the number. (#326)
- The form's sentence "Beancount will put ... on the posting with no amount" now names the figure Beancount really writes. Beancount rounds the leftover to its tolerance (beside 10.1 and 2.22 it writes -12.3, not -12.32), and the sentence used the exact leftover. The balance rule itself, and the figure for the blank posting, were checked against 900 entries run through Beancount 3.2.3 and agree in every one. (#326)
- "Use last" no longer fills in the currency of the posting whose amount was left blank for Beancount to work out: the commodity stays empty like the amount, so the form and the preview say the same thing. (#312)
- Tapping a notification from Beanbook opens the page it is about: Share on Wi-Fi opens its page, an install opens Plugins, a running script opens Scripts, filing a document opens Documents, and a saved entry opens the Journal. If the app is already open it is brought forward and moved there, instead of a second copy starting on top. (#316)
- The suggestion list under a field floats over the fields below it instead of pushing them down, and no longer resizes the File dialog on the Organize page as it opens. (#352)
Download
| File | SHA-256 |
|---|---|
| beanbook-1.0.4-arm64-v8a.apk | 45842a01ca630a16a6c16adfc7cd3765e19bf87f8ec53d353327a7c0a0ee8427 |
| beanbook-1.0.4-x86_64.apk | 01d8dea765205238aae2b1231443e7176e2c559f66e3b9b0a54ab487019d72f5 |
| beanbook-1.0.4-universal.apk | 481defbbd5738eb0366e804598a042a1d706a86ae8a3e3154443dd7fa29c11a5 |
Verify
Signing certificate SHA-256: d7039d79b2afa3ffc81aeba7bc8dbf45a73b07b94f982ca913d65028b9b2ff55
Check a download against the table with sha256sum, or against checksums.txt with sha256sum -c checksums.txt. apksigner verify --print-certs <file> shows the certificate.
Full changelog: CHANGELOG.md · v1.0.3...v1.0.4
Comments
Loading comments…
More finance manager apps
See more-
F
Finan+ Offline, encrypted personal finance manager (Brazilian Portuguese)
-
P
Pocket Sense Private, offline money tracker in English and Arabic, in JOD and 68 currencies
-
B
Balance Private offline bank balance dashboard
-
I
Invoice Ninja Invoice your clients, accept payments, track expenses & time billable-tasks
-
N
NanoLedger Data entry app for plain text accounting
-
O
Okanzo Private, offline-first net worth tracker with on-device encryption
Get Beanbook the private way
Updates checked on your device, and every release verified before it installs.