CAPABILITY · OPS & BACK-OFFICE
Expense Categorizer
Receipts post to the right account code automatically — no bookkeeper touch required.
$4,500 build · $1,500–2,500/mo
Talk to us about a Expense Categorizer build →What it does
Ingests receipts from email, SMS, or upload. Uses your chart of accounts to classify each line item and writes the entry directly to QuickBooks or Xero. Flags uncategorized items and ambiguous vendors for one-click review.
Most bookkeepers will tell you the categorization problem isn't hard — it's just relentless. Every week the same vendors show up, the same account codes apply, and yet someone still has to touch every transaction. That takes five to eight hours a week at most small businesses. The rules-based auto-categorization inside QuickBooks and Xero helps at the margins, but it breaks the moment a vendor name changes, a transaction splits across two lines of business, or the owner charges something personal on the company card and the bookkeeper has to figure out what to do with it.
The other issue is trust. Owners who've seen auto-rules misfiled a reimbursable travel expense as office supplies — or worse, had a CPA find a year's worth of miscategorized transactions at tax time — stop trusting automation entirely. So the bookkeeper ends up reviewing everything anyway, which defeats the purpose.
Golden Horizons builds expense categorizers that are trained on your specific chart of accounts and your actual transaction history, not generic templates. Before any automation runs, we pull twelve to twenty-four months of categorized transactions from your QuickBooks or Xero file and use that to establish the pattern library: which vendors map to which codes, how you've historically handled mixed personal-business charges, how you split expenses across multiple cost centers when one transaction spans them. Edge cases that have already been resolved — like the owner's fuel card that sometimes covers company vehicles and sometimes covers the owner's personal truck — get encoded as explicit rules the model applies consistently instead of guessing.
Once the system is live, new transactions coming through your bank feed or uploaded receipts get categorized in real time. The bookkeeper's queue shrinks to exceptions only: genuinely ambiguous vendors, first-time payees with no historical analog, and flagged items that exceeded a spend threshold you set. Everything else posts automatically, with the categorization logic and confidence score logged for every entry so your CPA can see exactly why a transaction landed where it did.
Firms with a single bookkeeper handling several entities or multiple locations typically see the hours they spend on manual categorization cut by sixty to eighty percent. The bookkeeper's time shifts from data entry to exception review and reconciliation — higher-judgment work that actually needs a human.
Use cases
- Multi-LLC real estate investor with eight entities: bank feeds from all entities route through one categorization layer trained on each entity's chart of accounts, so management fees, maintenance costs, and mortgage payments post to the right LLC without the bookkeeper sorting them manually.
- Mid-size HVAC company with field technicians: parts purchases from four different suppliers and fuel card transactions across twelve trucks categorize automatically by job code and cost center, replacing a Friday afternoon reconciliation ritual that used to run three hours.
- Dental practice with a single owner: the expense categorizer handles the split between personal and business charges on the owner's credit card, flags owner's-draw transactions for monthly partner review, and keeps the practice P&L clean without requiring the owner to submit expense reports.
- Independent restaurant group with three locations: food and beverage purchases, linen service, and equipment rentals post to location-specific cost-of-goods and operating expense codes automatically, giving the owner a real-time food cost percentage without waiting for month-end close.
- Residential general contractor: subcontractor invoices and material receipts categorize by job and phase — framing, electrical, finish work — so the job-cost report reflects actual spend against budget without the project manager touching the accounting system.
- Accounting firm managing books for fifteen clients: categorizer handles routine classification per client's chart of accounts and surfaces only exceptions, which the bookkeeper clears in one daily review session instead of working through each file separately.
What’s included
- Fixed scope with written acceptance criteria before any build starts
- Customization layer for your brand voice and business rules
- Clean handover with documented runbook and live training
- Monthly ROI report for three months post-delivery
- Source code delivered to your GitHub on handover
What’s NOT included
- Third-party API subscription costs (billed to your accounts)
- Data migration from legacy systems
- Ongoing infrastructure costs after handover
Retainer
Monthly retainer covers monitoring, prompt tuning, config refinement, and minor integration additions. Range: $1,500–2,500/mo.
How clients use this
Fixed-scope build with clean handover, then an optional monthly retainer covering maintenance, monitoring, and minor changes. Most clients move to retainer within 60 days of delivery.
Part of
Used in: construction-firms , restaurants
Questions Expense Categorizer clients ask
What counts as an exception, and how does the review queue actually work?
An exception is any transaction the system can't categorize with high confidence: a first-time vendor with no historical match, a transaction that's been split differently across past entries, or a charge that pattern-matches to more than one account code at roughly equal confidence. The system doesn't guess and silently post — it flags the item and puts it in a review queue with a suggested categorization and the reason it was flagged. The bookkeeper sees the vendor, amount, suggested code, and a one-line explanation, then either confirms or overrides with one click. Overrides feed back into the pattern library so the same vendor doesn't flag again. The threshold for what counts as high-confidence is configurable during setup — some clients run a tighter threshold and review more, some run looser and touch less. We calibrate it based on how much your bookkeeper wants to catch versus how much time they want to spend reviewing.
How deeply does this integrate with QuickBooks and Xero — does it write directly, or does it queue entries for approval?
Both options are available, and most clients run the first few weeks in queue-for-approval mode to build confidence before switching to direct write. The integration uses the official QuickBooks Online API and Xero API with a dedicated service account scoped to the ledger and bank feed — it never has admin access to user management or payroll. In direct-write mode, categorized transactions post to the ledger with a memo noting the categorization source and confidence score, so the audit trail is visible in the register alongside the entry. In queue mode, entries appear as pending in the bank feed for the bookkeeper to batch-approve. If you use QuickBooks Desktop rather than Online, we can integrate through a local connector — that setup takes a few extra days but the categorization logic is identical.
What does the CPA see at year-end, and does this hold up under audit?
Every automatically categorized transaction carries a logged entry in a separate audit table: the vendor string, the matched account code, the confidence score, and the rule or pattern that drove the match. CPAs reviewing the books can pull a categorization log filtered by date range or by account code to see exactly how any entry was classified. Overrides made by the bookkeeper are logged with a timestamp and the corrected code, so there's a clear record when a human changed a system suggestion. This is the same information your bookkeeper would have put in a notes field if they were doing it manually — it's just structured and queryable instead of living in someone's head. The system doesn't create accounting entries from scratch; it applies codes to transactions that your bank or card feed has already recorded, so the underlying source data is unchanged.
How does it handle commingled accounts and owner draws versus distributions?
Commingled accounts — where personal and business charges run on the same card — are one of the more common edge cases we encode explicitly during setup. We map the known personal vendors and recurring personal charges the owner has historically run through the account, flag net-new personal-looking charges for bookkeeper review, and give the review queue a clear 'personal — exclude from business P&L' option that posts a memo without hitting operating expenses. Owner draws versus distributions require a bit more configuration because the tax treatment depends on entity type — an S-corp distribution has different journal logic than a sole-prop draw. We work through those specific cases with the bookkeeper during the training period and encode the rules before going live. This is exactly the kind of edge case where generic auto-rules inside QuickBooks tend to break, and where having the system trained on your actual history makes the difference.
How long does training take before the system is accurate enough to trust?
For most businesses with twelve or more months of transaction history in QuickBooks or Xero, the initial pattern library is strong enough to run at useful accuracy before we go live. The two-week build window includes one week of pattern extraction and configuration — pulling historical transactions, building the chart-of-accounts mapping, encoding edge-case rules — and one week of parallel testing where the system runs against your incoming transactions and we compare its categorizations against what the bookkeeper would have done. By the end of that second week, most clients are seeing the system agree with the bookkeeper on the large majority of routine transactions, with exceptions concentrated in the genuinely ambiguous cases. The system continues to improve after go-live: every override the bookkeeper makes feeds back into the pattern library, so accuracy tends to increase over the first sixty to ninety days as the remaining edge cases get encoded.