Privacy
Most privacy policies are long because the company writing one has a great deal to account for. This one is short for the opposite reason: there is no account, no cloud, and nothing collected about you. Here is every specific, including the two things that get counted and exactly what those counts contain.
Last updated August 8, 2026.
This website
The pages you're reading are plain HTML and one stylesheet, built once and served as files. Nothing here watches you.
No cookies, no trackers, no analytics service
There is no Google Analytics, no pixel, no tag manager, no A/B test, no session recorder, and no advertising network. Nothing about you is sent to any other company. This site sets no cookies at all — there's no consent banner because there is nothing to consent to. Two requests are counted, on our own server; the last card in this section says which two, and exactly what a count consists of.
Nothing loads from anywhere else
No third-party scripts, no embedded videos, no hosted widgets, and no web fonts — the type you're reading is whatever your own device already uses for its interface. Every file a page here asks for comes from this site: the stylesheet, the screenshots, and the logo (which is drawn in the page itself, not fetched). Open your browser's network tab on any page here and count the hosts — there's one.
One small script, on one page
The release notes page runs a little JavaScript to read
releases.json — a file on this same site — and list the versions. Every
other page is zero JavaScript. That file is public and identical for everyone; asking
for it says nothing about you.
What the web host sees, and the two things we count
These files sit on a static hosting service, and like any web server it can see the requests that reach it — the page asked for, the time, and the IP address it came from. That's how the web works and we won't pretend otherwise.
On top of that we count exactly two requests, and nothing else on this site: the download button, and the app's version check (described in full below). Counting them tells us whether anyone is using this thing, which is the only question we have.
A count is a number going up. What gets written down is a running total, a total per calendar day, and which version was current — three integers, added to a tally that already exists. What does not get written down is anything at all about the request: no IP address, no browser or device, no referrer, no session, no cookie, nothing that could tell one visit from another, join two of them together, or be traced back to a person. It happens on the server, so there is still no analytics code running in your browser — every page here except the release notes remains zero JavaScript.
The app on your machine
Balanced Sum isn't a website you log into — it's a program you download and run, with its database on your own disk. That single fact settles most of what a privacy policy usually has to argue about.
No account, no sign-up, no license key
You never give us a name, an email, a company, or a payment method, because nothing in the software ever asks for one. There is no registration step and no activation call — you unzip it and run it.
Your books stay on your disk
Your data lives in a PostgreSQL database running on your own machine — one Balanced Sum installs for you on its first run, in a folder of its own, rather than asking you to set one up. Backups are written to a folder on that same machine (Documents\Accounting Backups by default) and are ordinary files you control, copy, and keep wherever you like. Nothing is synchronized anywhere, because there is nowhere to synchronize to.
No telemetry, no usage reporting, no crash reports
Nothing about what you do in the app is measured or transmitted — not which screens you open, not how many companies you keep, not how big your ledger is, not that a page threw an error. Errors are logged to your own console and your own machine, and stay there.
Imports and exports go where you put them
Statement files, migration exports, CSV downloads and printed PDFs are read from and written to your machine. Nothing you import is uploaded anywhere first; there is no processing step that happens somewhere else.
Every outbound request the software makes — both of them
1. Fetching the database, once, on the very first run
Balanced Sum keeps your books in PostgreSQL, and it installs PostgreSQL for you rather than sending you off to do it. So the first time you run the app — and only that time — it downloads it: a single file of about 25 MB, from balancedsum.com, the same site you got the app from. It checks what arrived against a checksum published inside the app before unpacking a byte of it, and refuses to use anything that doesn't match.
What the request contains: nothing but the request. It is a plain download of a fixed, public file — the identical file everyone on Windows gets. No identifier, no query string, nothing about you or your machine, and nothing whatsoever from your books, which do not exist yet at that point in the process. The server sees what any web server sees when a file is fetched: an IP address, the time, and which file. Nothing about these downloads is counted; the only two things counted anywhere are named further up this page, and this isn't one of them.
It happens once. The copy it downloads is kept on your machine and reused every launch after that, and ordinary updates to Balanced Sum reuse it too. If you're offline the first launch will tell you so and change nothing; reconnect and run it again.
You do not have to take our word for it. The zip you download contains the code that
does this, in server/src/localdb/ — including the exact address and
checksum it will accept, written down in manifest.ts before you ever run
it.
2. The daily version check — all of it
This is the only outbound request the app makes once it's set up. When you start
the app — and at most once every 24 hours — it fetches a public file,
updates/feed.json, from balancedsum.com, so the Settings screen can tell
you whether a newer version has been released. It is the same list of versions the
release notes page shows you, published at its own address
for a reason given below, and it is identical for everyone who asks for it.
What the request contains: nothing but the request. No query string, no identifier, no cookie, no headers we add. The code hands its HTTP client a plain address and a five-second timeout, and that is the entire call. In particular it does not send your version number, an install ID, a machine name, a company name, a license key (there isn't one), or a single figure, account, or word from your books. The comparison happens on your side: your computer downloads the public list of versions and compares it against the one it's running, so which version you're on never leaves your machine either.
What it necessarily reveals: the things any web request reveals, which
we can't make disappear by wishing. The server that hosts the file sees an IP address,
the time, and the fact that the version list was asked for — the same as if you had
typed the address into a browser. The only other thing traveling with it is the generic
identification Node's own HTTP client attaches to every request it makes; it identifies
the software as node, not as you.
And we count it — here is precisely what that means. The version list
has its own address, /updates/feed.json, separate from the
releases.json the release notes page reads,
and the two serve the identical document. The split exists so that a person browsing
this website isn't counted as a copy of the software: checks arriving at that address
are installed copies asking, and that number is the only thing we know about how much
this is used. Each check adds 1 to a running total and 1 to that day's total, alongside
the version this site was advertising at the time. It is not the
version you are running — your copy never says, exactly as the paragraph above
describes, and we would rather have a less useful number than change that. Nothing else
is stored. Not your IP address, not your machine, not the time of your particular check,
and nothing that could separate your check from anyone else's, or from your own
yesterday. There is no row with your name on it because there are no rows.
Nothing is downloaded or installed. The check produces a sentence in Settings and nothing else. If a new version exists, you decide whether to go and get it.
How to switch it off, permanently: open the .env file in
your Balanced Sum folder (make one by copying .env.example if you don't
have one — most installs don't need one) and blank out UPDATE_FEED_URL, or
delete the line. With no address configured, no network call is attempted at all — the
feature isn't "unreachable," it's off, no request is ever made, and so there is nothing
to count either. With the check switched off, and the first-run download above already
done, Balanced Sum makes no outbound requests whatsoever: it works exactly the same
with no internet connection, forever. If the check is left on and the request fails —
you're offline, the site is down — the app carries on silently and never retries at
you.
You do not have to take our word for any of this. The zip you download contains the
actual source code: this is server/src/updates.ts, and it's about a page
long.
If you email us
Support is email, at support@balancedsum.com. If you write, we have your message and the address it came from, and we use them to answer you. That's the entire purpose. Your address doesn't go on a list, into a newsletter, or to anyone else, and nothing in your message is used for anything but replying to it.
Mail is handled by an ordinary email provider, as everyone's is. Please don't send your books, backups, or company files — we ask you not to on the contact page and we mean it: your financial data is not something we want to be holding, and we've never needed it to fix anything.
Changes, and what this page is
This page is dated at the top, and that date changes when the page does. If the software ever starts doing something not described here, this page changes first — and given that the whole product rests on the claim that your data stays with you, that isn't a change we'd make quietly.
It describes what this site and this software actually do. It isn't legal advice, and it isn't a claim of certification under any particular privacy law. It's a description you can check yourself, against source code you already have a copy of — which is a better guarantee than a paragraph promising to be careful.