How to Categorise Bank Transactions in Xero, QuickBooks and Sage
Transaction categorisation is the unglamorous backbone of bookkeeping. Get it right and the accounts are clean. Get it wrong and the P&L is fiction. Here’s how to do it properly across the three major platforms.
What is transaction categorisation?
Every time money enters or leaves a business bank account, someone has to decide where it belongs in the accounts. That £47.99 Direct Debit to Amazon - is it office supplies, stock, or the owner’s personal shopping? The £1,200 bank transfer from “J SMITH” - is it a sales invoice payment, a loan repayment, or money the director is putting back in?
Transaction categorisation (also called transaction coding, or nominal coding) is the process of assigning each bank transaction to the correct account in your chart of accounts. It’s the foundation that everything else sits on. The profit and loss statement is only as accurate as the categories behind it. VAT returns are only correct if the VAT codes are right. Management reports are only useful if “Marketing” actually contains marketing costs and not a mix of marketing, subscriptions, and someone’s gym membership.
Categorisation vs Reconciliation
Categorisation answers: “What type of income or expense is this?” - assigning a transaction to a nominal account.
Reconciliation answers: “Does the bank balance agree with the books?” - matching bank transactions to recorded entries. You need to categorise before you can reconcile. They’re sequential steps, not the same thing.
In the UK, this matters especially for VAT-registered businesses. Each transaction needs both a nominal code (which account?) and a VAT code (what rate?). Get either wrong and the VAT return is wrong, which HMRC takes a dim view of.
Common transaction categories
The specific chart of accounts varies by business, but most UK small businesses and sole traders work with a broadly similar set of categories. Here are the ones you’ll use most often:
Revenue vs Capital Expenditure
One of the most common categorisation mistakes is treating capital expenditure as a revenue expense. If a business buys a £3,000 laptop, that’s a fixed asset (capital expenditure), not “Computer Equipment” in the P&L. Revenue expenditure is day-to-day running costs. Capital expenditure creates or acquires an asset with a useful life beyond one year.
Getting this wrong inflates expenses and understates profit in the current year, then understates expenses in subsequent years when there’s no depreciation charge. It also affects the balance sheet and potentially capital allowance claims.
How to categorise in Xero
Xero pulls bank transactions in automatically via bank feeds. The workflow is centred on the bank reconciliation screen, where each transaction needs to be matched or categorised before it can be reconciled.
Review the bank feed
Go to Accounting → Bank accounts and click Reconcile on the relevant account. Xero shows each unreconciled transaction with its date, description and amount.
Select “Create” for new transactions
For transactions that don’t match an existing invoice or bill, click the Create tab. Choose between “Spend Money” (payments out) or “Receive Money” (payments in). Select the correct account from the dropdown - this is where the categorisation happens.
Set the tax rate
Choose the appropriate VAT rate from the tax dropdown: 20% (Standard), 5% (Reduced), Zero Rated, Exempt, or No VAT. For purchases, use the input tax variants (e.g. “20% (VAT on Expenses)”). For sales, use output tax variants.
Use bank rules for recurring transactions
Go to Accounting → Bank accounts → Bank rules. Create rules that match on keywords in the bank description. For example: if the description contains “BRITISH GAS”, auto-categorise to “Gas” at 5% VAT. Xero will suggest these matches automatically on future transactions.
Cash coding for bulk categorisation
For high-volume accounts, Xero’s cash coding feature lets you categorise multiple transactions at once in a spreadsheet-style view. Go to the bank account and select Cash Coding. This is significantly faster than reconciling one transaction at a time, though you lose the ability to match against invoices.
Xero Tip: Suggested Contacts
Xero remembers how you categorised previous transactions from the same payee. If you coded a “TESCO” transaction to “Office Supplies” last month, Xero will suggest the same category next time. This is useful, but be careful - if the first categorisation was wrong, every subsequent suggestion will also be wrong. It compounds errors as readily as it saves time.
How to categorise in QuickBooks Online
QuickBooks Online uses a different workflow. Bank transactions land in a staging area called “For Review” where you categorise them before they hit the books.
Open the Banking tab
Navigate to Banking (or Transactions → Bank transactions). Select the bank account. The For Review tab shows all imported transactions waiting to be categorised.
Select category and payee
Click on a transaction to expand it. Choose the Category (account) from the dropdown. Add or select a Payee/Supplier. QuickBooks will learn from your choices and auto-suggest categories for similar future transactions.
Split transactions across categories
If a single transaction covers multiple expense types (e.g. an Amazon order containing both office supplies and cleaning products), click Split to allocate portions to different categories. Assign a VAT rate to each line. This is essential for accurate reporting - lumping everything into one category defeats the point of categorisation.
Create rules from the Banking tab
Click Rules in the Banking section. Set conditions based on bank text, amount, or both. QuickBooks can auto-categorise matching transactions or suggest them for review. Rules can also auto-assign a payee, which keeps your supplier list cleaner.
Use classes and locations for dimensional coding
If the business needs to track income and expenses by department, project, or location, QuickBooks lets you add Classes and Locations to each transaction. This adds a second layer of categorisation on top of the nominal code - useful for businesses with multiple cost centres or branches.
QuickBooks Tip: Batch Accept
When QuickBooks is confident about its auto-suggestions, you can select multiple transactions and click Accept in bulk. Review the suggestions first - the auto-categorisation is based on previous coding patterns and bank description matching. It’s right most of the time, but “most of the time” means it’s occasionally wrong, and occasional errors across hundreds of transactions add up to a material problem.
How to categorise in Sage
Sage Accounting (formerly Sage One / Sage Business Cloud) follows a similar bank-feed-driven workflow, though the interface and terminology differ from Xero and QuickBooks.
Open the bank feed
Go to Banking and select the bank account. Imported transactions appear with a status of “Unreviewed.” Click on a transaction to open the categorisation panel.
Select the ledger account
Choose the correct nominal code from the Ledger Account dropdown. Sage uses a standard UK chart of accounts by default, with codes in the 4000s for sales, 5000s for cost of sales, and 7000s–8000s for overheads. You can add custom accounts through Settings → Chart of Accounts.
Set the VAT code
Select the appropriate VAT rate. Sage uses codes like T1 (Standard 20%), T2 (Exempt), T5 (Reduced 5%), T0 (Zero Rated), and T9 (Outside Scope/No VAT). If you’re migrating from Sage 50, these codes will be familiar. Cloud Sage uses the same logic with a friendlier interface.
Set up supplier and customer defaults
Under Contacts, edit each supplier or customer and set a default ledger account and VAT rate. When you next categorise a transaction from that contact, Sage pre-fills the category. This is Sage’s equivalent of bank rules - it saves time for recurring transactions but requires maintaining your contact list.
Use bank rules for automation
Sage also supports bank rules (under Banking → Manage Bank Rules). Create rules based on the transaction description text and Sage will auto-match future transactions. Like Xero and QuickBooks, these are keyword-based - they work well for direct debits and standing orders where the bank description is predictable, less well for card payments where descriptions vary.
Tricky transactions and how to code them
The straightforward transactions - rent, salaries, a single-item purchase from a named supplier - are not the problem. The problem is everything else. Here are the transactions that trip people up regularly:
Amazon Purchases
Amazon is a nightmare for categorisation. A single payment often covers multiple items at different VAT rates (a book at zero rate, a phone charger at 20%, and AA batteries at 20%). Worse, the bank description just says “AMAZON.CO.UK” with no detail about what was purchased.
Solution: Download the Amazon order history. Split the transaction across the correct nominal codes and VAT rates. For mixed business/personal purchases, post the personal element to the director’s loan account. Yes, this is tedious. There is no shortcut that produces accurate accounts.
PayPal Payments
PayPal creates two problems. First, the bank statement shows a single withdrawal to “PAYPAL,” not the actual supplier. Second, PayPal deducts fees before settling, so the amount on your bank statement doesn’t match the invoice total.
Solution: If you receive payments via PayPal, set up PayPal as a separate bank account in your software. Record gross income as sales, fees as bank charges, and the net transfer to your bank as a bank transfer. If you make payments via PayPal, code to the underlying supplier/expense category, not to “PayPal.”
Stripe Payouts
Similar to PayPal but usually more complex. Stripe batches multiple transactions into a single bank payout. That one £3,847.22 deposit might represent 47 individual customer payments, minus Stripe’s processing fees, minus three refunds, minus one chargeback.
Solution: Treat Stripe as a clearing account. Record individual sales at their gross amount, fees to bank charges, refunds as credit notes, and the net payout as a transfer from the Stripe clearing account to the bank. Most platforms have a Stripe integration that does this automatically - use it.
HMRC Payments
Not all HMRC payments go to the same account. PAYE/NIC goes to a payroll liability account. VAT payments go to the VAT control account. Corporation Tax goes to a corporation tax liability account. Self Assessment payments for sole traders go to drawings or the owner’s equity account.
Solution: The bank description usually contains enough information to identify the tax type (“HMRC PAYE”, “HMRC VAT”, “HMRC NDDS” for CT). Code each to the corresponding liability account, not to “Tax” as a P&L expense. These are balance sheet items - they’re settling a debt already recorded, not creating a new expense.
Loan Repayments
A monthly loan repayment of £500 is not a £500 expense. It’s part capital repayment (reducing the loan balance on the balance sheet) and part interest (a genuine expense in the P&L). The split changes each month as the loan amortises.
Solution: Split every loan repayment. The capital element reduces the loan liability account. The interest element goes to interest expense (usually 7900 or similar). Your loan statement shows the breakdown - use it. Coding the entire repayment to “Loan Interest” overstates expenses. Coding it to the loan account understates them.
Director’s Loan Account Transactions
Money flowing between the director and the company - personal expenses paid on the business card, money introduced by the director, dividends drawn - all go through the director’s loan account. This is a balance sheet control account, not a P&L expense.
Solution: Code personal expenses to the DLA. Code money introduced by the director to the DLA (credit side). The net balance tells you whether the director owes the company or vice versa. If the director owes more than £10,000 at any point in the tax year, there are benefit-in-kind implications - flag it.
Foreign Currency Purchases
When a business pays a US dollar invoice, the bank converts at the day’s exchange rate. But the invoice may have been recorded at a different rate when it was entered. The difference is a foreign exchange gain or loss.
Solution: Record the invoice at the exchange rate on the invoice date. When the bank payment clears at a different rate, the software should automatically calculate the exchange gain or loss and post it to a dedicated FX account. Xero and QuickBooks handle this natively for multi-currency accounts. If your software doesn’t, you’ll need to journal the difference manually.
Petty Cash Top-Ups
A bank withdrawal to top up petty cash is not an expense - it’s a transfer from one cash account to another. Code it as a bank transfer to the petty cash account. The actual expenses are recorded when the petty cash is spent, not when the cash is withdrawn.
VAT and tax categorisation
Getting the nominal code right is half the job. Getting the VAT code right is the other half, and it’s arguably the half where mistakes cost real money.
UK VAT rates
Common VAT Mistakes
Exempt vs Zero-Rated: These are not the same thing. Zero-rated goods are still VAT-able - you can reclaim the input VAT on costs related to making zero-rated supplies. Exempt supplies are not VAT-able, and input VAT related to exempt supplies generally cannot be reclaimed. Confusing the two causes incorrect partial exemption calculations.
Reverse Charge on overseas services: If a UK business buys services from an overseas supplier (e.g. a US SaaS subscription, a European consultant), the UK business must account for VAT under the reverse charge. This means recording both the output VAT and the input VAT on the purchase. The net effect on the return is often nil, but failing to record it is technically incorrect and can cause issues on inspection.
Insurance is exempt, not zero-rated. Bank charges are exempt. Professional subscriptions are exempt. These are consistently miscoded as “No VAT” or “Zero Rated,” which produces the wrong figures on boxes 6 and 7 of the VAT return.
US sales tax considerations
US businesses face a different challenge: sales tax varies by state, county, and sometimes city. Unlike VAT, sales tax is only charged on the final sale to the consumer, not at each stage of the supply chain. If your software supports US sales tax (QuickBooks and Xero both do), configure your nexus states and let the platform calculate the rate. The categorisation principle is the same - each transaction needs both an account code and a tax treatment - but the rates are location-dependent rather than product-dependent.
When manual categorisation breaks down
For a sole trader with 20 transactions a month, manual categorisation is fine. Open the bank feed, code each one, move on. The whole thing takes fifteen minutes.
For a bookkeeper managing 30 clients, each with 50–200 transactions per month, manual categorisation is a different proposition entirely. That’s somewhere between 1,500 and 6,000 transactions per month. Even at 30 seconds per transaction - which is optimistic for anything beyond the obvious - that’s 12 to 50 hours of pure categorisation work every month. Before reconciliation. Before reporting. Before answering a single client email.
Bank rules help, but they have limits. They match on keywords in the bank description, and bank descriptions are inconsistent. The same supplier appears as “TESCO STORES 2847”, “TESCO SUPERST”, and “TESCO.COM” across different transactions. A rule that catches one misses the others. In practice, bank rules handle 40–60% of transactions for most clients. The rest is still manual, every month, for every client.
The platform auto-suggestions (Xero’s learned contacts, QuickBooks’ auto-categorisation) help further, but they’re pattern-matching on limited data. They don’t know that the same merchant sells both standard-rated and zero-rated items. They don’t understand that an unusual amount from a regular payee might be a different type of transaction. And when they get it wrong, the errors compound silently until someone reviews a report and notices the numbers don’t add up.
What would actually help
The bottleneck isn’t the software interface. It’s the intelligence behind the categorisation. What bookkeepers actually need is a system that recognises merchant patterns across clients, understands VAT classification by transaction type, detects transfers automatically, matches invoice payments, and learns from corrections - not just keyword matching on bank descriptions, but actual context-aware categorisation. That’s the problem CodeIQ was built to solve: a seven-layer pipeline that handles the categorisation, VAT coding, transfer detection, and invoice matching across Xero, QuickBooks, Sage and Pandle. The parts that take hours manually are completed in minutes.
Best practices for efficient categorisation
Whether you’re coding manually or using automation, these habits make the difference between clean accounts and a mess that takes hours to unpick at year-end.
Code throughout the month, not all at once
Little and often beats a monthly marathon. Coding 10 transactions a day while you remember what they are is far more accurate than trying to categorise 200 transactions three weeks after the fact. The description “CD 2847 POS” means something when you remember buying coffee with a client last Tuesday. It means nothing in March when you’re staring at February’s statement.
Use consistent naming for suppliers and payees
Pick one name for each supplier and stick with it. “Royal Mail”, not sometimes “Royal Mail” and sometimes “ROYAL MAIL GROUP LTD” and sometimes “RM Postage.” Consistent naming makes bank rules work better, keeps reports cleaner, and makes it possible to track spending by supplier.
Set up bank rules for every subscription and direct debit
These are the easiest transactions to automate because they’re identical every month - same description, same amount, same category. Set up rules for every subscription (Xero, Office 365, Slack, Mailchimp), every utility bill, every insurance premium. This alone can eliminate 20–30% of your monthly categorisation workload.
Review categories quarterly
Run a P&L by category each quarter and scan for anomalies. Is “Office Supplies” unusually high? It might contain transactions that should be elsewhere. Is “Miscellaneous” growing? That’s a catch-all category being used as a dumping ground, which defeats the purpose of categorisation. Quarterly reviews catch drift before it becomes a year-end problem.
Document unusual transactions
When you code something unusual - a one-off refund, a partial payment, a transaction you had to research - add a note or memo. Future you (or whoever inherits the books) will thank present you. Most platforms let you add notes to individual transactions. Use this feature. Six months from now, you will not remember why you coded that £847 payment to “Sundry Expenses.”
Don’t use “Suspense” or “Ask My Accountant” as a long-term solution
Both Xero and QuickBooks have catch-all accounts for transactions you’re unsure about (“Suspense Account” in Xero, “Ask My Accountant” in QuickBooks). These exist for a reason. But if the balance in these accounts is growing every month rather than being cleared, you have a categorisation problem that needs addressing, not parking.
Keep your chart of accounts lean
More accounts doesn’t mean better reporting. A chart of accounts with 300 nominal codes is harder to use correctly, harder to code consistently, and produces reports that are more granular than anyone actually needs. Start with the standard chart your platform provides. Add accounts only when you have a genuine reporting need - not because a transaction doesn’t seem to fit anywhere and creating a new account is easier than thinking about where it actually belongs.
A Note on Platform Differences
Xero, QuickBooks and Sage all achieve the same end result - categorised transactions feeding accurate reports. The workflows differ, the terminology differs, and the default chart of accounts differs, but the principles are identical. If you understand categorisation conceptually, switching between platforms is a matter of learning where the buttons are, not relearning the discipline. The accounting logic doesn’t change because the software changed.
Still categorising every transaction by hand?
CodeIQ automates transaction categorisation across Xero, QuickBooks, Sage and Pandle. Seven-layer intelligence pipeline. VAT classification. Transfer detection. Invoice matching. Two minutes per client, not two hours.
See how CodeIQ worksFrequently Asked Questions
What is transaction categorisation in accounting?
Transaction categorisation is the process of assigning each bank transaction to the correct nominal account code and VAT code in your accounting software. Accurate categorisation ensures your financial reports, tax returns, and VAT submissions are correct.
What are the most common transaction categories?
The most common categories for UK small businesses are office expenses, travel, subscriptions, telephone and internet, bank charges, professional fees, advertising, rent, utilities, insurance, and purchases or cost of goods sold.
How do I choose the right VAT code for a transaction?
Most UK business purchases use the standard rate (20%). Use zero-rated for items like food, children's clothing, and books. Use exempt for insurance, financial services, and education. Use no VAT for transactions with non-VAT-registered suppliers or personal items.
What is the difference between nominal codes in Xero, QuickBooks and Sage?
Each platform uses different numbering schemes. Xero uses a flexible chart of accounts with descriptive names. QuickBooks uses category types with subcategories. Sage uses a 4-digit nominal code system. The underlying categories (sales, purchases, expenses, assets) are the same across all three.