Why categorising is the step that makes data useful
A bank statement on its own answers almost no questions. It tells you money came in and went out, but not how much you spent on software, how much came from each client, or whether you're actually profitable. Categorising is the step that turns that flat list into answers: group every transaction under a meaningful label — income, advertising, travel, supplies, fees — and suddenly you can total each one, compare months, build a budget, and file a return. Without categories, a statement is just history; with them, it's a management report.
The blocker is that statements arrive as PDFs, and a PDF can't be sorted, filtered or tagged. The first move, then, is always to convert: a bank statement converter rebuilds every transaction as a clean, editable row with a date, description and signed amount, so you have something you can actually categorise.
What categories you actually need
There's no single correct chart of categories — it depends on what you're trying to answer — but most people need a small, stable set rather than a sprawling one: an income side split by stream, and an expense side that mirrors the lines on your tax return or, for a personal budget, housing, groceries, transport, utilities and subscriptions.
The most important rule is consistency: use the same names every period so totals roll up and trends mean something. A transaction tagged "Software" one month and "Subscriptions" the next splits a real total into two meaningless halves. It also helps to keep a couple of housekeeping categories — Transfers (money moved between your own accounts) and Owner Drawings / Personal — so you can exclude non-income, non-expense movement cleanly.
| Use case | Typical income categories | Typical expense categories |
|---|---|---|
| Sole trader / freelancer | Client income, platform payouts | Software, travel, supplies, fees, professional services |
| Small business | Sales, service revenue | Advertising, payroll, rent, utilities, COGS |
| Landlord | Rent, other property income | Repairs, agent fees, insurance, mortgage interest |
| Personal budget | Salary, side income | Housing, groceries, transport, utilities, discretionary |
| All (housekeeping) | — | Transfers, owner drawings (exclude from P&L) |
A practical transaction category list
If you're starting from nothing, the list below is a sensible default for a small business. Each row pairs a transaction category with the group it usually rolls up to in a chart of accounts, and the kind of text you'll typically see in the bank description. Treat the group names as generic — your accountant, your accounting package and your country's tax forms will have their own exact account names and codes, and those are the ones to match in the end.
Notice that two rows are not income or expense at all. Transfers between your own accounts and owner drawings or contributions move money without making or costing any, so they sit outside the profit-and-loss; loan principal is the same, while the interest on it is an expense. Getting those few rows right does more for the accuracy of your totals than any amount of fine-grained expense splitting.
| Transaction category | Typical chart-of-accounts group | What it usually looks like on a statement |
|---|---|---|
| Sales / service income | Income (revenue) | Customer payments, card-processor or marketplace payouts |
| Other income | Other income | Interest received, refunds from suppliers, grants |
| Cost of goods / materials | Cost of sales | Supplier and wholesaler payments, stock purchases |
| Subcontractors | Cost of sales or operating expense | Payments to freelancers and contractors |
| Payroll & salaries | Operating expense (staff costs) | Salary runs, payroll provider debits |
| Rent & premises | Operating expense | Standing orders to a landlord or letting agent |
| Utilities | Operating expense | Energy, water, phone and internet direct debits |
| Software & subscriptions | Operating expense | Recurring card charges from software vendors |
| Advertising & marketing | Operating expense | Ad-platform charges, printing, sponsorships |
| Travel & vehicle | Operating expense | Fuel, train and air fares, parking, hotels |
| Professional fees | Operating expense | Accountant, lawyer, consultant invoices |
| Insurance | Operating expense | Policy premiums, often monthly direct debits |
| Bank & payment fees | Operating expense (finance costs) | Account fees, card-processing fees, FX charges |
| Tax payments | Liability (not an expense line) | Payments to the tax authority — VAT/sales tax, payroll tax |
| Loan repayments | Liability (principal) + expense (interest) | Fixed monthly debits to a lender |
| Transfers | Balance sheet — between your own accounts | Matching debit and credit across two accounts |
| Owner drawings / contributions | Equity | Transfers to or from the owner's personal account |
How to categorise a year of transactions
Convert your statements
Run every account and card through the converter so each transaction becomes a clean, editable row. Scans work too via the scanned converter, and card statements via the credit card statement converter.
Consolidate the period
Use Smart Merge to bring a year (up to 100 statements) into one workbook so everything categorises in one place.
Tag transfers out first
Match internal transfers as pairs and mark them as Transfers so they don't distort income or expense totals.
Assign a category to each row
Work down the list, tagging by description. Group similar merchants so recurring charges all land in the same category.
Total and export
Total each category, review in the editable grid, then export categorised data to Excel, CSV, QBO or Xero.
Rules: categorise once, not every month
The fastest way to categorise is to stop doing it transaction by transaction and start thinking in rules. Most spending is repetitive — the same software vendor, the same supermarket, the same fuel station appear every month — so a rule like "anything from this merchant is Software" handles dozens of rows at once. Because converted data is structured and searchable, you can filter by a merchant or keyword and tag the whole group in one move, which is where the real time saving lives.
Rules also enforce the consistency that makes totals trustworthy. If a keyword always maps to the same category, you can't accidentally split one real total across two labels, and next month's import categorises almost itself. Keep a short, written list of your rules (merchant or keyword → category) so anyone doing the books applies them the same way. For the deeper method, see the guide on how to categorize bank transactions.
How automatic transaction categorisation works in budgeting and accounting tools
Budgeting apps and accounting packages that categorise your bank transactions automatically mostly combine the same three ingredients. The first is the data source: a bank feed (a direct connection that pulls transactions in) or an imported statement file. The second is rules — conditions on the payee, the description text or the amount that assign a category when they match. The third is history: once you've categorised a merchant a certain way, the software proposes the same category the next time that merchant appears. None of it is magic; it's pattern-matching on the text the bank prints, which is why messy or truncated descriptions are where automatic categorisation goes wrong.
In QuickBooks Online, downloaded transactions wait for review, and QuickBooks suggests a category based on how you've categorised similar transactions in the past. Bank rules make it explicit: a rule can test the Description, the Bank text or the Amount, using Contains, Doesn't contain or Is exactly, with up to five conditions per rule, and it can set the category, payee, tax and other fields. Rules run in a priority order you can rearrange, and an auto-post rule adds matching transactions to your books without you reviewing them — which is convenient and also the reason to check those rules carefully. If you bring statements into QuickBooks as files, the QuickBooks bank statement import guide covers the import side.
In Xero, bank rules come in three types — spend money, receive money and transfer money — and when a statement line meets a rule's conditions, Xero suggests the matching transaction while you reconcile. You can choose whether any or all of a rule's conditions must match, and Xero applies rules in the order they appear on its Bank rules screen. Getting statement lines into Xero from a PDF is covered on the bank statement to Xero page.
| Mechanism | What it reads | Where you see it | Watch out for |
|---|---|---|---|
| Learned suggestions | Your past choices for similar transactions | QuickBooks Online suggested categories; many budgeting apps | A wrong early choice gets repeated |
| Bank rules | Description / bank text / amount conditions | QuickBooks Online bank rules; Xero bank rules | Rule order — the first matching rule wins |
| Keyword lookup | Keywords you list against the description | Your own spreadsheet (formulas below) | Overlapping keywords, ambiguous merchants |
| Fixed category scheme | Merchant and narration text against a closed list | FlowParse's Category column on export | Very generic descriptions land in Other |
What categorised data unlocks
Once transactions are categorised, the same workbook answers a surprising range of questions. Sum the expense categories and you have a profit-and-loss. Compare categories month over month and you have a budget-versus-actual. Filter income by source and you can see which clients or products actually pay the bills. And because the categories map to your tax return, year-end becomes a matter of reading totals rather than reconstructing a year. Group the same rows by timing instead and you have a cash-flow view; check them against the bank's own record with bank reconciliation and you know nothing is missing.
| Output | How categories make it possible |
|---|---|
| Profit & loss | Sum income categories minus expense categories |
| Budget vs actual | Compare each category against its plan |
| Tax return | Categories map to return lines; read the totals |
| Cash-flow view | Re-group the same data by timing of in/out |
| Spend analysis | Rank expense categories to find waste |
What clean categorized transaction data looks like
Categorized transaction data is only useful if it's tidy enough for a formula, a PivotTable or an import to read without fixing it first. The test is simple: one row per transaction, one value per cell, the same columns in the same order every month, and exactly one category on every row. Amounts should be real numbers with a consistent sign (money out negative, money in positive — or separate Debit and Credit columns, but not both), and dates should be real dates rather than text, so sorting and date filters behave.
The columns below are the ones worth having. The first four are the minimum; the rest make the data far easier to audit and reuse. Keeping the original bank description alongside the category is what lets anyone check a total later — if a figure looks wrong, you filter the category and read the lines behind it, rather than trusting a number nobody can trace.
| Column | What it holds | Why it matters |
|---|---|---|
| Date | The transaction (or posting) date as a real date | Monthly totals, period filters, cut-off at year-end |
| Description | The bank's own text, unedited | What rules and lookups read; the audit trail |
| Amount | One signed number (or Debit + Credit) | What every total sums |
| Category | Exactly one label from your list | What every report groups by |
| Balance | Running balance where the statement prints one | Proves no row is missing or duplicated |
| Account | Which bank account or card the row came from | Lets you combine accounts and still split them |
| Notes / reference | Invoice number, reference, your comment | Explains exceptions and supports matching |
How FlowParse categorizes your transactions
FlowParse gives every bank and credit-card transaction a category as part of extraction, so the converted file arrives with a Category column already filled in rather than blank. It uses one fixed list of seventeen categories — Income/Salary, Rent/Mortgage, Utilities, Insurance, Groceries, Transport, Subscriptions, Bank Fees, Loan/Debt, Tax, Transfers, Healthcare, Shopping, Dining, Investments/Crypto, Charity/Donations and Other — and the category is read from the transaction's own merchant, counterparty or narration text. If the statement prints its own type column (a "FEE" or "REFUND" marker, say), that is used as a strong signal. "Other" is reserved for lines whose description gives no usable clue. The list is deliberately short and closed, so the same merchant lands in the same category whichever bank or language the statement came from.
That fixed list is a starting point, not your chart of accounts. In the Excel export the Category column has an in-cell dropdown of the same seventeen labels, but you can type any category of your own over it, and a separate By Category sheet totals each category with its transaction count, total debit, total credit and net. Merge a year of statements with Smart Merge and the merged workbook gets its own By Category rollup across every statement. If you want your own scheme — "put these supplier payments under Cost of sales", say — you can ask AI Fix in plain language to re-categorise the document with your category names, which are then used as written.
Where the category travels depends on the format. Excel, CSV and Google Sheets exports carry it as its own column, and the PDF to CSV output does the same. QBO, QFX and OFX bank files have no category field, so FlowParse appends the category to each transaction's memo, where you can still read it after import. Xero's statement-import CSV has a fixed layout with no category column, so in Xero you categorise with its own bank rules — the Excel export remains the place to see every column at once. Every statement is balance-checked before export — opening balance plus transactions must equal the closing balance — and low-confidence fields and possible duplicates are flagged in the editable review, so the categories sit on a complete set of rows.
| Export | Where the category appears |
|---|---|
| Excel (.xlsx) | Category column with dropdown + a By Category summary sheet |
| Smart Merge workbook | Category carried into the merged sheet + a merged By Category sheet |
| CSV / Google Sheets | Its own Category column |
| QBO / QFX / OFX | Appended to each transaction's memo (the format has no category field) |
| Xero statement CSV | Not included — Xero's import layout is fixed; use Xero bank rules |
Categorising for different kinds of business
The right categories depend on what you do. A service business — a consultant, designer or agency — leans on the expense side, with subcontractors as its main cost of sales and a long tail of software, travel and professional fees. A product or retail business needs a real cost-of-sales section — stock, materials, shipping, payment-processing fees — kept separate from operating expenses, because gross margin is the number that matters and you can't see it if supplier costs are lumped in with the rent. An e-commerce seller should also split platform payouts from the fees netted out of them, so revenue is shown gross. Large purchases deserve a second look too: equipment you'll use for years is usually an asset rather than an expense, which is what capital vs expense classification is about.
Whatever the shape, the discipline is the same: design the smallest scheme that lets you read your key numbers, and reuse it every period. If you're a sole trader or freelancer, Schedule C from bank statements shows a scheme tuned to self-employment, and for the tax angle see bank statements for a tax return.
Categorising for personal budgeting
Categorising isn't only for businesses — it's the foundation of any personal budget. The difference is the scheme: instead of income streams and tax lines, you want the categories that describe where your money actually goes, typically housing, utilities, groceries, transport, insurance, subscriptions, eating out and discretionary spending, plus an income side for salary and any side earnings. Convert a few months of personal statements, tag them, and you can finally see the shape of your spending rather than guessing at it.
How to categorize bank transactions in Excel, step by step
Most people categorise in a spreadsheet, and Excel is more than enough. Step 1 — get clean columns. Convert your statement to Excel so you have Date, Description and Amount as real dates and numbers. Format the data as an Excel table and type Transactions into its Table Name box. Tables matter because formulas written with structured references like Transactions[Amount] keep working as you add months, and a formula typed in one cell of a table column is copied down the whole column automatically.
Step 2 — build a rules table. On a second sheet, create a two-column table named Rules with the headers Keyword and Category, and list one keyword per row: a word or fragment that appears in the bank description ("rent", "electric", "payroll") and the category it should map to. Put specific keywords above general ones, because the formula below takes the first match from the top. Keep the table free of blank rows.
Step 3 — let a formula fill the Category column. Add a Category column to the Transactions table and enter the formula below. SEARCH looks for each keyword inside the row's description and is not case-sensitive; ISNUMBER turns the results into TRUE/FALSE; and XLOOKUP returns the category of the first keyword that matched, or "Uncategorised" when none did. XLOOKUP is available in Excel for Microsoft 365, Excel 2021 and Excel 2024 — not in Excel 2016 or 2019. Anything left as Uncategorised is your to-do list: either tag it by hand or add a keyword to Rules so next month catches it.
Step 4 — total by category. A PivotTable with Category in Rows and Amount in Values gives the total of every category at once; refresh it after you change any categories. If you prefer formulas, SUMIFS sums the Amount column where the category matches, and adding a date condition gives you a month-by-category grid you can chart or compare with last year. Step 5 — check the totals. The sum of all category totals should equal the sum of the Amount column; if it doesn't, a row is missing a category or a number is stored as text.
Keep the Rules table between months — it is your categorisation policy written down, and that consistency is what makes the totals comparable over time. For a fully worked method, the guide on how to categorize bank transactions walks through it with examples.
Category column (inside the Transactions table):
=XLOOKUP(TRUE, ISNUMBER(SEARCH(Rules[Keyword], [@Description])), Rules[Category], "Uncategorised")
Total for one category (category name in F2):
=SUMIFS(Transactions[Amount], Transactions[Category], F2)
Total for one category in one month (first day of the month in G1):
=SUMIFS(Transactions[Amount], Transactions[Category], $F2,
Transactions[Date], ">="&G$1, Transactions[Date], "<"&EDATE(G$1, 1))
Money out only (negative amounts) for one category:
=SUMIFS(Transactions[Amount], Transactions[Category], F2, Transactions[Amount], "<0")Reviewing and maintaining your categories
A category scheme drifts unless you review it now and then: merge near-duplicate labels and rename anything that crept in. Watch especially for an "Uncategorised" or "Misc" bucket growing large. A bit of miscellaneous is fine, but if it's a big number it means real information is hiding in it — split it out into proper categories so you can see what it actually is. The editable review grid makes re-tagging quick, and because nothing is locked until export, you can refine the scheme as you learn what questions you want it to answer.
Categorising at scale, and for tax
Two situations raise the stakes on categorising. The first is volume — bookkeepers and accountants categorise transactions for dozens of clients every month, where consistency is everything. The answer is the same as for one set of books, applied systematically: convert every client's statements to the same structured format, apply a standard firm-wide category scheme, and lean heavily on merchant/keyword rules so recurring spend tags in groups rather than one row at a time. Standardising this is how firms categorise at volume without it eating the month — the accountant's converter is built around it.
The second is tax. If your categories map to the lines on your return — advertising, travel, supplies, professional fees and the rest — then year-end stops being a reconstruction and becomes a matter of reading totals. This is the single biggest payoff of consistent categorising for most small businesses, and it's why it's worth designing the scheme around your return from the start. See bank statements for a tax return and how to prepare bank statements for taxes for the tax-specific workflow.
Categorize a year of transactions
Convert your statements, start from a filled Category column, total each category, and export categorized data to Excel, QuickBooks or Xero.
Fix it in plain English — no formulas
Describe a correction in plain language and FlowParse applies it to your file: add a column, split debit/credit, fix a category. Anything touching real numbers shows a preview before it changes.
See how AI Fix works
