Back to blog
· 9 min read

Categorize bank transactions with rules

Manual categorization doesn't scale. Here's the rule-based approach that stays accurate as spending changes, plus a starter category list.

Manually categorizing bank transactions is one of those tasks that feels productive for about ten minutes and then quietly becomes the reason you stop tracking your spending altogether. The transactions arrive faster than you can label them, the categories you picked in January don’t quite match what you actually spend on by June, and you end up with a spreadsheet that’s three months out of date.

The fix isn’t discipline. It’s changing the model - from “tag every row” to “write a rule once, let it apply forever.”

Why manual categorization fails

Three reasons, in order of severity:

  1. Volume. A single person on a normal card produces 40-100 transactions a month. A small business produces 200-500. Even at 5 seconds a row, that’s a chore you’ll skip.
  2. Consistency. Two months later you can’t remember whether “Amazon” was “Household” or “Personal.” The categories drift, comparisons break.
  3. Restart cost. If you get behind, catching up feels harder than starting over. So you start over. Then you get behind again.

Rule-based categorization, in one paragraph

Instead of tagging transactions, tag patterns. A rule says “any transaction whose merchant or description matches UBER, LYFT, or BOLT is Transportation.” You write it once. Every future transaction that matches the pattern gets that category automatically, forever. When a new merchant appears, you write one more rule.

The rule list becomes an asset that gets more accurate over time. After a few months, 90-95% of transactions land in the right category with zero intervention. The remaining 5-10% are one-offs and edge cases you actually want to look at.

How to structure your rules

Three signals cover almost everything:

  • Merchant / description keywords. The strongest signal. Match on the merchant name your bank puts in the description field.
  • Amount ranges. Useful for splitting cases like “small Amazon purchases = Household, big Amazon purchases = Equipment.”
  • Account type. A transaction on the business card should default to a business category even if the merchant is ambiguous.

Order matters. Put specific rules above general ones - a rule that catches AMAZON PRIME as Subscriptions should sit above a rule that catches AMAZON as Shopping.

A starter category list you can steal

Ten categories is the sweet spot for most people. Fewer, and everything ends up in “Other.” More, and you spend energy deciding between near-identical buckets.

Personal

  • Housing - rent, mortgage, utilities, home maintenance
  • Groceries - supermarkets, food delivery boxes
  • Dining - restaurants, cafes, food-delivery apps
  • Transportation - rideshare, fuel, public transit, tolls, parking
  • Subscriptions - streaming, software, memberships
  • Shopping - Amazon, clothing, household goods
  • Health - insurance premiums, prescriptions, gym
  • Travel - flights, hotels, holiday spending
  • Income - salary, refunds, interest
  • Transfers - moves between your own accounts (should net to zero)

Small business

  • Revenue - customer payments
  • Payroll & contractors
  • Software & subscriptions
  • Marketing & ads
  • Travel & entertainment
  • Office & equipment
  • Cost of goods sold
  • Taxes
  • Bank fees & interest
  • Owner draws / transfers

A workflow that stays current

  1. Import the latest statement.
  2. Filter to “uncategorized.” Usually a handful of rows.
  3. For each row, decide: is this a one-off (assign category directly) or a pattern (write a rule)?
  4. Re-apply rules. Confirm the transaction count in “uncategorized” drops to zero.

That’s the whole loop. Five minutes a statement, no matter how many transactions.

Where AI fits (and where it doesn’t)

The recurring question is: why not just ask an AI to categorize everything? The honest answer is that AI categorization looks great in demos and fails in the ways you can’t audit. The same charge from the same merchant gets different categories in different months, you can’t see why, and you can’t fix it without retraining. For personal budgeting that might be tolerable. For business books, tax prep, or anything an accountant will look at, it’s not.

Rules give you the opposite guarantee: the same input always gives the same output, and you can read the rule that produced it. AI still has a role - extracting line items from receipts, suggesting a category for a merchant you’ve never seen - but the source of truth stays the rule list.

Do it once, run it forever

The reason people give up on categorizing transactions is that they treat it as recurring work. It shouldn’t be. Spend an hour writing a solid rule list against last year’s statements, and you’ll never spend more than five minutes on any month after that.

Karchu is built around this idea. The rule engine ships with defaults for common merchants and gets out of your way once you’ve added your own. Try it against your last statement and see how much of the categorization is done for you already.

Try Karchu on your own statement

Free 30-day trial. Upload a CSV, Excel, or PDF statement and see categorized transactions in under two minutes.

Start free →