Open any abandoned budgeting app and the shape is identical. Somewhere between thirty and fifty categories. A dozen with a single transaction in them from the week the account was set up. Two or three doing all the work. And one — usually called Other, Miscellaneous or Uncategorised — quietly holding a fifth of everything, including several things that would have been genuinely interesting to know about.
The standard diagnosis is that the user gave up. The more accurate one is that the category set was never capable of producing an insight, so the effort of maintaining it earned nothing and stopped.
A category is not a filing system. It is a question you intend to ask about your money, written down in advance. If you cannot say what you would do differently depending on the answer, the category is decoration.
The test a category has to pass
Before creating one, finish this sentence: "If this doubled next month, I would ______."
- Groceries doubled → I would look at whether we are shopping differently, or whether prices moved. Actionable. Keep.
- Rent doubled → I would move, eventually, but nothing changes this month. Worth tracking as a committed cost, not worth reviewing monthly.
- Subscriptions doubled → I would find out which one and cancel something. Sharply actionable, and specific enough to act on within ten minutes. Keep.
- "Shopping" doubled → I would... look at the list of transactions to find out what it actually was. That category did no work. Its only function was to defer the question.
That last case is the one to watch for. Any category whose answer is "I would need to look at the individual transactions" is not a category — it is a folder, and you would have been equally well served by the search box.
Too many is the usual failure
There is an intuition that finer categories mean better information. In practice the opposite holds, for two reasons.
The first is statistical. Split spending finely enough and every category becomes small enough that ordinary variation swamps any trend. Coffee was $61 last month and $38 this month. Is that a change in behaviour or a month with a bank holiday in it? At that granularity you cannot tell, and a metric you cannot interpret is one you eventually stop reading.
The second is human. Every additional category is another decision at entry time, and the marginal ones are always ambiguous — is a work lunch Food or Business? Is a train to see family Transport or Family? Ambiguity is what fills the Miscellaneous bucket, because when the choice is unclear the fastest path is the catch-all.
The workable number for most households is eight to twelve top-level categories, with subcategories only where you have a specific recurring question. Twelve categories that are always filled in beat forty that are half-guessed.
The split that actually predicts behaviour
Beneath your categories, add one more dimension that most tools omit: how fast can this change?
Committed. Rent or mortgage, insurance, loan payments, school fees. Contractually fixed for months. You cannot alter these in response to a bad quarter, and reviewing them monthly is wasted attention — they get looked at once a year, on renewal.
Variable necessary. Groceries, fuel, utilities, childcare. You must spend something; the amount is influenced by behaviour and by prices. This is where a monthly review is genuinely worth doing, because it is the only band where attention changes the number.
Discretionary. Meals out, subscriptions, travel, things. Cuttable within a month if needed.
Two useful numbers fall out immediately. The proportion of income that is committed tells you how much shock your household can absorb — above roughly 55% and a bad month becomes an emergency rather than an inconvenience. And the discretionary total tells you what is genuinely available if income stops, which is a completely different figure from the total spending everyone quotes.
This split is also the one that survives contact with a real decision. When people actually need to cut, they do not cut "by category" — they cut the discretionary band and renegotiate the committed one, in that order.
A category set that cannot tell you what happens if your income stops for three months is a filing system, not a financial tool.
The question every budget is secretly about
Let the merchant code do the boring 80%
Most tools categorise by matching words in the transaction description. That field is a mess: the same coffee shop appears as SQ *THE COFFEE, IZ *COFFEE LDN and PAYPAL *COFFEEROAS, depending on which payment processor was in the middle.
Meanwhile, card transactions already carry a much better field that almost nothing uses: the merchant category code, a four-digit number assigned by the payment networks. 5812 is eating places. 5411 is groceries. 4121 is taxis and rideshare. 5541 is fuel. It is assigned by the acquiring institution to the merchant's business type, and it does not change when they rebrand, switch processors or get acquired.
Rules built on codes are stable in a way that text rules never are. Map codes to your categories once and the great majority of card spending files itself correctly and keeps doing so, including at merchants you have never visited before — which is the case text rules can never handle, because you cannot write a rule for a shop you do not yet know exists.
Two places the code is wrong, and both are predictable
Codes are assigned per merchant, not per purchase, so a supermarket that sells you a kettle files it under groceries, and a department store files everything as one code regardless of what you bought. And large marketplaces file everything under their own single code. Neither is a reason to distrust the mechanism; both are reasons to keep a small number of text overrides on top of it, for the handful of merchants where you genuinely care about the split.
Where text rules still earn their place
Merchant codes handle card spending. They do not exist for bank-side operations — transfers, standing orders, fees, salary, tax payments — which arrive with a description and nothing else. That is exactly where text rules are strong, because those descriptions are machine-generated and stable: the same reference every month, for years.
So the sensible arrangement is layered. Merchant code first, where one exists. Text rules second, for bank operations and for the specific merchants you want split out of their code's default. Manual assignment last, and — this is the part that matters — every manual assignment you make should be offered as a rule so that you never make the same one twice.
What to do with the Miscellaneous pile
Delete it. Not the transactions — the category.
Miscellaneous is not a category, it is a queue that nobody processes. Its existence removes the pressure that would otherwise force you to either create a real category or admit that the spending belongs in one you already have. Every tool that ships with an "Other" bucket ends up with 15–20% of spending in it, which is enough to invalidate every proportion you might calculate from the rest.
If a transaction genuinely does not fit, that is information: either it is a one-off, in which case put it in the closest real category and move on, or it is the first of a recurring pattern, in which case name the pattern now while you still remember what it was.
What this looks like in practice
| Common setup | Setup that survives a year | |
|---|---|---|
| Top-level categories | 30–50 | 8–12 |
| Subcategories | Everywhere | Only where a question needs them |
| Primary input | Description text | Merchant code, text second |
| Ambiguous transactions | Miscellaneous | Nearest real category, no catch-all |
| Second dimension | None | Committed / variable / discretionary |
| Manual corrections | Repeated monthly | Saved as a rule the first time |
| Question it answers | "Where did it go?" | "What can I change, and how fast?" |
The goal is not a beautiful pie chart. It is to be able to answer, in about ninety seconds, what happens to your household if income stops for a quarter — and to know which specific line you would reach for first.
See your own number instead of reading about someone else’s.
Import a statement, add your accounts, and get a real net-worth figure in an evening. Six months free, no card required.
Start free