Where Money Docs

Using the app

Net worth

Three tabs, and a second ledger that has nothing to do with your imports.

Everything else in Where Money is built from bank exports. Net worth is not: you type it, one row per holding, as often as you want to. That is the point — savings accounts are deliberately never imported, so anything the app derived from your statements would measure which files you uploaded rather than what you hold. A table you fill in yourself is complete because you filled it in.

The two ledgers share exactly one thing, the exchange rates. No net-worth figure appears in a spending total, and no imported transaction moves a net-worth figure.

  • Records is where you write a day down.
  • Holdings is where you say what you own and owe in the first place.
  • Net Worth is where you read the result. For what the figures mean, see How net worth is worked out.

Writing a day down#

A record is what you held on one day. One per date, as many in a month as you like — the end of every month, the 1st and the 15th, or the day a statement lands. Nothing is due on a schedule and nothing is missing if you skip a while.

The strip across the top is one year, a tick per record, its bar scaled against that year's largest. Click a tick to open that day. Click + new at the end and give it a date, and the record is built for you: every holding you track already listed, each at the last balance it was seen holding, Added and Withdrawn blank. A holding you have never filled in starts at zero, so the very first record is the whole list at 0,00.

The tab itself opens on today — a fresh record carried forward, or today's own record if you already wrote one. A day already on file is only ever opened deliberately, from the strip, and saving over one asks first: a saved record is a finished statement, and replacing its figures should never happen by accident.

That carry-forward is the whole reason the tab exists. You are updating balances, not re-typing a table, so a copy is a head start. Added and Withdrawn deliberately do not carry over — a leftover flow would silently claim money moved that did not.

"Last seen" reaches back through the whole history, not just the record before. Leave one holding out and it comes back at the figure it last had, because it is still yours — not at nothing, which would read as money that vanished. A holding you are genuinely done with is one you hide; hidden holdings are not listed in new records at all.

As of is the record's identity, not a detail of it. Change it and the record moves to that day; change it to a day you already wrote down and the app refuses, because a day cannot be true of itself twice.

Then you type up to three figures per row:

ColumnWhat goes in it
BalanceWhat the holding is worth now, in its own currency. Always a positive number, including for a debt — the class decides the sign.
AddedWhat you put in since the record before this one. For a mortgage, the whole payment you made — the interest comes out on its own (see below).
WithdrawnWhat you took out since the record before this one, also typed positive. The record stores the net of the two, so a month with both is one flow with one sign.

PLN is computed as you type, and Δ vs 3 Mar shows the change against the record before this one. That last column is worth watching: a misplaced decimal shows up there as a five-figure move before it ever reaches your history.

The first record of a holding, and what it cost#

A holding's first record is the one the app cannot read anything into. There is no earlier balance to subtract, so the whole figure is recorded as appearing rather than as growing — right for the flat you have always owned, and a waste of what you know about the ETF you have been buying for six years. Your broker prints the profit on that screen. Profit % is where you say it.

It appears on a holding's first record only, and only on holdings a return is measured on — not on cash, not on a debt. Every other row shows a dash there.

Type the percentage and Added becomes what the holding cost you.

If you know the cost rather than the percentage, type it into Added and press cost beside it. That says the amount is what you paid, and the percentage is worked out from it. The app will not make that reading on its own, and does not show you what the figure would be if it did: 20 000 arriving with 500 typed next to it is an old account you paid 500 into far more often than it is a position that grew forty-fold, and a percentage offered on the wrong reading of that is worse than none — it looks like something the app knows.

Clear the cell with × and the row goes back to being an ordinary arrival.

A balance of 48 900 that cost you 43 466,67 is recorded as 43 466,67 of capital arriving and 5 433,33 earned — and the Overview reports it as +12,5 %, the figure you typed, not a second one derived from it.

On that record the amount column means what it cost, not what you added this stretch, and it is shown outlined to say so. The two never compete: "since the record before this one" has no meaning on a record with nothing before it. Everything after it is measured the ordinary way, against the balance you just wrote down.

For what it does to the arithmetic, see A first record that says what it cost.

⏎ moves down the same column, because filling one in goes column by column — you read ten balances off ten bank tabs, then you type what you added and what you took out. ⌘⏎ saves. A record is saved whole, in one go.

Leaving a row blank#

A blank balance means the holding is not in this record — not that it is worth zero. The row is dropped when you save, and the app confirms first, telling you how much leaves net worth.

That fall is recorded as a restatement, never as a loss. But if you actually withdrew the money, the better entry is a balance of 0 with the amount in Withdrawn — that names it a withdrawal, which is what happened, and the two produce the same net worth.

To stop a holding being offered next time without touching the records it is already in, hide it on the Holdings tab.

Holdings and classes#

A holding is one thing you own or owe: an account, a fund, a flat, a loan. The Holdings tab is where you add, rename, re-class, re-denominate, hide and delete them — its own screen, because writing a day down is a rhythm and renaming a holding is something you do once and leave alone. (Adding one is also available inline while you fill one in, for when you notice a row is missing.)

Renaming keeps every record a holding appears in: the records point at the holding, not at its name. Hide one you no longer hold and it stops being carried into new records while every figure it already has keeps counting. Deleting is only offered once no record uses it.

Each holding belongs to an asset class, and the class decides how it counts:

KindMeansIn net worthIn the allocation %
financialthe pot you can reallocate — cash, deposits, bonds, funds, cryptoaddedyes
ownedproperty, vehicles — real, but not something you rebalanceaddedno
owedmortgages, loanssubtractedno

Each class also says whether a return is measured on the money in it. It ships off for the three cash classes — a current account's balance moves with your life, not with a market — and on for everything else. Untick it for any account you spend from: the money still counts in net worth and in the allocation, but its movement is reported as cash moved rather than as a gain or a loss. See How net worth is worked out.

A new database starts with ten classes (Cash PLN/EUR/USD, Deposits, Bonds, ETF, Crypto, Property, Vehicle, Mortgage & loans). They are a starting point, not a schema — rename, re-kind, reorder or delete any of them. The app never re-creates them.

The valuation date and exchange rates#

As of is the day the figures were read off. Every rate is looked up for that date: the NBP table published on it, or the most recent one before it if that day had none — a weekend reaches back to Friday.

This is deliberately not the D-1 rule the import path uses. A transaction was priced by the bank off the previously published table, because at the moment it happened today's table did not exist yet. A snapshot is typed days later about a date already past, where the table for that day exists and is the honest answer.

Each non-PLN currency gets a row showing its rate and where it came from. Override replaces it with one you type; the app records that you did.

If no rate is on file, the row says so and offers to fetch it from NBP right there — one currency from its own row, or every missing one at once from the button beside the date. It asks for the ten days up to the valuation date, the same span the lookup reaches back over, so a Sunday still lands a table. Writing a day down is one flow, and a missing rate is not a reason to leave it; the Rates tab is still where you fetch a whole year at once. Saving is blocked until every currency has one, because a figure priced at nothing would sit in your history forever.

The rate is stored with the record. A later correction to the rate table does not rewrite a day you already saved.

Big one-off expenses#

The list under the table is the answer to "why did net worth barely move" — a new laptop, a kitchen, a car repair. It is context, kept beside the record and shown in the Overview's header, and it is deliberately not part of the arithmetic above. Amounts are signed, so a one-off inflow works too.

What these figures mean#

The note at the bottom travels with the record and is carried into the next one, because the convention is the thing that quietly drifts. Something like "after tax and the accountant, after the transfer to the joint account, after this month's investments" — so that a year from now the figures still mean what you meant.

Reading it back#

The Net Worth tab opens on the newest record and shows:

  • the headline, with Net worth and Financial only as two readings of the same day — the second is the pot the allocation is measured over;
  • the allocation bar and legend, with each class's share and how it drifted — a legend row and the band above it are one target, as on the spending Overview;
  • Where the change came from — added versus return, and what merely moved into or out of the picture;
  • Net worth over time, a point per record on a real date axis, with a second line for the money you put in — the gap between the two lines is what your money earned;
  • Allocation drift, in share points or in złoty;
  • What each holding earned over the last three months, the last twelve, or everything on file. Those are windows of days, so they mean the same thing however often you write, and the rates read either over the whole range or per year, which is what makes two stretches of different lengths comparable. See How net worth is worked out.

Click a band of the bar or its legend row to open the class: every record it appears in, with its holdings summed. Where a class holds more than one, narrow to beside the title cuts the same panel down to a single holding. A row of What each holding earned opens it with that holding already picked.

It opens under whichever widget you used — above the four panels for the bar and its legend, below them for a Performance row — so the answer arrives where you were looking rather than at the foot of the page. From there, edit jumps back to that day to fix it.

Where Money is independent software, not connected to any bank, and its figures are not a substitute for your bank's own statements. Privacy, disclaimer & terms.