What your bank feed can't tell you (and why I categorize everything)

Will Washburn··6 min read

A bank feed is a record of money leaving your account. It is not a record of what you bought. Those two things feel identical when you’re scrolling a list of charges, and they are not remotely the same, which is why “where did my money actually go” is a much harder question than it looks.

I’ve spent years trying to answer it. Here’s what the feed can tell you, what it can’t, and why I ended up categorizing every single transaction.

The feed knows who took the money

Open any raw transaction list and you get three facts per row: a date, an amount, and a merchant string. That string is written by a payment processor for a payment processor, and it looks like this:

That is genuinely useful information. It tells you the money is gone, when it left, and roughly who has it now. Your bank has done its job. It is a ledger of transfers, and it is accurate.

But look at what it doesn’t say. The first three characters of two of those lines aren’t the business at all, they’re the processor (SQ is Square, TST* is Toast). The same coffee shop can show up as three different strings across six months depending on how it takes payment. And the Amazon line has a transaction ID where a description should be.

Three questions, and the feed answers none of them

When I sit down to look at a month, I’m really asking three things in order, and a raw feed stops short on all three.

Who was this actually? Before you can count anything, the four different strings your grocery store has used need to be one merchant. Otherwise every total you compute is quietly split across spellings. This is unglamorous plumbing, and it has to happen first.

What kind of spending was it? A merchant is not a category. Target is groceries and household and a birthday present. A hardware store is home maintenance until the month you’re fixing the rental, and then it’s something else entirely. The category is a judgment about the money, and only you can make it. What software can do is make the same judgment you made last time, automatically, so you’re correcting exceptions instead of starting from a blank slate.

What was in the basket? This is the one nothing in the banking system will ever tell you, because the information never travels with the payment. The merchant knows. Your bank doesn’t, and neither does anything reading your bank.

The Costco problem

One charge. $214.86. Costco.

Inside it: two weeks of groceries, a case of paper towels, motor oil, and a sweatshirt. Four different categories in one line item.

You have three bad options and one good one. You can file the whole thing under groceries, which inflates groceries and hides everything else. You can invent a “Costco” category, which tells you nothing you didn’t already know. You can leave it uncategorized, which I’ll come back to because it’s worse than it sounds.

Or you can split the charge into its actual parts. That’s the good option, and it’s the only one that leaves your grocery number meaning “groceries.”

I split these by hand for years in a spreadsheet, which worked exactly as well as you’d expect, meaning it worked until the week I got busy. In Telemetry a charge divides into categorized line items that still sum to the original amount, so the split never breaks the books. For Amazon and Target, a browser extension reads the order details and brings the real line items in, because those two publish an order page worth reading. For a warehouse run, I split it manually in a few clicks. Being honest about which is which matters more to me than pretending everything is automatic.

Uncategorized is not neutral

Here’s the part I got wrong for the longest time. I assumed that leaving things uncategorized was a partial answer. Some spending sorted, some not, and the sorted part was still true.

It isn’t. An uncategorized pile doesn’t just hide its own contents, it corrupts every conclusion you draw from the categories you did sort. If 18% of your outflow sits in a bucket called Uncategorized, then your grocery number is not “what I spend on groceries.” It’s “what I spend on groceries, excluding an unknown amount of groceries.” Every comparison you make against last month inherits that error, and worse, the error moves around. A quiet month for unsorted charges makes the sorted categories look like they grew.

That’s why I categorize everything rather than just the categories I’m actively watching. Not out of tidiness. The categories I watch are only trustworthy if the ones I don’t care about are also accounted for.

It has to be automatic, or you’ll stop

I already wrote about how my budgeting system got too heavy to run by hand. Categorization is where that weight actually lives. It’s not hard work, it’s just relentless. A few hundred transactions a month, each needing a small decision, most of them the same small decision you made last month.

Any system that depends on you doing that reliably is a system that will be accurate for about five weeks.

So the rule I settled on is that the software makes the first pass and I make the corrections. Transactions arrive already sorted, following the rules built from how I’ve categorized before. I review what came in, fix what’s wrong, and the fix becomes the rule for next time. The work compresses to minutes, and more importantly it compresses to something I’ll actually keep doing in month seven. That’s the only quality bar that matters for a habit.

What you can finally ask

Once the feed has been normalized, categorized, and split, the questions get interesting, because they’re finally about your money and not about your data:

None of those are answerable from a list of charges. All of them are answerable from a list of charges that has been given meaning.

That’s the whole argument for categorizing everything. The feed is raw material. The categories are the product. Your bank has no obligation to build that second thing for you, and it never will, because it isn’t their question. It’s yours.

If you want to see how Telemetry handles it, the budgeting side covers automatic categorization and pacing against targets, connect and import covers getting the transactions in read-only in the first place, and itemization covers splitting a charge into what was actually in the basket. If you’re earlier than that and want the foundation first, start with budget basics.

#budgeting#categorization#transactions#personal finance

Get new posts by email

Occasional writing on net worth, the options wheel, and budgeting. No spam, unsubscribe anytime.