FreeLedger
Free desktop bookkeeping for freelancers and small business.
Download for Windows — 0.3.0Before you install
- Windows 10 or later, 64-bit. Installs for your user only — no administrator prompt.
- The installer is not code-signed yet, so Windows SmartScreen will warn on first run. Choose More info then Run anyway. The SHA-256 above is there so you can check the file is the one published here.
- Your books are stored in one file under your own profile, at %LocalAppData%\FreeLedger\freeledger.db. Uninstalling asks before touching it.
- Bookkeeping works with no internet connection. Emailing invoices and checking for updates are optional, off until you turn them on, and can be turned off again in Settings.
Releases
0.3.0
October 7, 2026 · 51.5 MB
# Changelog ## 0.3.0 — 2026-08-16 The screens people use every day stopped being lists of everything. Filters, search and totals on the transaction and invoice lists; CSV export of whatever is on screen; categories you can add; partial payments; and a dashboard that answers "who owes me money" rather than repeating what was just typed in. ### Added - **Filters, search and sorting on the transaction list** — text search across description, category and amount (typed however a bank statement shows it), a date range with the presets people actually ask for, income/expense, category, and five sort orders. The totals underneath are of the rows on screen, not of the whole book. - **Filters and search on the invoice list**, by status — including the new *Part paid* — and by number, client or note, with the invoiced and outstanding totals following the filter. - **CSV export**, which the download page has promised since the first release and which did not exist: transactions and invoices as filtered, and the profit-and-loss report. UTF-8 with a byte-order mark and plain numeric amounts, so the file opens in Excel and adds up. - **A Categories screen.** Add, rename and delete categories, and choose the Schedule C line each expense is reported on. The starter set was previously the only set there would ever be. - **Partial payments.** Record what actually arrived against an invoice; the balance stays outstanding, the income is in the books the day it lands, and settling the rest closes the invoice. Paying more than is owed records only what was owed. - **Duplicate an invoice**, and mark one as repeating monthly, quarterly or yearly — the copy then comes with the dates already moved on. Nothing is issued behind the user's back. - **A dashboard worth opening**: money owed, how much of it is overdue and by whom, what is due this week, the year to date, the biggest expense categories, the transactions still missing a category, and the next quarterly tax deadline — each with the button that acts on it. ### Fixed - **Everything was in the machine's currency, not dollars.** The currency was a per-company setting whose default came from the operating system's region, so a first run on a machine set to another country wrote that currency into the profile and printed roubles on every invoice, report and Schedule C worksheet — in a product whose reports are IRS forms. There is now no currency setting at all, the column is dropped, and existing profiles are migrated. - **Date fields drew on top of their neighbours.** Avalonia's `DatePicker` lays three fixed-width spin fields side by side and does not clip them, so in a form column it printed the due date over the issue date and the transaction date over the description. Dates are now one field that can be typed into as well as picked, with the product's own calendar icon rather than a Segoe MDL2 glyph that rendered as a bare "16" on a machine without that font. - **The invoice form ran off the bottom of a small window**, drawing the table over the editor: the transaction and invoice pages now scroll as a page. - **A part payment could mark an invoice paid in full**, because the payment being recorded was counted twice — EF attaches the new row to the invoice before the arithmetic runs. - A sentence explaining the sales-tax rate printed straight through the tax amount beside it. ## 0.2.0 — 2026-08-15 United States release. Everything user-facing now formats as American regardless of the machine's regional settings, the invoice lifecycle works end to end, and the app can say why when something fails. ### Added - **Taxes page** — Schedule C worksheet with each expense total on its numbered line, quarterly estimated tax (Form 1040-ES) with the four statutory deadlines, and sales tax collected grouped by state. Schedule C exports to PDF. - **Clients page** — a real list with add, edit and delete, replacing a placeholder card. Deleting is refused while a client still has invoices. - **US addresses** — street, city, state and ZIP as separate fields, with a state picker and ZIP validation. Existing free-text addresses are carried into the street line, not discarded. - **EIN / SSN** — the tax number is labelled and checked for the kind it is, and printed on invoices as "EIN 12-3456789". - **Sales tax on invoices** — charged as a rate, suggested from the client's state, always overrulable. The rate and state are stored on the invoice so the report can reconstruct them. - **Send an invoice** — as a PDF export, or by email through your own mail server. The mail password is encrypted with your Windows account. - **Mark as sent** — the step that starts the clock on an invoice. - **Diagnostic log** at `%LocalAppData%\FreeLedger\Logs\freeledger.log`, including Avalonia's own binding failures, plus a handler for exceptions that previously vanished. ### Fixed - **Uninstalling silently deleted your books.** The prompt was written to default to keeping them, but `MB_DEFBUTTON2` only chooses which button has focus in a dialog you can see — a suppressed prompt is answered yes. Any `/SILENT` uninstall wiped `%LocalAppData%\FreeLedger`. An unattended uninstall now deletes nothing, because nobody was asked. - **Updates could never have installed.** The updater ran from inside the folder the installer replaces, so it held open a file the installer needed and Inno aborted. It is now copied out first. - **The window did not fit on ordinary laptops.** Its minimum size was larger than the desktop a 1366x768 screen at 125% scaling offers, so the bottom of the window — save buttons included — sat below the taskbar with no way to shrink it. - **Tables dropped a column instead of scrolling.** On a small window the client name collapsed to nothing and the row actions were cut off, silently. Wide tables now scroll sideways. - **Bank CSV imports could swap the day and month.** The date format list tried `dd/MM/yyyy` before `MM/dd/yyyy`, so an ambiguous date in a US bank export was read as the wrong day — silently, and with no way to tell afterwards. American formats are now tried first. - **`Overdue` could never appear.** Nothing ever set an invoice to Sent, so the status the product advertises was unreachable in the running application. - **Invoice PDF export was unreachable.** The renderer was written and tested from the first version; no button ever called it. - **Everything formatted against the machine's locale.** Dates, amounts and currency followed the operating system, so the same books read `750,00 $` and `1 июл. 2026` outside the US. Three different date layouts were in use for the same value, and the exported PDF disagreed with the screen it was printed from. - **PDFs asked for a Windows-only font.** Calibri was named explicitly, so exports rendered differently anywhere else. - **Failed actions did nothing visible.** Exports, saves and deletes that threw were swallowed whole; they now say what went wrong and write it to the log. - **A binding error on every launch** — the onboarding view reached for the window's data context before there was one. ### Changed - **The installer is branded and three pages long.** A welcome page carrying the product's own artwork at every display scaling, which states where the app will be installed, how much room it needs and that no administrator rights are involved; a progress page whose status line names what is being installed; a finish page. The "ready to install" page is gone — it repeated the welcome page — and the location page appears only when it is asked for. A second copy of Setup now refuses to run while one is already installing. - **One publisher name everywhere.** Assembly metadata, the installer's publisher line, the Programs and Features entry and the site all say *FreeLedger Team*. The registry namespace stays `HKCU\Software\FreeLedger\FreeLedger`, so existing installations are still found. - **The licence texts actually ship.** `licenses\` used to hold a list that pointed at files that were not there; it now contains the MIT, Apache-2.0, QuestPDF and font licence texts it names. The internal QA checklist no longer ships — it was written for whoever works on the product, not for whoever uses it. - The installed folder is now a proper tree — `app\`, `config\`, `resources\`, `samples\`, `updater\`, `licenses\` — instead of a single 120 MB executable and a stray font directory. - Starter categories map onto Schedule C lines. Existing installations are upgraded in place by name; categories you renamed or invented are left alone. ## 0.1.0 First release.