Blog

How Finance Apps Categorise Your Transactions Automatically

13 min read
 1920s mail clerk sorting envelopes into wooden pigeonholes labelled Groceries, Transport, Coffee, Bills and more.
Every transaction sorted to where it belongs, quietly and at speed.

Open your banking app and look at last week's transactions. The chances are you will see a few lines like WWW.AMZNMKTP*2K4, TFL TRAVEL CH, SQ *BLUE BOTTLE, PAYPAL *STEAMGAMES, IZ *CORNER SHOP. Cryptic, shouty, half-abbreviated. Not one of them tells you in plain language who you paid or what for. A good finance app fixes that automatically. It turns that wall of code into Amazon under Shopping, Transport for London under Transport, Blue Bottle under Coffee, each with the right logo, before you have done a thing. The breakdown of where your money went just appears, sorted and readable. The obvious question is how. How does an app look at SQ *BLUE BOTTLE and know it was a coffee rather than a software subscription, and, for anyone who thinks about their data, how does it work that out without learning too much about you? This explains how automatic transaction categorisation actually works, why some apps are far better at it than others, and what happens to your information along the way.

Why Bank Descriptions Are Such a Mess

It helps to understand why the raw data is so ugly in the first place, because that is the problem categorisation has to solve. The text on your statement was never written for you. It was written for the payment system, the chain of processors and card networks that move the money from your account to the shop's, and it carries whatever those systems happen to pass along. Readability for a human at the end of the month was nobody's priority.

The result is the merchant's name welded to codes that mean something to a bank and nothing to you. A payment processor stamps its own prefix on the front, which is why so many transactions open with SQ for Square, PP or PAYPAL, IZ, or some other run of letters that has nothing to do with the shop you actually walked into. The merchant name is then truncated to fit a tight character limit, so Marks and Spencer becomes MARKS&SP and your local restaurant becomes a fragment of itself. A location code, a store number or a payment reference gets tacked on the end. And the whole lot arrives in capital letters, because the systems underneath were built long before anyone worried about mixed case.

Put a few of them side by side and the gap between what the bank shows you and what you actually did becomes obvious.

What your statement showsWho you actually paidLikely category
WWW.AMZNMKTP*2K4AmazonShopping
TFL TRAVEL CHTransport for LondonTransport
SQ *BLUE BOTTLEBlue Bottle CoffeeCoffee
PAYPAL *STEAMGAMESSteamGames
IZ *CORNER SHOPThe Corner ShopGroceries

None of that is the bank being unhelpful on purpose. It is raw plumbing, surfaced without translation. The work of categorisation is to turn the plumbing back into something you recognise, and to do it for the hundreds of transactions that pass through a typical account in a month, quietly, without you having to lift a finger.

What Categorising Actually Means: Two Jobs

Categorising sounds like a single task. It is really two of them, and they are easy to muddle together. Pulling them apart is the key to understanding why it sometimes goes wrong.

The first job is identification: working out the payee, the actual business behind the cryptic string. SQ *BLUE BOTTLE has to become Blue Bottle Coffee. This is the harder of the two, because it means peeling away the processor prefix, the truncation and the trailing reference codes to find the real name underneath, and then recognising that this particular name belongs to a coffee roaster and not, say, a homeware shop with a similar one.

The second job is classification: deciding what kind of spending it is. Once the app is confident the payee is Blue Bottle Coffee, it can file the transaction under Coffee, or Eating Out, or whatever sits in your category structure. A supermarket lands under Groceries, a railway under Transport, a streaming service under Entertainment. Classification leans on identification: get the payee right and the category usually follows, but get the payee wrong and the category follows it straight into the wrong place.

Most good apps add a third, lighter touch on top: the brand logo, so your list shows the Amazon mark beside Amazon instead of a grey placeholder. It is cosmetic, but it turns a list you have to read into one you can scan in a second. The thing to hold onto is that all of this has to be right together. Identify the merchant but misjudge the category and your spending breakdown still misleads you. Two jobs, every transaction, performed silently in the background, and both have to land.

How Automatic Categorisation Works (the Layers)

Here is where the marketing around a lot of apps reaches for fashionable buzzwords. It is worth being plain about what is actually going on underneath, because the reality is both more interesting and more reassuring than the hype. The best categorisation is not a black box producing a fresh guess each time you open the app. It is a stack of algorithms layered on top of one another, each layer predictable in its own right, and the whole thing getting steadily better as it sees more.

The foundation is pattern matching, done in tiers. At the top sit the merchant strings the system has seen before, mapped straight to a clean payee and category: an exact match, instant and certain. When there is no exact match, it works downward through looser ones, partial matches on the part of the string that is recognisable, until it settles on the best available fit. Picture a series of filters running from strict to forgiving, rather than one clever leap in the dark. The strict filters catch the easy cases with total confidence, and the forgiving ones handle the awkward remainder without pretending to a certainty they do not have.

The second layer is where it gets genuinely clever, and it is the part most apps quietly skip. When you recategorise something, when you drag a transaction the app filed under Shopping into Hobbies, the system records your correction as a signal and remembers it. The next time that merchant appears, it lands where you put it, not where the default sent it. The better systems learn in both directions: not only what the right answer is, but what the wrong answer was, so the same mistake is less likely to come back. That negative signal, the explicit record of what a thing is not, is as useful as the positive one, and it is surprisingly rare in practice.

The third layer is the quiet one that makes the whole thing feel effortless. A genuinely obscure merchant, a tiny independent shop, a regional service nobody outside one city has heard of, only has to be worked out once. After it has been solved, that mapping can help everyone, so the next person who pays the same obscure merchant gets a clean result with no effort from anybody. This shared learning is built on anonymised patterns, with no personal identifiers attached. The system learns that one particular cryptic string corresponds to one particular shop. It does not need to know, and does not carry, anything about who paid, how much they earn, or what the rest of their finances look like. The pattern is shared. Your data is not.

The fourth layer is the one you actually see: matching the cleaned-up payee against a large library of brands to attach the right logo. It is the smallest piece technically and the one that makes the strongest first impression, because a list with logos reads at a glance where a column of grey rows takes real effort.

Stack those layers together and you can say something plainly that is worth saying. This is a range of algorithms that improve with use, not a system that guesses. It is predictable. The same transaction categorised today will be categorised the same way tomorrow, and when the answer does change, it changes for a reason: because you corrected it, or because the shared, anonymised patterns got better. It never shifts at random. For most software that predictability would be a dull virtue. For something sorting your money, it is the whole point.

Why Some Apps Get It Right and Others Don't

If the method is so well understood, why is one app a quiet pleasure and another a daily irritation? The difference is in how much of the work each one is actually willing to do. The first divider is depth. A shallow system knows the big, obvious merchants and gives up on the rest, leaving you with a screen full of Uncategorised and the cryptic strings still staring back. A deep one keeps matching down into the awkward cases: the small merchants, the unusual processor prefixes, the regional names that never make a global list.

The second divider is whether the app genuinely learns. Plenty of them let you change a category and then make the exact same mistake the following month, because your correction touched that one transaction and nothing else. An app that learns turns every correction into a standing rule. Over a few weeks the gap compounds: one app gets quietly, steadily better, while the other stays precisely as wrong as it was the day you installed it.

The third divider is control, and it matters more than it sounds. The best apps show you their working and let you confirm or correct before anything is set, rather than silently filing everything away and hoping you do not look too closely. You stay the final authority on your own money. We have written separately about why reviewing your transactions beats blind auto-import, and categorisation is the clearest argument for it: let the system do the heavy lifting, but keep the veto for yourself.

Does It Work Outside the US and UK?

There is one failure that is widespread and rarely advertised. A great many apps categorise American merchants beautifully, handle the big British names well enough, and then come apart the moment you spend anywhere else. A coffee in Berlin, a supermarket run in Madrid, a tram ticket in Amsterdam, and suddenly everything is Uncategorised again and you are back to reading codes.

The reason is not mysterious. Categorisation is only ever as good as the patterns it has learned, and a system built and tested mostly on English-language, US-centric data has simply never seen a French supermarket chain or a Norwegian transport operator. The strings look different, the local processors are different, the names are different, and the matching has nothing familiar to grip. It is not that the underlying method cannot cope. It is that nobody ever fed it the examples.

This is the real test of a categorisation system, and it is where the distance between apps is widest. Handling Amazon is table stakes. Handling a mid-sized retailer in the Netherlands, or a regional service in Belgium, with the same accuracy is the hard part, and it only comes from learning across many markets rather than one. It matters most if your money already moves across more than one country or currency, where a single month can mix pounds, euros and a fee in dollars. The privacy point holds wherever you spend, too: the patterns that make any of this work are anonymised, with no personal identifiers attached, whether the merchant is in Manchester or Munich.

How Endute Categorises Your Transactions

This is the problem Endute has spent a long time getting right, and it is, honestly, one of the parts we guard most closely. The shape of it is the same stack described above, built deliberately and without any of the fashionable buzzwords. The aim was never to sound clever. It was to make the category you see almost always the right one, across as many countries as possible, without ever needing to know anything personal about you to do it.

At its core is a five-tier payee-matching system. It works from exact, certain matches at the top down through progressively looser ones, so each transaction is identified at the highest level of confidence available rather than guessed at when the evidence is thin. It learns from every review you make, treating both your confirmations and your corrections as signals, the positive and the negative alike, so it gets the merchant right more often the longer you use it. When a tricky merchant is finally worked out, anonymised global enrichment means that solution helps everyone, so obscure shops get cleaner over time for the whole community without a single personal detail changing hands. And a large brand library attaches the right logo, so your transaction list stays readable at a glance. No black box and no guessing: a range of algorithms that learn from how people actually use the app.

The proof is in the acceptance rate. Across our users, more than 80% of the categories Endute suggests are accepted exactly as they are, which means that most of the time the sorting is simply done and you move straight on. Just as telling is where that accuracy holds. It is not only strong for the US and the big UK names, but consistently high across major European markets too, among them the Netherlands, Norway, Belgium, France, Spain and Germany, the places where weaker systems quietly fall apart. And you are never shut out of the loop: every transaction is yours to confirm or change, every change feeds straight back in, and you can see how it all fits into the wider app or sits alongside the budgeting tools that the clean data powers.

Categorisation only matters once the transactions are actually in front of you, and Endute brings them in from banks across the European Union, UK, Canada, and the United States through open banking, with CSV import and manual entry covering everything else. Worth saying plainly: Endute is not a bank. It reads your transactions to organise them for you and never holds or moves your money. Connected accounts refresh multiple times a day, the categorisation runs as the transactions arrive, and the whole thing sits inside a complete personal finance app where that clean, sorted data feeds your budgets, reports and spending breakdowns. You can try it on a 37-day free trial with no card required and watch your own wall of codes turn into something you can read.

When It Works, You Never Notice

Good categorisation is invisible when it is working. You open the app, and a week of cryptic codes has quietly become a clean, sorted picture of where your money went, logos and all, with nothing asked of you. The wall of WWW.AMZNMKTP and SQ *BLUE BOTTLE is simply gone, translated into something you can read at a glance and act on without a second thought.

The clever part was never magic, and it was never a black box making things up. It is a system that pays attention: matching what it already knows, learning what it does not, sharing the lesson without sharing you, and getting a little sharper every single time you use it. The better it gets, the less you notice it at all. That is rather the point.

Transaction Categorisation FAQs

How do finance apps categorise transactions automatically?

They do two things. First they identify the payee, the real business behind the bank's cryptic description, by stripping out processor codes and truncation to find the name underneath. Then they assign a category, like Groceries or Transport, based on what that merchant is. The best apps manage it with tiered pattern matching plus learning from your corrections, so accuracy climbs the more you use them.

Why are bank transaction descriptions so confusing?

Because they are raw payment-system data, not text written for you. The description carries processor prefixes (the SQ, PP or PAYPAL you see at the start), the merchant name truncated to fit a character limit, and location or reference codes, usually in capital letters. It is the plumbing of the payment networks showing through. Categorisation exists to translate it back into plain language.

How does the app know what category a transaction belongs to?

It matches the merchant against patterns it has seen before, from exact matches down to looser ones, and it learns from how you and other people categorise things. That shared learning is based on anonymised patterns with no personal identifiers attached, so a tricky merchant only has to be worked out once and then everyone benefits, without anyone's financial details being shared.

Is the categorisation predictable, or is it just guessing?

It is predictable. The system works through a range of algorithms that match merchants to known patterns and learn from corrections, so the same transaction is categorised the same way each time and the results get more accurate as you use it. It is not a black box that produces a different answer at random. When the categorisation changes, it is because you corrected it or because the shared, anonymised patterns improved, never by chance.

Does automatic categorisation work for non-US and non-UK banks?

With a good system, yes. The weaker apps handle American and big British merchants well and then struggle elsewhere, because they learned mostly on US-centric data. A system that learns across markets keeps its accuracy abroad. Endute, for one, holds a high acceptance rate across major European markets, not just the US and UK.

Can I correct a wrong category?

Yes, always, and you should. A good app lets you change any category, and the better ones treat your change as a lasting signal rather than a one-off edit, so the same merchant lands in the right place next time. Every correction you make trains the system to do better, both for that transaction and for similar ones in future.

This article is for educational purposes only and does not constitute financial advice.