How to Build a Team Expense Tracker in Google Sheetswith AI Extraction from the Sidebar

Team expense tracking has a split personality. The tracking happens in spreadsheets — every small team eventually ends up with a shared Google Sheet for logging who spent what, when, and why. But the data entry happens one receipt at a time, outside the spreadsheet: typing merchant names, amounts, dates, and categories from crumpled paper receipts, email confirmations, and expense report PDFs. A Google Sheets add-on with AI extraction closes that gap by turning your shared sheet from a data entry burden into a capture system that every team member can use independently — no Concur, no Expensify, no separate app.

Get document data directly into Google Sheets
AI extraction in the sidebar — data lands in your spreadsheet
Add to Sheets
No credit card · No setup · Works with any spreadsheet
Build a team expense tracker in Google Sheets with AI-powered sidebar extraction from receipts and expense reports

The Shared Sheet Is Half the System

Small teams between two and fifteen people have a predictable expense tracking trajectory. It starts with a Google Sheet — one tab per month, columns for Date, Employee, Vendor, Amount, and Category. The founder or office manager sets it up in thirty minutes. For the first few weeks, everyone enters their expenses. By month three, the Category column has gaps. By month six, someone has pasted a screenshot of a receipt into a cell because typing felt like too much work. The sheet is still the right place for the data — shared, visible, free, already integrated with the spreadsheet skills the team has. What's missing isn't a better sheet. It's a way to get receipt and expense report data into it without manual entry.

According to the Global Business Travel Association, the average expense report takes 20 minutes to process and costs $58 in labor — and 19% of reports contain errors that take another 18 minutes and $52 to correct (GBTA Foundation study). For a 5-person team submitting one report per month each, that's nearly 12 hours of labor annually just on expense processing — before any analysis or reconciliation. The US Chamber of Commerce found that 40% of small businesses cited "employee time spent filling out expenses and collecting receipts" as their top expense management issue (US Chamber Center survey). The problem isn't that teams don't know how to track expenses. It's that tracking and data entry are two separate activities, and only one of them has been automated.

The alternative most teams consider — switching to a dedicated expense platform like Expensify ($10–18/user/month), Zoho Expense ($3/user/month), or Ramp (free but requires their corporate card) — solves the data entry problem by replacing the spreadsheet entirely. But it also means migrating your existing data, learning a new interface, managing a separate login for every team member, and accepting that your expense data now lives in a tool that may or may not integrate cleanly with the rest of your workflows. For a small team, that trade-off often doesn't close. The spreadsheet works. It just needs an extraction layer.

The add-on doesn't replace your shared expense sheet. It adds a sidebar to it — each team member uploads their own receipts, the AI extracts the data, and rows appear in the same sheet everyone already uses. The sheet becomes both the capture interface and the consolidated dashboard.

Setting Up the Sheet for Team Expense Capture

Before anyone uploads a receipt, the sheet itself needs a structure that supports multi-user expense logging. The column design matters because it determines both what the AI extracts and what information is available at month-end for reimbursement calculations and category analysis.

Here's the recommended column set for a team expense tracking sheet:

ColumnSourcePurpose
DateExtracted from receipt/reportDetermines which accounting period the expense belongs to; IRS requires transaction date
EmployeeEntered by team member in add-on or added manuallyIdentifies who incurred the expense — necessary for reimbursement routing
Vendor / MerchantExtracted from receipt/reportIRS Publication 583 requires vendor/location for each business expense
DescriptionExtracted where available; supplemented manuallyWhat was purchased and why — the business purpose required by the IRS accountable plan rules under Treasury Regulation §1.62-2
AmountExtracted from receipt/reportTotal paid — the number that feeds into reimbursement calculations and category totals
Expense CategoryInferred by AI (see next section)Travel, Meals, Office Supplies, Software, Client Entertainment, Other — auto-classified at extraction time
Payment MethodExtracted where shown on receiptCash, personal card, or company card — determines reimbursement eligibility
Reimbursable?Formula or manual flagYes/No — company card purchases are not reimbursable; personal out-of-pocket expenses are

Share the sheet with edit permissions for all team members. Use Google Sheets' built-in version history to track changes — every edit is timestamped and attributable, giving you a free audit trail without any additional software. Freeze the header row so column labels stay visible as the sheet grows. For a 5-person team submitting 10–15 expenses per person per month, this structure comfortably handles 600–900 rows per year — well within Google Sheets' practical performance ceiling.

If your team has an IRS accountable plan — the reimbursement arrangement that keeps employee expense reimbursements non-taxable — these columns also provide the documentation trail the IRS requires: business purpose (Description column), substantiation within 60 days (Date column), and clear separation between reimbursable and non-reimbursable amounts. Without an accountable plan, reimbursements are treated as taxable wages subject to payroll taxes. The shared sheet, properly structured, serves as both your expense log and your substantiation record.

Get document data directly into Google Sheets
AI extraction in the sidebar — data lands in your spreadsheet
Add to Sheets
No credit card · No setup · Works with any spreadsheet

How Each Team Member Uses the Sidebar to Log Expenses

This is where the workflow shifts from "manager creates a system and everyone feeds it manually" to "the system extracts its own data." A Google Sheets add-on is a small application that opens as a sidebar panel — a narrow pane docked to the right side of your spreadsheet, accessible from the Extensions menu. It runs inside Sheets without navigating to another tab or website. The ImageToTable.ai add-on does one specific thing in this context: it lets anyone with access to the shared sheet upload a receipt or expense report, defines which columns to populate, and have the extracted data appended as a new row.

Here's the individual team member's workflow, start to finish:

1

Open the add-on
In the shared Google Sheet: Extensions → ImageToTable.ai → Open. The sidebar appears on the right — no new tab, no separate login if the add-on uses the manager's API key in account mode.

2

Define the columns
Type the field names that match the shared sheet headers: Date, Vendor, Description, Amount, Payment Method. The add-on uses column-name extraction: rather than drawing boxes around fields, you list what you want, and the AI finds each value by understanding what it means — regardless of the receipt's layout.

3

Upload the receipt
Attach a JPG, PNG, WebP, or PDF of the receipt or expense report. Phone photos of paper receipts work — the AI reads both printed text and handwriting. Multi-page PDFs (e.g., a hotel folio or multi-day expense report) are processed as a single document.

4

Extract — row appears in the sheet
Click Extract. Processing takes 5–10 seconds. The extracted values appear in the next empty row of the shared sheet, under the column headers you defined — no copy-paste, no export step.

JPG/PNG/PDF AI Extraction

Files are processed securely and not stored.

Each team member runs this workflow independently for their own expenses. Because the extraction happens inside the shared sheet, rows appear in real time — the manager can see expenses accumulate as they're submitted, not at month-end after a data export marathon. If you've already set up a preset with your column names (covered in the receipt extraction add-on guide), team members don't even need to type column names — they load the preset with one click and go straight to uploading.

It's worth noting what this replaces: the alternative workflow where each team member either types their expenses manually into the sheet (2–3 minutes per receipt) or emails receipts to the manager who transcribes them centrally (doubling the labor). For a team member submitting 10 receipts a month, that's 20–30 minutes of typing replaced by about 2 minutes of uploading and verifying. Over a year, across a 5-person team, the difference is roughly 20 hours of labor — the equivalent of half a work week.

Inferred Classification — Let the AI Sort Expenses into Categories

Most manual expense sheets break down at the Category column. An employee buys lunch while traveling to a client meeting, grabs office supplies at Staples, and subscribes to a SaaS tool — three different categories, each requiring a judgment call and a manual dropdown selection. By month-end, categories are inconsistent (one person calls it "Travel," another calls it "Meals — Client"), missing, or wrong. Fixing them is the manager's second job during monthly close.

The add-on supports a feature that changes this: inferred columns. An inferred column tells the AI to classify each receipt into a predefined category based on the document's content — even though the receipt itself has no "Category" field. You define the column name with the options you want, like this:

Expense Category (options: Travel/Meals/Office Supplies/Software/Client Entertainment/Other)

When the AI processes a receipt, it reads the merchant name, the items purchased, and the context of the transaction, then assigns one of the options you specified. A Delta Airlines ticket → Travel. A lunch at a restaurant near a client's office → Meals. An Adobe subscription invoice → Software. An Uber receipt → Travel. An Amazon order for printer paper → Office Supplies. The classification happens at extraction time, so by the time the row appears in the sheet, it's already categorized — no manual dropdown, no post-hoc cleanup.

This is different from a formula-based approach (like a VLOOKUP that maps known vendor names to categories) in two ways. First, it works on first encounter — you don't need to pre-populate a vendor-to-category mapping table for the AI to classify a new merchant correctly. Second, it reads the content of the receipt, not just the vendor name. If an employee buys both office supplies and personal snacks at Target in a single transaction, the AI can still classify it as Office Supplies based on what was actually purchased. A formula looking only at "Target" in the Vendor column can't make that distinction.

Inferred columns are part of the custom column extraction system, which works in three modes: direct extraction (pulling values that exist on the document, like amounts and dates), computed columns (running calculations on extracted data, like multiplying quantity by unit price), and inferred classification (making judgments the document doesn't explicitly state). All three modes work together in a single extraction pass — you get a complete row with extracted values, computed totals, and inferred categories all at once. (For a deeper look at extraction accuracy across receipt formats, see the receipt extraction accuracy guide.)

The sidebar workflow requires the add-on to be installed in each team member's Google Sheets. In practice, small teams sometimes include people who don't work in Google Sheets regularly — field staff, contractors, part-time employees who submit expenses once a month. Installing an add-on and learning even a two-step workflow may be more friction than the volume justifies.

For these cases, there's an alternative path: a Collection Link. This is a shareable URL (generated from your ImageToTable.ai account) that anyone can open in a browser. The recipient enters a short verification code to prove they're not a bot, then uploads their receipt or expense report directly. The file lands in your account's processing queue — no registration, no login, no Google Sheets required on their end. You process the file through the add-on on your side, and the extracted data still appears in the shared sheet.

The Collection Link serves as the bridge between the full add-on workflow (for core team members) and a zero-friction upload path (for occasional contributors). The extracted data ends up in the same sheet, under the same columns, regardless of which path the file took to get there. If you also use the add-on for other document types — like extracting invoice data or processing bank statements — the Collection Link handles those uploads too, keeping a single intake point for everything that needs to reach your sheet.

The Manager's Monthly Close

By the end of the month, the shared sheet contains rows from every team member — each row extracted from a receipt or expense report, each row already categorized. The manager's monthly close shifts from "collect receipts, transcribe them, chase people for missing categories" to "verify, total, and reimburse."

The verification step is still necessary — no extraction is 100% accurate, and expense amounts have financial consequences. Scan the Amount column for values that look wrong, spot-check a few receipts against their extracted rows. But verification is faster than transcription by an order of magnitude. Spot-checking 50 rows takes minutes. Transcribing 50 receipts takes hours.

From the verified sheet, the manager can:

  • Generate category totals with a pivot table — Travel, Meals, Office Supplies, Software, and Client Entertainment each get their own row, pulled from the AI-inferred Category column. This is your spending breakdown for the month without anyone manually categorizing a single receipt.
  • Flag reimbursable amounts by filtering the Reimbursable? column for "Yes." If the team uses company cards for some purchases and personal reimbursement for others, this split is already in the data. For IRS accountable plan compliance, reimbursements must be made within a reasonable period — the sorted sheet makes it easy to total what each employee is owed.
  • Calculate mileage reimbursements by adding a Mileage column and using the IRS standard rate — 72.5 cents per mile for 2026 (IRS mileage rate, 2026). Team members enter their miles driven; a formula multiplies by the rate and adds it to their reimbursement total.
  • Export for payroll or accounting by downloading the sheet as CSV or connecting it to QuickBooks or Xero via their Google Sheets import. The data is already in columns that map to standard accounting fields — Vendor, Amount, Date, Category.

The pivot table for category totals deserves emphasis because it's where the AI classification pays off. Without inferred columns, the manager would need to manually categorize every receipt at month-end — or trust that team members did it consistently (they didn't). With inferred classification, the pivot table is accurate on day one of the close. The only thing left to check is whether any receipts were misclassified — and even then, correcting a category label on a few rows is dramatically faster than assigning categories to every row from scratch.

For teams looking to go further — reconciling bank transactions against expense records or batch-processing large volumes of receipts — the same shared sheet serves as the foundation that additional automation layers can build on.

What This Costs vs. Traditional Expense Software

Google Sheets is free for personal Google Accounts and starts at $6/user/month for Google Workspace Business — which most small teams already pay for email and Drive. The add-on operates on your existing ImageToTable.ai plan, which starts with a free tier for trial use. The cost comparison for a 5-person team looks like this:

ApproachMonthly Cost (5 users)Annual CostKey Trade-off
Google Sheets + AI add-on$0 (Sheets) + usage-based extraction plan~$100–300 (plan-dependent)You manage the sheet structure; extraction handles data entry
Expensify (Collect plan)$50 ($10/user)$600Full expense management platform; per-user pricing adds up with growth
Zoho Expense (Standard)$15 ($3/user)$180Affordable; works best within Zoho ecosystem
Ramp$0 (platform) + interchange revenue$0 (direct)Requires Ramp corporate card; limited multi-currency; US-focused
SAP ConcurCustom quote (typically $100+)$1,200+Enterprise-grade; steep learning curve; overbuilt for teams under 50

The cost difference is real, but it's not the only factor. The more important consideration for a small team is workflow continuity. If you switch to Expensify or Zoho Expense, you're asking five people to learn a new tool, install a new mobile app, and accept that expense data now lives outside the spreadsheet where the rest of the team's operational data lives. If you add an extraction sidebar to the sheet you already use, the only thing that changes is how data gets into cells — the sheet itself, the monthly close process, and the habits everyone has built around it stay intact.

For comparison workflows that explore this trade-off in more detail: the sidebar vs. download-import comparison covers the efficiency difference between in-sheet extraction and external tool workflows, and the invoice workflow comparison covers the same question from the AP perspective.

The decision isn't "spreadsheet vs. expense software." It's "spreadsheet alone vs. spreadsheet with an extraction layer." For a team that already lives in Google Sheets, the latter keeps everything in one place while eliminating the part of the workflow that actually costs time.

FAQ

Does each team member need their own ImageToTable.ai account?

Not necessarily. If the add-on is installed with the manager's API key in account mode, any team member with edit access to the shared sheet can use the sidebar — extractions count against the manager's plan quota. Each team member can also connect their own API key if they have a separate account. For team members who don't use Google Sheets at all, the Collection Link provides a no-account upload path.

What if a receipt has multiple line items — should each be a separate row?

It depends on your tracking granularity. For most team expense use cases, one row per receipt (with the total amount) is sufficient for reimbursement and category tracking. If you need per-item detail — for example, splitting a single Amazon order across Office Supplies and Software — you can either define columns for line items or submit the receipt as separate extractions with different category assignments. The add-on handles both approaches.

How accurate is the AI categorization?

The inferred classification is based on the AI's reading of the receipt content — merchant name, line items, transaction context. For clear-cut cases (a Delta Airlines receipt → Travel, a Staples receipt for printer paper → Office Supplies), accuracy is very high. Edge cases exist: a meal at an airport restaurant could be Travel or Meals depending on context. For these, the manager can override the category in the sheet — but the AI's first-pass classification handles 80–90% of cases correctly, reducing the cleanup workload to the exceptions rather than the entire dataset.

Can the add-on handle handwritten receipts?

Yes. The AI reads both printed text and handwriting, including cursive. Handwritten amounts and vendor names on paper receipts are recognized by the same vision model that processes printed PDFs. Accuracy on handwriting is lower than printed text — expect 85–95% rather than 99% — so a quick spot-check of handwritten entries is recommended. The custom column extraction guide covers handwriting accuracy in more detail.

What happens if two team members use the add-on at the same time?

Google Sheets handles concurrent editing natively — each extraction adds a new row at the bottom of the sheet. If two people extract simultaneously, both rows are appended without conflict. The add-on operates on the active sheet, so each team member sees the sheet they're working on and their extracted rows appear in real time for everyone with the sheet open.

Does this work for mileage reimbursement too?

The add-on extracts data from documents — receipts, invoices, expense reports. It doesn't track GPS mileage. But you can add a Mileage column to your sheet where team members manually enter miles driven, and use a formula (=Miles*0.725 for the 2026 IRS rate of 72.5 cents/mile) to calculate the reimbursement amount. Mileage entries sit alongside extracted receipt rows in the same sheet, so the monthly reimbursement total covers both receipt-based and mileage-based expenses in one place.

The gap in team expense tracking has never been the tracking itself — Google Sheets handles that for free, and small teams have been using it competently for years. The gap is the distance between "receipt in hand" and "row in sheet." Closing that distance is what turns a passive expense log into an active capture system. If your shared sheet already has the columns and the people, all that's missing is the extraction layer that connects them.

📮 contact email: [email protected]