ExpenseBot

How Outsourced Bookkeepers Use QuickBooks Smart Routing | ExpenseBot

Step-by-step: how outsourced bookkeepers push client receipts to QuickBooks as Purchases, Bills, or Reimbursements — without sorting first. Free multi-client dashboard.

Every outsourced bookkeeper eventually runs into the same problem: a client sends over a folder of expenses — receipts, vendor invoices, maybe a reimbursement request — and the bookkeeper has to sort them before anything can go into QuickBooks. Purchase or Bill? Vendor or staff? One-time or recurring?

That sorting step is the hidden tax on every client engagement. It's not billable in most setups, it requires judgment on documents the bookkeeper didn't generate, and it scales badly — 10 clients is manageable, 40 is a full-time job in itself. For a complete overview of the outsourced bookkeeper workflow, see the bookkeeper software overview →

This guide covers how ExpenseBot's smart routing handles the classification automatically, what the document prefix system means in practice, and the exact workflow from client Gmail to QBO push — step by step.

The Sorting Problem — Why "Everything Goes in as a Bill" Breaks QBO

A common workaround for the sorting problem is to push everything as a Bill. It seems safe — Bills create a liability, so at worst you'll have an unpaid liability that gets cleared when the check runs. In practice it creates several downstream problems:

  • Bank feed duplicates. When the client pays a credit card that ExpenseBot already pushed as a Bill, the bank feed clears the same transaction. Now you have a Bill marked paid and a bank-feed transaction both in QBO. The reconciliation catch rate drops.
  • Accounts payable inflation. Receipts that should be Purchases — an Amazon order, a SaaS subscription, a hardware purchase — show up as unpaid liabilities until someone manually clears them. The A/P aging report becomes noise.
  • Reimbursement confusion. Staff reimbursements should go in as Bills payable to the employee. Pushing them as Purchases against a vendor account misattributes the expense and makes payroll reconciliation harder.
  • Class and Customer misassignment. If you're pushing everything as Bills, you're probably assigning Class and Customer manually per record — which means any shortcut taken in sorting compounds into downstream reporting errors.

The right fix is to classify documents correctly at the point of entry — before the push, not during reconciliation. That's what smart routing does.

What Smart Routing Actually Does — The 3 Routing Outcomes

ExpenseBot routes every expense line to one of three QBO destinations:

QBO Purchase

For receipts — money already spent. Credit card charges, bank withdrawals, petty cash. Trigger: document typed as a Receipt (R prefix). No liability created; the expense is recorded directly.

QBO Bill — Vendor

For vendor invoices — money owed to a supplier. Net-30 invoices, contractor bills, service agreements. Trigger: document typed as an Invoice (I prefix). Creates a liability in A/P that clears when the payment runs.

QBO Bill — Staff

For employee reimbursements — money owed to a staff member. Trigger: document typed as a Bill-reimbursement (B prefix). Payable to the employee, not to a vendor. Keeps reimbursements out of the vendor A/P aging.

The routing decision is made before the push dialog opens. When the bookkeeper reviews the expense report, every line already shows its proposed destination. Individual lines can be overridden if the classification is wrong — but for well-trained document prefix usage, the default routing is correct on the first pass.

For a deeper look at how Gmail receipts route to QBO entities, see the Gmail to QuickBooks routing guide →

The Document Prefix System — R/I/B + O/R Encoding

Smart routing needs to know what kind of document it's looking at. The classification signal comes from the document prefix — a two-character code that bookkeepers and clients add to the document name or subject line.

The first character indicates document type:

  • R — Receipt (goes to QBO as a Purchase)
  • I — Invoice (goes to QBO as a Bill, vendor)
  • B — Bill / Reimbursement (goes to QBO as a Bill, staff)

The second character indicates frequency:

  • O — One-time
  • R — Recurring

Combined, the prefix codes are: RO (one-time receipt), RR (recurring receipt, e.g. a monthly SaaS charge), IO (one-time invoice), IR (recurring invoice), BO (one-time reimbursement), BR (recurring reimbursement).

The frequency dimension matters for reporting — recurring expenses feed the subscription audit and the recurring-cost analysis in the expense report, while one-time expenses are tracked separately. It also helps identify subscription creep: a vendor coded as RR that suddenly appears in the one-time column may have changed billing cycles.

For clients submitting photos or forwarding emails, the prefix is added by the client in the document name before submission, or by the bookkeeper during the report review. Most bookkeepers train clients on the two-character convention once during onboarding — it takes about 90 seconds to explain.

Class and Customer — Setting Once Per Push (Not Per Receipt)

One of the more painful parts of pushing expenses to QBO manually is assigning Class and Customer on each transaction. In native QBO, that's a per-record operation. If you're pushing 60 transactions for a client whose work is all under one project or department, you're clicking through 60 dialogs.

ExpenseBot solves this at the push level, not the record level. When you open the push dialog, you set Class and Customer once. That assignment applies to all line items in the push batch. For the typical outsourced bookkeeper workflow — where a monthly client report goes to one QBO class and one customer/project — this means one selection, not sixty.

If a client has mixed-class expenses in a single report (e.g. some personal and some business, or expenses split across two departments), the bookkeeper can split the push into two batches — selecting rows by class before each push. The selection is done in the report view before confirming.

Class and Customer settings persist per client workspace, so the next push for the same client starts with the previous month's selections pre-filled. For clients with stable project structures, this means the monthly push is truly one-click after the report review. See the full QuickBooks integration overview → for details on Class tracking and multi-company setup.

The Full 5-Step Workflow — Client Gmail to QBO

Here's the complete outsourced bookkeeper workflow, from initial client setup through the monthly QBO push.

  1. Client connects Gmail. The client logs into ExpenseBot with Google (one-time, takes 90 seconds). Their Gmail is now scanned nightly for receipts. No app to download. No training required on their end beyond the initial login.
  2. Receipts auto-populate the expense report. ExpenseBot finds receipt emails overnight and logs them to a Google Sheet in the client's own Drive. Vendor, amount, date, category, and document prefix are extracted automatically. The bookkeeper gets read access to the sheet.
  3. Client reviews before month close. At the end of each month, the client does a 5-minute pass through their Google Sheet — flagging anything personal or anything the AI miscategorized. This is the client's only active step in the workflow. Most bookkeepers send a short Slack or email reminder: "Quick review before I push to QBO."
  4. Client notifies bookkeeper. Client sends a quick message: "Report is ready." No exports, no CSV attachments, no file sharing. The bookkeeper already has access.
  5. Bookkeeper logs into the accountant dashboard, reviews, sets Class + Customer, and pushes to QBO. This step takes under 5 minutes for a typical 30-80 transaction month. The push dialog shows all line items with their proposed routing. Set Class and Customer once for the batch, confirm, and ExpenseBot handles the rest — including attaching receipt PDFs to each QBO record.

Total active time for the bookkeeper per client per month: under 10 minutes for review and push. The rest is automated. For the free accountant dashboard →

Receipt Attachment — No More "Where's the Receipt?" Audit Questions

Every QBO record pushed from ExpenseBot includes the original receipt as an attachment. This happens automatically at push time — the bookkeeper doesn't need to manually upload anything. When an auditor opens the QBO transaction, the source document is already there.

This solves the most common audit prep problem for outsourced bookkeepers: the client can't find the receipt for a transaction that was entered months ago. With ExpenseBot, the receipt is in two places — the client's Google Drive (where ExpenseBot stores it) and the QBO transaction record (where ExpenseBot attaches it at push time). Either location is sufficient for IRS or CRA audit documentation.

For bookkeepers managing clients in industries with high audit risk — construction, real estate, medical practices — the automatic attachment eliminates what is otherwise a significant amount of pre-audit document retrieval work. Clients who used to spend 2-3 hours tracking down receipts for a single audit request can now point the auditor directly to QBO.

Receipt images are stored in the client's own Google Drive, not on ExpenseBot's servers. The client retains ownership and access even if they cancel ExpenseBot. For clients on Google Workspace, the images live in their organizational Drive — covered by their existing data retention and DLP policies.

Managing 10 Clients vs Managing 40 — How the Free Dashboard Scales

At 10 clients, most bookkeepers can manage ExpenseBot client workspaces manually — opening each one as needed, running the monthly push, and moving on. At 40 clients, that approach breaks down. You need visibility across all clients at once, not just the one you have open.

The free accountant dashboard is built for the 40-client case. From one login, you see:

  • Which clients have new receipts since your last review
  • Which clients haven't logged in to review their report this month
  • Which clients have unresolved category flags or missing prefixes
  • Which clients are ready for a QBO push

The dashboard doesn't require any additional configuration — it reads from the same client workspaces you're already managing. Each client workspace is a separate row in the dashboard. Clicking through to a workspace opens their Google Sheet and the push interface in one flow.

There are no per-client fees for the bookkeeper. The dashboard is free forever — not a trial tier. ExpenseBot's business model charges the client ($10/month), not the bookkeeper. This is intentional: bookkeepers are a distribution channel, so building friction into the bookkeeper relationship doesn't make sense. At 40 clients, the bookkeeper's monthly overhead for the entire workflow is zero.

For bookkeeping firms adding new clients, the onboarding flow is the same regardless of how many clients are already on the dashboard. Adding client 41 is the same as adding client 1.

Frequently Asked Questions

What's the difference between a QuickBooks Purchase and Bill in ExpenseBot?

In QuickBooks Online, a Purchase records money that has already left — a credit card charge, bank withdrawal, or petty cash spend. A Bill records an obligation to pay later — a vendor invoice due in 30 days, or a reimbursement owed to a staff member. ExpenseBot's smart routing reads the document type and pushes receipts as Purchases and vendor invoices or reimbursement requests as Bills. The distinction matters: misrouting a vendor invoice as a Purchase creates a duplicate when the bank feed clears, and misrouting a receipt as a Bill leaves an unpaid liability on the books.

Can I override the smart routing for a specific receipt?

Yes. The push dialog shows you the proposed routing for every line item before anything reaches QBO. You can change the destination (Purchase / Bill-vendor / Bill-staff) on a per-line basis before confirming the push. The override is one-time — it doesn't change how ExpenseBot classifies that document type for future pushes. For clients who frequently send documents that route incorrectly, you can also update the document prefix on the expense row in their Google Sheet before pushing.

Do my clients need QuickBooks accounts?

Yes. The push goes directly into the client's QBO company file — so they need an active QuickBooks Online subscription, and you need bookkeeper-level access to that file. Clients don't need to use ExpenseBot themselves. Most outsourced bookkeeper workflows have the client submit expenses and receipts, then the bookkeeper handles everything else, including the QBO push. The client just needs their Gmail account connected to ExpenseBot so their receipts are captured automatically.

How long does it take to push a client's monthly expenses to QuickBooks?

For a typical small-business client with 30-80 transactions per month, the push takes under 5 minutes once the report is reviewed. The actual QBO push itself is under 60 seconds — ExpenseBot sends all line items in one batch. Most of the time is the bookkeeper's review of the expense report before pushing. If the client has already reviewed and approved their report, the bookkeeper can often push without any changes.

Can I manage multiple QBO company files from one ExpenseBot login?

Yes. The free accountant dashboard lets you manage unlimited clients from a single login. Each client has a separate workspace linked to their own QBO company file. You switch between clients from the dashboard — no separate logins, no per-client seat fees. When you open a client workspace and initiate a push, ExpenseBot connects to that client's QBO file specifically. Class and Customer settings are stored per-client, so they default to each client's configuration on the next push.

What if a client mixes personal and business expenses in the same Gmail account?

ExpenseBot uses merchant category codes, vendor name matching, and subject-line pattern detection to identify business receipts. Personal receipts (grocery stores, personal subscriptions, consumer retailers) are either skipped or flagged for review rather than auto-categorized as business expenses. The bookkeeper sees flagged items in the report and can delete them before the QBO push. For clients with heavily mixed accounts, a one-time historical scan review is usually faster than asking the client to separate their inbox — which they won't do.

Share:

Track Mileage Automatically with ExpenseBot

Google Maps calculates your distances. Current IRS & CRA rates applied automatically. Tax-ready mileage log in seconds.

No credit card required · Deploys in 30 seconds