Stay Steady 2.0: Bill Reminders, Yearly Bills and a Budget App That Explains Its Categories
A budget app that only looks backwards is a diary. It tells you, at the end of the month, what already happened. Stay Steady has always known more than it said: it recognises your regular payments, predicts the next one weeks ahead and scores you on keeping up with them. Until now it kept that knowledge to itself.
Stay Steady 2.0 is about saying it out loud: telling you before a bill is due, putting the big yearly ones in front of you months ahead, and explaining, for every transaction, why it landed in the category it did.
A reminder before the bill, not a surprise after it
Turn on bill reminders and Stay Steady sends a notification before a regular payment is due: three days ahead for a monthly bill, a week for a quarterly one, two weeks for a yearly one. The notifications are created on your iPhone or Android phone from bills the app already predicts from your own statements. Nothing is sent from a server, and nothing about your bills leaves the device.
The payments that hurt are rarely the monthly ones. It is the car insurance in March, the property tax in September, the club membership nobody remembers until it is due. Those rarely show up often enough in a year of statements to be recognised, so you can now add them yourself as fixed bills: in Settings, or straight from last year’s charge in the Journal with Make this a fixed bill. Switch on Set aside for this bill and Stay Steady creates a savings goal for the next charge and tells you what to put aside each month to have it ready. The €840 insurance due in six months becomes €140 a month you have already planned for, instead of a bad week in March.
Why is this in that category?
Every transaction now says why it has the category it has. Open one and, under the category, you read one of a handful of plain sentences: You chose this category, Matches one of your learned rules, Matches a built-in rule, Money moved between your own accounts, Suggested by the on-device model, or, honestly, Not recognised: a best guess. When the app gets something wrong, you can see which part of it did, and correct the right thing.
A new categorisation model, on your device
The part that suggests a category for merchants the built-in rules do not know has been rebuilt from scratch. The old model worked on sentence embeddings meant for English text and was fed Belgian bank lines in three languages. The new one reads the statement line the way a Belgian bank writes it: it breaks the merchant name and the communication into short fragments of letters, ignores the words every card payment carries (Bancontact, Betaling, Paiement, Kaart), and weighs what is left.
On real Belgian statement lines from merchants it had never seen, the new model chooses the right category 57% of the time. The old one managed 27 to 32%. It is 276 KB, decides in about twenty microseconds per transaction, and runs identically on iPhone, iPad, Mac and Android — the same model file on all four, checked against the same 315 test cases.
It also means one thing less that talks to our server. Earlier versions could download a newer model after you signed in. 2.0 ships the model inside the app, and a better one arrives with an app update, like everything else.
The first time 2.0 starts on your iPhone or your Mac, it files the transactions it categorised itself once more, with the new model. Categories you picked, and the results of your own rules, stay exactly as they are; only what changes is written, so iCloud does not have to sync your whole history again. On Android, everything you import from now on gets the new model.
Imports that check their own arithmetic
A CODA or MT940 statement states its opening and closing balance. Stay Steady now checks that the transactions in between add up to the difference, and tells you when they do not — a missing page, a statement imported twice, a file cut short. It is the difference between “the import finished” and “the import is complete”.
Rows in another currency are no longer counted as euros. A Revolut-style export with a few dollar or pound rows used to add them to your totals at face value; they are now left out, and the app says how many and in which currencies.
And when a file will not import at all, you can report it to us. Stay Steady prepares an email to support with a description of what went wrong. If you want to include the file, it attaches a masked copy, never the original: every name, account number, amount and free-text field is replaced, while the dates and the file’s layout stay, so we can still see why it failed. You see every line that will be sent before you agree to send it. The privacy policy describes what we keep and for how long.
Debts with an end date
Enter a loan’s interest rate and monthly payment in Net Worth, and Stay Steady tells you when it will be paid off: Paid off around April 2031 at €350 per month, based on the balance you last entered. If the payment does not even cover the interest, it says that instead. The calculation uses the actuarial monthly rate a Belgian bank uses on its repayment table, so a 25-year mortgage ends where the bank says it ends.
FIRE that knows what you need
The FIRE calculator now averages your last twelve months of spending instead of three, which smooths out a December or a holiday but may move your number when you first open it. You can also mark which spending categories are essential. Lean FIRE then leaves out the rest: the number you would need if you cut back to what you actually need, next to the number for the life you live now.
The smaller things
- Comments on transactions. Give any transaction a note, or your own name for it — “Birthday present for Lotte” reads better than a card terminal’s reference. The statement’s own text is kept, so a re-import still recognises the row.
- Lock Screen widgets. On iPhone, Safe to spend now also sits on the Lock Screen, and a new Next bill widget shows what is due next. Amounts stay hidden until you unlock.
- On the Mac, Insights compares this month’s spending with the same month last year, and ⌘C copies the selected rows of the transaction table, ready to paste into Numbers or Excel.
What was quietly broken
As in every release post on this blog, here is what 2.0 fixes that should not have shipped.
Every Bancontact payment at a shop the app did not know was filed as Cash. “Bancontact” was on the list of words that mean a cash withdrawal. It is the name of the Belgian debit card network, so it appears on almost every card payment. The new model never got to see those transactions. The word is off the list, and the one-time pass described above re-files the ones already stored.
The old model read a different text from the one it was trained on. It learned from upper-case, cleaned-up merchant names and was then handed the raw, mixed-case line from the statement, which cost it between 7 and 29 points of accuracy. The new model uses one definition of the input, shared by the training script and all three apps, and a test on every platform holds them to it.
An earlier one-time re-categorisation could overwrite a category you picked. Transactions you enter by hand, scan from a receipt or add with Siri carry your choice without the confidence score the categoriser writes, and that pass did not tell the two apart. The one in 2.0 does, and leaves them alone.
Signed-in users could read other contributors’ statistics. The table behind “your corrections” returned every contributor’s anonymous account identifier and correction count to any signed-in user, not only your own. No names, emails or transactions were in it. It now returns only your own row.
Availability
Stay Steady 2.0 is live on the App Store, the Mac App Store and Google Play. If your phone still shows the previous version, give it a little — the stores take a while to reach every device.
From 2.0 the Mac app comes only from the Mac App Store. The direct download and the Homebrew cask stopped at 1.6.4. If you installed one of those, the Stay Steady page explains how to move over; removing the old copy does not remove your data.
The rest has not changed. Still free, still no subscription, still no ads, still no bank connection: every transaction comes from a statement you import — CSV, CODA, MT940 or OFX — or a line you type, and it stays on your device. If you came here looking for a privacy-first budgeting app, an expense tracker with bill reminders, a YNAB alternative without the monthly fee, or simply a huishoudboekje app that understands a Belgian bank export, the Stay Steady page has the full feature list.
Weighing it against a subscription budget app? See how it compares: Stay Steady vs YNAB, Stay Steady vs Monarch Money and Stay Steady vs Copilot Money.