Skip to content

Beanbook

GitHub pintofi/beanbook

Install Beanbook

Download Zapstore

Download
QR code for zapstore.dev/download
  • Scan the code with your phone’s camera
  • Tap Download anyway if the browser warns about the file
  • Allow your browser to install unknown apps if Android asks
  • Open Zapstore and finish the onboarding

Open Beanbook in Zapstore

Open
QR code to open Beanbook in Zapstore
  • Scan the code to open Beanbook in Zapstore, or search for it there
  • Tap Install, and Download if Zapstore asks you to confirm the developer
  • Confirm in Android’s install dialog. Allow Zapstore to install unknown apps if Android asks

Unclaimed app

The catalog lists Beanbook from GitHub pintofi/beanbook and signs its releases. The developer has not claimed it. The file is still checked before you install it.

Are you the developer? Cryptographically prove you hold the key that signs it.

How trust works

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.

Zap Beanbook

Zapping anonymously. Sign in to zap with your identity.

No developer has verified this app yet, so sats go to npub1gnwq4…thdn3y, the catalog that brought it to you.

Amount in sats

Latest release

Nov 7, 2026

Unclaimed app No Google servicesSource available · GPL-2.0-only

The catalog lists this app from GitHub 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 as P, 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…

See more

Get Beanbook the private way

Updates checked on your device, and every release verified before it installs.

Get Zapstore for Android

  1. Tap Download APK below.Scan the code with your Android phone’s camera.
  2. If Android asks, allow your browser to install unknown apps.
  3. Open Zapstore and finish the onboarding.
Download APK

v2.0.4 · 71.2 MB · Android 10+

Verify the download

On a computer, run shasum -a 256 <the file you downloaded>. It should print: b13e01319fecf0b3ba1fd60132758bd0fa08a235836c52d44fddb412cf1b7137

If you have zsp, Zapstore’s publishing tool, zsp utils extract-apk <the file you downloaded> works too. Its hash should be the same SHA-256: b13e01319fecf0b3ba1fd60132758bd0fa08a235836c52d44fddb412cf1b7137

On the phone, AppVerifier should show this signing certificate: 99e33b0c2d07e75fcd9df7e40e886646ff667e3aa6648e1a1160b036cf2b9320

Source code All releases and notes

Get zsp

  1. Download the file for your computer.
  2. Make it executable and put it on your PATH.
  3. In your project folder, run zsp.

Have Go? This does the same:

go install github.com/zapstore/zsp/v2/cmd/zsp@latest
macOS, Apple silicon Linux, x86-64 Linux, arm64

v2.0.1 · macOS and Linux

Verify the download

On your computer, run shasum -a 256 <the file you downloaded>. It should print the SHA-256 for the one you chose.

macOS, Apple silicon · 18.6 MB 99018fb9744e5ace2b44557550dc333496239912c0e9b1137266d4922c803346

Linux, x86-64 · 23.8 MB 1ef5373f8ecd9ba63d2c3fab98abb0d31b2244a2aac31b3749fb205c7d5f5b38

Linux, arm64 · 22.1 MB e421005ee47cba58293dce4277bb784e4cfe706dbbcb8617d671629d0238be18

Source code All releases and notes