Sponsored by

Audit Friendly MODERN ACCOUNTING
BUILD WITH AI

BUILD WITH AI · PART 2 OF 5

Build an AI workflow for bank transaction categorization

 

Manual line-by-line coding eats senior staff time; this workflow shifts the first pass to an AI assistant and keeps a human on exceptions.

Categorizing a month of bank transactions by hand is one of the more tedious tasks in bookkeeping - not because each decision is hard, but because there are hundreds of them and most are identical to last month. A general-purpose AI assistant can handle the first pass: read a plain-text or CSV export, apply a chart-of-accounts mapping, and return a categorized file ready for exception review. What that replaces is the staff-hour cost of opening every row, guessing at a merchant name, and clicking a dropdown.

BUILD WITH AI

Bank transaction categorization, step by step

Export your bank transactions to CSV, clean out any bank-added formatting rows, and confirm your chart of accounts is in a text list you can paste into a prompt. The whole first pass takes under five minutes of active work.

1
Export the bank statement for the period as a CSV with at minimum these columns: date, description, amount, debit/credit indicator.
2
Remove any header rows, subtotal rows, or bank branding rows so the file is clean tabular data.
3
Open your general-purpose AI assistant and upload or paste the cleaned CSV along with your chart of accounts list.
4
Paste this prompt: 'You are a bookkeeper. Below is a CSV of bank transactions and a chart of accounts. For each transaction row, assign the single most appropriate account name from the chart of accounts. If the correct account is ambiguous or the transaction appears to be a split, personal, or intercompany item, set the Confidence column to LOW and leave a one-sentence note in the Reason column.
5
Download or copy the returned CSV and open it in a spreadsheet.
6
Filter for Confidence = LOW and review each flagged row against supporting documents or client notes; correct the Account value manually.
7
Reconcile: confirm the row count matches the original export and the sum of amounts matches the bank statement closing figure.
8
Import the verified CSV into your general ledger using the standard import template for your accounting platform.
The rule: A human must review every LOW-confidence row and sign off on the total reconciliation before the file is imported into the ledger.

The workflow does break down in predictable places. Split transactions - a single charge that belongs partly to travel and partly to meals - require a judgment call the model will often flatten into one category. Unusual vendors with ambiguous names, recurring intercompany transfers, and any transaction flagged as potentially personal will all generate low-confidence outputs. The prompt below instructs the model to flag those rather than guess, which is the right default; an unflagged wrong category is worse than a flagged uncertain one that takes ten seconds to fix.

Verification is a two-step check: first, reconcile the total of the AI-categorized export against the bank statement closing balance to confirm no rows were dropped or duplicated; second, pull every row the model flagged as uncertain and review each one against a supporting document or the client's own description. The flagged set is typically small enough to clear in a single focused sitting, and the categorized bulk goes straight into the general ledger import.

WORKED EXAMPLE

In practice

A 143-row CSV of business checking transactions for the month just ended, exported from the bank portal. The firm's chart of accounts has 38 accounts, copied from the client's QuickBooks account list.

THE PROMPT
You are a bookkeeper. Below is a CSV of bank transactions and a chart of accounts. For each transaction row, assign the single most appropriate account name from the chart of accounts. If the correct account is ambiguous or the transaction appears to be a split, personal, or intercompany item, set the Confidence column to LOW and leave a one-sentence note in the Reason column. Otherwise set Confidence to HIGH. Return the result as a CSV with these columns: Date, Description, Amount, DebitCredit, Account, Confidence, Reason. Do not invent account names not on the list. [CHART OF ACCOUNTS PASTED] [TRANSACTION CSV PASTED]

What came back. The model returned a 143-row CSV with 129 rows marked HIGH and 14 marked LOW. The HIGH rows covered recurring vendors - payroll processor, office supply merchant, utilities - correctly. Two of the LOW rows were flagged because the merchant name was a person's name rather than a business, which the model correctly noted as a possible owner draw; one row was a large round-number transfer the model flagged as a possible intercompany item. One HIGH-confidence row assigned 'Meals and Entertainment' to a charge that was actually a software subscription - the vendor name included a food word.

How it was checked. The reviewer filtered for LOW, corrected 11 of 14 flagged rows, and confirmed the two owner-draw items with the client. A sort by amount on the HIGH rows surfaced the miscategorized software subscription, which was corrected before import. Row count matched 143; sum of amounts matched the bank

A constructed example. The prompt is usable as written; the figures show the shape of a result, not a measured one.

WHEN TO USE IT

 
Monthly close requires coding 100 or more transactions before ledger import.
 
Transaction descriptions are mostly consistent vendor names the model can pattern-match.
 
Staff time on data entry is a documented bottleneck in the close cycle.
 
The chart of accounts is stable and fewer than 60 accounts, making prompt length manageable.

WHEN NOT TO

 
Transactions are primarily intercompany or contain complex allocation splits.
 
The client's chart of accounts changes frequently mid-period, making cached mappings unreliable.
 
Regulatory or audit requirements mandate full manual review of every transaction line.
The pitfall: The model assigns a confident-looking HIGH to a miscategorized row and it imports silently. Catch this by spot-checking a sample of HIGH rows sorted by largest amount before import.

WHAT TO TAKE FROM THIS

 
Always instruct the model to flag uncertain rows rather than guess - silent errors compound at month-end.
 
Reconcile row counts and totals before importing; AI exports can silently drop or merge rows.
 
Split transactions and intercompany transfers need manual review regardless of model confidence.

A CRM so smart, it updates itself.

HubSpot's CRM is so smart, it now updates itself. Calls get logged and summarized the moment they end. New leads get researched and a first outreach drafted, automatically. Deals move forward on their own, with next steps flagged before you have to ask. 

Even the one repetitive task you've been meaning to fix can now run itself, no code required. Customers using it are already seeing the difference. 

This isn't the CRM you have to work hard to figure out. It's the one already working before you log in.

THE PROMPT TEMPLATE
Get next week's workflow in your inbox
Tuesdays: one Build with AI workflow with the prompt, the steps and the verification rule. Thursdays: the explainer and the week's tools.

SPONSORED

Gusto: full-service payroll that posts clean journal entries to your ledger
Federal, state and local filing in all 50 states, native two-way sync to QuickBooks Online and Xero, and published per-employee pricing with no contract. Audit Friendly scored it 74/100 in a fact-checked review; we earn a referral fee if you sign up, and the score is not affected.

QUESTIONS THIS ANSWERS

Can I use ChatGPT or Claude to categorize bank transactions?

Yes. Export transactions to CSV, paste or upload the file with a prompt that includes your chart of accounts, and ask the model to return a categorized CSV with a confidence flag on each row. Review flagged rows manually before importing.

What is the biggest risk in AI transaction categorization?

Silent miscategorization - the model assigns a plausible but wrong account and does not flag it. Instructing the model to flag any row where confidence is below a stated threshold reduces this; a reconciliation check on totals catches what slips through.

SOURCES

Where this comes from

Upload your resume once →

The career portal does the rest.

GO DEEPER

Go deeper

Software reviews → Fact-checked vendor reviews with verdicts and pricing
AF Stack Designer → Design your accounting stack in ten minutes
Skills that pay → Which named tools move the number
Software in postings → Every tool ranked by live demand
Accounting and finance job board → The Audit Friendly job board, every posting verified live

IN THIS SERIES

Previously: Build a doc extraction workflow in 7 steps

Next: Build with AI: engagement letter drafting (coming)

An original workflow written for practitioners. Replicate it in a sandbox first; nothing here replaces your review.

How accountants are using AI, automation and smarter workflows to close faster, audit cleaner, and free up time for real work.

Accounting Stack · Audit Friendly Data · Accounting & Finance Jobs

Audit Friendly · modernaccounting.ai