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 11, 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 install it and open 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.

The exceptions

Every outbound request the software makes

For an installed copy there is exactly one: a once-a-day check for a newer version, which you can switch off. Everything Balanced Sum needs to run — including the database it keeps your books in — is inside the installer, so it never fetches anything to get started and works with no internet connection at all. The only other thing it will ever download is a new version, and only after you press a button asking for one. Both are described in full below, followed by a third that applies only if you run Balanced Sum from its source code rather than installing it.

1. The daily version check — all of it

This is the only outbound request an installed copy makes on its own. 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.

The check itself downloads nothing and installs nothing. It produces a sentence in Settings and stops there. If a new version exists, going and getting it is a button you press — described next — and installing it is a second, separate button.

How to switch it off, permanently: open Settings → Updates and untick "Check for new versions once a day." No network call is then 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 it off, Balanced Sum makes no outbound requests whatsoever: it works exactly the same with no internet connection, forever. Your choice is kept in a small file outside the program folder, so it survives every update. 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. It is one plain HTTPS request to one fixed address, so any firewall or network monitor on your machine will show you exactly what leaves and where it goes — and you can open the file it asks for, the same list of versions, in your own browser right now.

2. Downloading an update — only when you press the button

If the check finds a newer version, Settings offers to fetch it. Nothing happens until you click. When you do, Balanced Sum downloads the installer from balancedsum.com, checks what arrived against the checksum published with that release, and refuses to run anything that doesn't match. It is then still not installed: applying it is a separate button, and the installer only opens after you close Balanced Sum — with the same accept, next, next, done wizard you saw the first time, which you can still cancel. Nothing installs itself here, at any point.

What the request contains: nothing but the request. Exactly the same bare shape as the version check above — no query string, no identifier, no cookie, no headers we add, and nothing from your books. It is a plain download of a fixed, public file: the identical file everyone who updates gets, and the identical file you would get by clicking the button on the download page. 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.

You can ignore all of it and update by hand instead — download the installer from this website and run it — or switch the check off and never be told. Your books are not in the program folder, so no update of either kind can reach them.

3. One more, only if you run Balanced Sum from its source code

This one does not apply to the installer and can be skipped by almost everybody. The installed program carries PostgreSQL inside it. A source checkout — a developer running the code from the repository or the release source zip — doesn't, so the first time it starts it downloads the database: a single file of about 25 MB, from balancedsum.com. It checks what arrived against a checksum written into the code before unpacking a byte of it, and refuses to use anything that doesn't match.

Same bare request as the other two, and it happens once — the copy is kept and reused on every launch afterwards. Nothing about these downloads is counted either. You do not have to take our word for it: the source you're running 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.

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, from outside the program — with a firewall, or any tool that shows you what your computer connects to — which is a better guarantee than a paragraph promising to be careful.