Stay Steady - Track Spending
Budget Tracker & Savings Goals
Free
Take control of your finances with Stay Steady — the privacy-first budget app from Belgium, in your own currency. Free forever.
FREE, FOR EVERYONE
Every feature is unlocked from day one. No subscription, no paywall, no ads. We built this to help you stay steady — not to charge you.
IMPORT FROM ANY BANK
Drop a CSV, OFX, CODA or MT940 file from your bank and watch as Stay Steady automatically detects your bank's format, parses transactions, and categorizes them with AI. Full support for Crelan, Belfius, BNP Paribas Fortis, KBC, ING, and Argenta.
YOUR OWN CURRENCY
Choose your currency when you start: dollar, pound, euro or any of 159. Each environment can have its own. Nothing is converted, and no total mixes two currencies.
AI-POWERED CATEGORIZATION
Our on-device machine learning model recognizes merchants across 34 categories and 145+ subcategories. Correct a category once, and it learns — then offers to apply it to all similar transactions. It knows Belgian and European merchants best, plus the big US and UK chains; elsewhere your corrections do more of the work. One shop, two kinds of spending? Answer "Only when…" and the rule looks at the text or the amount: fuel at the supermarket's pump goes to Car, the groceries stay under Groceries.
RECEIPT SCANNING
Snap a photo of any receipt. Vision OCR extracts the merchant, amount, and date instantly. Perfect for cash purchases.
SAVINGS GOALS
Set goals for vacations, emergency funds, or big purchases. Link transactions to goals and track progress with visual savings jars and smart nudges.
BUDGET LIMITS & ALERTS
Set monthly limits per category. Get alerts at 80% and when you exceed your budget. Track everything with the home screen widget.
FINANCIAL ENVIRONMENTS
Keep your household, your company and your club apart. Every account belongs to exactly one environment and no analysis ever mixes them — a company invoice can no longer distort your personal savings rate. Switch with one tap; budgets, goals and rules follow.
NET WORTH, DOWN TO THE POSITION
See what you own and what you owe. An investment or pension item can hold positions: a name, a quantity and a price. Type the price, or tap Refresh prices to fetch it from a price source you set up yourself. Only the symbols go to that source; quantities and values stay on your device.
SPENDING INSIGHTS
Interactive charts, year-over-year comparisons, spending forecasts, and financial health scores. Tap any category in the donut chart to see transaction details.
CONVERSATIONAL INSIGHTS
Ask about your spending in natural language using Apple Intelligence (iOS 26+). "Where did I spend the most?" Quick insight buttons available on all devices.
PRIVACY FIRST
• No account required — just download and start
• All data stays on your device
• No ads, no tracking — analytics are off unless you turn them on
• No subscription — free forever
• Optional iCloud sync (disabled by default)
• Category corrections are shared only when you sign in
Available in English, Dutch, French, German, and Spanish.
Stay Steady. Stay in control.
more Stay Steady 2.3.1
• Your accounts open at once, even with thousands of transactions. That screen could hang for up to twenty seconds.
• Correcting a category, editing a transaction or importing a file no longer makes the app wait.
• Card payments reading "CRF EXP" are recognised as Carrefour Express, and a university college (hogeschool) is filed under Education > Tuition instead of School.
2.3.1 Oct 19
Stay Steady 2.3
• Fetch your transactions: if you subscribe to a service that passes on your bank transactions, connect it in Settings > Connection to a service and tap Fetch now. You sign in to your bank at that service, never in the app. Rows that look like rows you already have wait until you choose. The question mark explains how it works.
• The import preview shows each row's category and why. Tap a row to choose another; the app remembers it for next time.
• Potential duplicates are now really left out, as the preview said. Want them anyway? Turn on Import potential duplicates too.
• An import says how many rows it could not read.
• Balance forecast in Insights: your balance over a month, three months or a year, with its lowest point.
• Low balance warning: a notification three days before an account is expected to drop below zero. Turn it on in Settings > Notifications.
• Safe to spend on your widgets now also subtracts the bills still to come this month.
• CSV export: include your own names and comments when you ask for them. A custom category appears in the file by its name.
• Delete a transaction from the menu you get by touching and holding it in the Journal.
• Changes from your other devices arrive while the app is open.
• Financial Health is for the month you are looking at.
• Give a goal a share of your income, and the Journal now shows it.
• After a change through iCloud the app could hang for a moment. That is fixed.
2.3.0 Oct 17
Stay Steady 2.2
• Positions in net worth: an investment or pension item can now hold positions, each with a name, a quantity and a price. The item is worth their sum, and Net Worth and Financial Independence follow.
• Prices your way: type a price, or tap Refresh prices to fetch them from a price source you set up yourself: Alpha Vantage, EODHD or Twelve Data with your own key, or an address of your own. A price in another currency is converted with the ECB's daily rate. Only the symbols of your positions go to that source; quantities and values stay on your iPhone.
• When a price is older than 30 days, Net Worth and Financial Independence say so.
• Rules with a condition: one shop, two kinds of spending? After a correction, answer "Only when…". The rule looks at the text the bank wrote or at the amount, shows how many transactions it will move before you save, and goes before the shop's ordinary rule.
• Both kinds of rule are under Settings > Category Rules. Open a rule with a condition to change it, and swipe a rule to remove it; removing a rule did not work on iPhone before.
• A correction you turn into a rule with a condition is not shared.
• A shorter start: someone new to Stay Steady gets four screens now: a welcome, the currency, the first file, and the choice to share anonymous usage data.
2.2.0 Oct 10
Stay Steady 2.1
• Your own currency: choose it when you start, in dollars, pounds, euros or any of 159 currencies. Each environment can have its own, and every amount, widget and report follows. Nothing is converted, and no total mixes two currencies.
• Imports from more banks: dates written month-first, English column names, a debit/credit column, card statements where a purchase is a positive number, and Revolut's export. When a file holds rows in another currency, you choose the account they go to.
• Categories outside Belgium: the model on your iPhone now reads English, and the built-in rules know the big US and UK chains. On first launch, Stay Steady re-files the transactions it categorised itself, once; what you chose yourself stays as it is.
• Help with your bank's file: a tip where an import starts, and a help page that says where a bank keeps its export.
• Taxes: corporate tax and advance tax payments have their own subcategories.
• Now also in the United States, Canada, Australia, New Zealand and Singapore.
2.1.0 Oct 6
Stay Steady 2.0
• Reminders: get a notification before a regular bill is due. Add yearly bills yourself, with an optional monthly set-aside, so the big ones don't catch you out.
• Widgets: Safe to spend now also on your Lock Screen, and a new Next bill widget. Amounts stay hidden until your iPhone is unlocked.
• Comments: give any transaction a note or your own name.
• Better categories: a new model, entirely on your iPhone, suggests categories more accurately, and the app tells you why. Bancontact card payments are no longer filed as Cash. On first launch, Stay Steady re-files the transactions it categorised itself, once; what you chose yourself stays as it is.
• Debts: enter a loan's rate and monthly payment and see when it will be paid off.
• FIRE: mark which spending is essential. Lean FIRE uses it, and FIRE now averages your last 12 months instead of 3, so your number may move.
• Imports: CODA and MT940 files are checked against the statement's balances. Rows in another currency are skipped instead of being counted as euros. If a file won't import, you can send support a masked copy, which you see first.
2.0.0 Sep 30
The Home Screen widgets now show the environment you have open. Until now they added up all of them, so if you keep a company or a club in its own environment, the widgets' amounts can change after this update: they now count only that environment. While your iPhone is locked, the widgets keep their amounts hidden.
New
• Pension: Net Worth has a Pension category for pension savings and group insurance. That money is locked until retirement, so a pension filed there no longer counts in Invested assets, the amount behind your progress toward the FIRE number. Financial Independence shows the total with it on a separate line under Invested assets, "Including pension", when you have a pension and have not typed in an Invested assets amount of your own. To move an existing item, edit it in Net Worth and choose Pension. Update Stay Steady on every device you use it on (iPhone, iPad, Mac) before you file anything under Pension: an older version does not know the category and can put the item back under another one when you edit it there.
• Goals that take a share of your income now have a Goal Allocations card in the Journal, with what each goal received this month.
Fixed
• CSV imports read amounts with thousands separators in full. Amounts grouped with an apostrophe, a comma or a narrow space, such as 1'234.50 or 1,234.56, arrived as €1 or €1.23 without a warning. An amount with a typographic minus sign (−) or in brackets now counts as money going out.
• A standing order to your own savings, filed under Savings & Investments or Transfers, no longer appears under Upcoming Bills, in Bill Readiness, in the forecast or in Recurring Payments.
• Spending in a category you created yourself counted as Other in the forecast and in Insights. It now has its own line.
• Linking both sides of one transfer between your own accounts to a goal counted the money twice. Links you make from now on count it once. If a goal already counted a transfer twice, correct its amount under Current in Edit Goal.
• A goal named after a bill, such as fire insurance, could be offered that bill's payment. A match on the name now only suggests money coming in.
• A goal created in a company or other environment disappeared from it. New goals belong to the environment you have open.
• Edit Goal on the Goals tab opened an empty sheet. It opens the goal now.
• Detected monthly income in Settings read €0, and the emergency fund setup never filled it in. Both use the income the app finds now.
• Removing a duplicate transaction at launch could delete the copy you had edited, with your category correction or goal link. The copy that stays now keeps your edits.
• Accounts, categories and environments that arrive from iCloud show up without restarting the app, and "Synced with iCloud" appears only when syncing actually worked.
• Siri's monthly balance counts only the environment you have open, Siri answers in your language, and amounts added through Siri are stored to the cent.
• Questions about your spending are answered in German and Spanish too, and a question the app cannot answer no longer gets "not enough data" as a reply.
1.6.5 Sep 23
Numbers that add up. Bank exports that split the amount over two columns now import the right way round, categorising works again on iOS 27, and upcoming bills, subscriptions and net worth count only what belongs there.
Fixed
• A CSV export with the amount in a Debit and a Credit column was imported without a question and with the wrong sign: expenses could arrive as income, and incoming payments as €0. Both columns are now recognised and can be chosen under Map Columns. When an automatic import finds no money going out at all, or dated rows without an amount, the app asks which column is which instead of guessing, and remembers your answer for that bank's next file.
• Category corrections you make now also apply to OFX files and to CSV exports from most banks. Those rows arrived with a keyword guess already attached, so your own corrections, the account type and the on-device model never got a say.
• On iOS 27 and iPadOS 27, the on-device model that sorts transactions into categories never got to run: it is not quite ready the moment the app starts, and the app gave up on it until the next launch. Categories fell back to simpler keyword rules. The app now tries again and uses the model.
• On iPhone and iPad, Forecast multiplied every category by a whole month: a €250 energy bill could read €7,000. It now counts from today, and the list under the forecast says what it is — this month's pace, for the four biggest categories, not a split of the total above it.
• A salary could appear under Upcoming Bills as money going out, and was counted in Bill Readiness. Only outgoing payments are bills now.
• A bill you had just paid could come back as a new bill a month later. The payment that settles a bill is no longer predicted again.
• The savings tip in Financial Health asked you to save at least 10% of your income, but the score only gives savings full marks from 20%. The tip now says 20%.
• Loan and mortgage repayments were listed under Subscriptions and counted in its totals. They recur, but they are not something to cancel; the Subscriptions total drops by any repayment it was counting.
• Net Worth added up every environment at once, so a company's mortgage could land in the household's net worth. It now shows only the environment you are looking at, and items you add belong to that environment.
1.6.4 Sep 18
Where the money went. Every transaction now keeps the counterparty's account number and shows it — the one detail a renamed counterparty cannot disguise, and the first thing to check on a VAT payment or a supplier invoice.
New
• The counterparty account number is stored and shown for every transaction that carries it: CODA and MT940 statements always do, most CSV exports do not.
• Re-import a statement you already imported and the rows you have gain their account numbers; nothing on file is overwritten.
Fixed
• Confirming an import twice could save the file twice. The rows looked like ordinary repeated payments while quietly doubling every total. An import can now only be confirmed once, and any rows an earlier double import left behind are cleared the next time the app opens.
• iCloud sync of environments, goal links and the net worth history had stopped silently since 1.5.0. It works again; nothing to do on your side.
• Subscriptions, the forecast and insights are much quicker on a long history: a merchant's name is worked out once and remembered, instead of being recalculated for every transaction every time a screen is drawn.
1.6.3 Sep 14
Financial environments. Keep your household, your company and your club apart in one app — and everything that had piled up since 1.3.2.
New
• Environments. Every bank account belongs to exactly one environment, and no analysis ever mixes them: a company invoice can no longer distort your personal savings rate. Switch between them at the top of the Journal and Insights; create and manage them in Settings › Environments. A wizard sorts your existing accounts, and changes nothing until you confirm. Budgets, goals, category rules and backups all follow the environment.
• A company's turnover gets its own category, Revenue — a paid invoice finally has a home.
• Net worth has a memory: the app records where you stand over time instead of reconstructing it later.
• What-if is a simulator. Change a monthly contribution and see what it does to your FIRE date — and what it would take to hit one.
• Full backups. Export everything, restore it anywhere: accounts, goals, rules, net worth, budgets, FIRE settings and your subscription decisions.
• You can overrule the subscription detector, and Insights shows where your income comes from.
• Zoom into any period by brushing the Journal chart; remove a transaction from a goal from the goal itself.
• Spanish. Five languages now, with real singular and plural forms everywhere.
Improved
• The forecast lists what is still expected to arrive — the salary on the 27th is what makes the month work — and treats a bill a few days past its date as late rather than missed.
• Recurring detection follows a merchant, not a spelling. When a bank renames its debit, the series continues instead of looking abandoned; when one company pays you both a salary and expense reimbursements, those are two series, so the salary is forecast.
• Category names appear in your language, and typed amounts are read the way Belgians write them (2.500,50).
• The AI answers about what the screen shows — the same environment, month and account — and sees enough of the earlier months to compare them.
• The offer to apply a category correction to similar transactions is back.
Fixed
• A health-score calculation that could freeze the app for fifteen seconds, and a crash while a list was redrawing.
• Numbers you could not believe: a retirement target of €7.17 million, a savings rate you had not achieved, account balances drifting from the moment you vouched for them.
• Model updates now arrive. They had been broken since March, on every version ever released, so your copy only ever used the model it was installed with.
• The emergency-fund default no longer drifts between screens.
1.5.0 Sep 4
Three fixes, all of them found while preparing the app's Dutch, French and German screenshots.
Fixed
• Recurring Payments never found anything. The card needs to see a charge three times before it calls it a series, but it was only ever handed the current month — and a monthly subscription can appear once in a month. So it always reported nothing, while the spending forecast directly below it was quietly predicting recurring costs. It now reads your full history and lists Netflix, your rent, your telecom bill and the rest.
• Counts that were written in English no matter the language. The Financial Health card said "10 bills" in Dutch, French and German alike, and the custom-category list did the same with its transaction count. Both are translated now, with the singular and plural each in their own form.
• Amounts no longer break across two lines on a savings goal. A longer figure such as € 10.000,00 could split mid-number, leaving a stray "0" on the line below. It now scales to fit.
1.3.2 Aug 19
Six fixes: where your imports land, and five numbers that were wrong.
Fixed
• An import now starts in the account you are looking at. With the Journal filtered to one account, the import still offered the first account in the list, so a business statement could land in your private account with nothing to warn you but a picker below the fold.
• The duplicate count now matches what actually happens. It compared the file against every account, while the import itself only compares against the account you chose — so a statement already imported somewhere else announced that nothing new would be added, and then added all of it.
• The monthly summary and Spending Insights at the top of the Journal now follow the account filter. They totalled every account while the list underneath showed only one, so filtering to your savings account still reported the whole household's income and expenses.
• Transfers between your own accounts survive an import again. The counterparty account number was being dropped while reading Belgian semicolon CSV files, so a transfer to your own savings could be filed as an ordinary expense and counted as spending.
• And they stay put. A re-categorisation pass — which runs after an import and whenever the categories are updated — could turn a recognised movement between your own accounts back into spending, so the same file looked right one day and wrong the next.
• A CSV the app cannot read now opens the column picker instead of failing with an error. It could settle on a layout it was confident about but could not actually read, and then give up rather than ask you.
1.3.1 Aug 11
Multiple accounts — the big one.
• Add your accounts and give each a type: current, savings, pension savings, investment, credit card or business. The type does real work: money leaving a savings account is filed as a withdrawal, money arriving as a deposit, without you correcting anything.
• Filter the Journal and Insights by account, or view everything together
• Money moved between your own accounts is recognised as one movement seen from both sides, not as spending on one and income on the other. Current-to-savings is recorded as saving.
• IBANs are checked as you type, entirely on your device, and your bank is filled in for you — no lookup, no network call
• Business categories: accountant, VAT refund, supplier invoices, leasing, device repair, AI tools and more
• Subscriptions are split between business and private
• The FIRE calculator ignores business accounts, so company turnover no longer inflates your retirement target
Fixed
• Correcting a recurring charge now offers to fix the other months too — previously it stayed silent when only the subcategory changed
• The account filter is applied everywhere in Insights, including the health score and the forecast
• Both home-screen widgets now show your real figures, and fall back to the most recent month with data instead of an empty one
• iCloud sync genuinely works. It never has until now, and the app said "Synced" regardless — it will now tell you when something is wrong
• Choose exactly what to erase instead of all-or-nothing
1.3.0 Aug 10
NEW: Subscriptions
• Every recurring charge in one place — see what it costs per month and per year
• Price-increase alerts ("Netflix went €13.49 → €15.99")
• See which subscriptions renew this week
• Spot charges that quietly stopped
NEW: Financial Independence (FIRE) calculator
• Your FIRE number, Coast FIRE and time-to-FIRE, auto-filled from your own spending
Also in this update:
• Smarter automatic categorization of Belgian merchants
• Bug fixes and small improvements
1.2.0 Jul 23
Small polish release.
• Removed a leftover menu option that didn't do anything
• Added a short "Why sign in?" explainer in Settings — signing in stays optional, and we're more honest now about what it actually unlocks (helping the categorizer get smarter over time)
• Fixed a caption that wrongly suggested signing in would sync your transactions across devices — it doesn't, that's iCloud's job, and your data still stays on your device
• Cleaned up a few untranslated labels on the Account screen
1.1.1 May 20
Stay Steady 2.3.1
• Your accounts open at once, even with thousands of transactions. That screen could hang for up to twenty seconds.
• Correcting a category, editing a transaction or importing a file no longer makes the app wait.
• Card payments reading "CRF EXP" are recognised as Carrefour Express, and a university college (hogeschool) is filed under Education > Tuition instead of School.
more Version 2.3.1 Oct 19
Data Linked to You The following data may be collected and linked to your identity:
Location Contact Info Identifiers Usage Data Diagnostics Data Not Linked to You The following data may be collected but it is not linked to your identity: