Changelog
Notable changes to MyFinance, newest first. Format follows
Keep a Changelog; versions follow
Semantic Versioning.
The version itself lives in Directory.Build.props and is the single source — the release
archive takes its name from it, the documentation reads it, and About shows it.
v0.0.1-beta — released
The first release. Everything below is new, so this entry describes what the application
does rather than what changed in it.
What it is
A personal finance application for Windows, written to replace Microsoft Money Plus Sunset
for one person's own books. It keeps a single encrypted book on the machine it runs on and
nothing leaves that machine: no telemetry, no crash reporting, no account aggregation, no
network calls of any kind. Bank data arrives only as a file the user downloaded themselves.
The book
- One encrypted file (
.mfdb) with a small sidecar (.mfmeta) holding the key
derivation parameters and the schema version. Full-database encryption via SQLCipher, with
the key derived from the password by Argon2id. - The password is never stored, in any form, and there is no recovery path. This is a
deliberate design decision, not an omission — a book whose password is lost is lost. - Backups to a single
.mfbakcarrying both halves of the book, checkpointed and
verified after writing. Taken automatically when the book is closed — on by default,
because there is no password recovery and often no other copy — keeping the last ten by
default, in a folder of your choosing. Restore happens before a book is opened, so nothing
is holding the file being replaced. - A book from a newer version is refused, rather than opened read-only and quietly
misread. The schema version is recorded in both the database and the sidecar.
Accounts and the register
- Eight account types — checking, savings, money market, certificate of deposit, cash,
credit card, line of credit and brokerage — grouped into bank, credit and other, with
subtotals and a net-worth total that signs liabilities correctly. Anything else a migrated
book contains arrives under a read-only catch-all rather than being forced into a type it
is not. - A register with a running balance, splits, transfers as two linked legs, cheque numbers,
cleared and reconciled states, and reconciliation against a statement. - Amounts are an integer count of cents throughout. No binary floating point anywhere in the
arithmetic.
Getting a Money book across
- A pure-C# reader for the Jet 4 / MSISAM format a
.mnyfile uses — accounts,
categories, payees, transactions, splits, transfers, payee memory, recurring bills and
holdings. - The
.mnyis only ever read. Never opened for writing, moved or renamed. - Money's three category levels become two plus an income/expense kind; its payee memory
becomes the memory that fills in the next import; its recurring bills come across with
their frequencies verified against Money's own Bills screen rather than guessed, and a
series whose repeat code has never been verified is reported for manual setup rather
than converted to something plausible. - Due dates a bill was overdue for arrive skipped rather than outstanding, so the first
auto-entry after a migration does not write a decade of payments that never happened.
Importing a statement
- OFX 1.x and 2.x, QFX, QBO and QIF, with account matching, duplicate detection, a
ledger-balance cross-check that catches a file imported with every sign reversed, and
undo for a whole import. - Full account numbers are never stored — only a masked tail for display, plus a keyed
digest used to recognise the account next time.
Categorizing
A six-source suggestion chain, tried in order of how much it can be trusted: a rule the user
wrote, a category named in the file itself, the payee's remembered category, a statistical
classifier, the merchant this one most resembles, and the bank's industry code. Every
suggestion says which source produced it.
The resemblance source uses a sentence-embedding model that runs locally; no transaction
text is sent anywhere. It is measured, not assumed, at around 63% correct — it earns its
place by covering rows nothing else can, not by being reliable, and it is tried last for
that reason.
Bills, budgets and reports
- Recurring bills computed from an anchor date rather than from the previous occurrence, so
a bill due on the 31st does not creep backwards after one February. Overdue backlogs are
counted and shown, not silently entered. - A cash-flow forecast that names its low point.
- Budgets: a figure per category per month, rollover of surplus only, and copy across a year.
- Eight reports — spending by category and by payee, income by category, income and spending
over time, account balances, net worth over time, transaction detail and a period
comparison — each with both a chart and a table, drill-down to the transactions behind
any figure, and CSV export. - Printing, with a preview.
Getting data back out
Constitution principle 10 is that the user's data stays theirs. Every report exports to CSV,
and the whole book exports to one documented JSON file that can be read without
MyFinance.
The export is not encrypted. That is what makes it readable by other software, and it
means an export needs the same care as any other copy of your finances.
Help and diagnostics
- F1 anywhere, and a Help button, opening the page about the screen you are on. The
documentation is carried inside the executable and read from your own machine, so it works
with no connection and always describes the build you are running. - About shows the version, the licence and the third-party notices, and is reachable
from the unlock screen without opening a book. - A diagnostics log, bounded in size, that records what went wrong and never records
payees, amounts or account names. It is written and never transmitted.
What is in the download
MyFinance-1.0.0-win-x64.zip contains:
| File | |
|---|---|
MyFinance.exe |
The whole application, about 85 MB |
LICENSE |
Apache License 2.0 |
NOTICE |
Third-party notices for everything the executable carries |
Requirements
- Windows 11, x64 or ARM64.
- No .NET runtime, and nothing to install: the executable is self-contained, needs no
administrator rights, and can be copied anywhere, including onto a memory stick.
Known limitations
Stated because knowing them before you start matters more than a short list does.
- No password recovery. By design, and worth repeating.
- One currency.
Account.CurrencyCodeexists but the arithmetic does not honour it, so
two currencies would silently add. A second currency is not supported and should not be
entered. - No CSV statement import. A bank offering neither OFX nor QIF cannot be imported.
- Search is per-register. There is no search across every account at once.
- No attachments. A receipt cannot be kept against a transaction; the memo is text.
- No tax-line assignment or tax report. A category can be flagged tax-related and
nothing more. - Loans and mortgages arrive read-only, with no amortization and no principal/interest
split, so a payment is one lump against a category. - Holdings arrive without cost basis. Money records none this reader can recover, so a
migrated holding brings its quantity and nothing about what it cost. - A password-protected
.mnycannot be read. Remove the password in Money and save a
copy. MyFinance does not decrypt Money files. - No updater, and nothing that says a new version exists. Every upgrade is a file copy.
- No idle lock. An open book stays open for the session; nothing re-asks for the
password, so an unlocked book on an unattended machine is readable. - Accessibility is unverified. Every chart ships with a table and every status colour is
written out in words, so no figure depends on seeing a colour — but there is no tested
statement of keyboard-only, screen-reader or high-contrast support. - The executable is unsigned, so Windows SmartScreen will warn the first time it runs.
Licence
Apache License 2.0. See LICENSE, and NOTICE for what the executable carries and under
what terms.
Microsoft, Microsoft Money and Windows are trademarks of Microsoft Corporation. MyFinance is
not affiliated with or endorsed by Microsoft, and names those products only to describe what
it reads and what it runs on.