Skip to content
ignitai Get the app
← Back to blog · · 12 min read

Scan receipts to a spreadsheet on Mac (2026 batch workflow)

Turn a folder of receipt photos and PDFs into one clean Excel or Numbers spreadsheet on Mac — on-device on macOS 14.4+, batch-ready for expense reports and tax season.

guides receipts mac expense-reports

It’s the end of the quarter. The iPhone has captured eighty-seven receipt photos since January, the iPad has another twenty from the conference last month, and the Mail inbox has thirty-one PDF invoices from suppliers that never got filed. They all live in iCloud Drive now, scattered across Downloads, Desktop, and three folders nested under Receipts/2026/. Your accountant wants one Excel file. The IRS wants categorized line items. You want to be done before dinner.

The Mac is, for this specific job, the right tool. The keyboard makes spot-checking eighty rows fast. The big screen shows the receipt image alongside the extracted row so you can verify in seconds, not minutes. And on macOS 14.4+ on Apple Silicon, on-device AI can chew through a hundred and forty receipt files and produce one consolidated spreadsheet without sending a single image to a cloud service.

This guide is the workflow that gets you from “scattered receipt files across iCloud Drive” to “one expense-report XLSX I can email to the bookkeeper” without a subscription to Expensify, without a desktop scanner, and without uploading your quarterly spending pattern to a third-party server.

Why Mac (not iPhone, not iPad) for the receipt batch

The iPhone receipts guide is the right path for the receipt that just landed in your hand at the coffee shop — capture, extract, file, done in twenty seconds. The iPad walkthrough is the end-of-month batch for forty receipts on the couch. The Mac is different: it’s the device for the quarterly and yearly batch — a hundred-plus files, mixed sources (camera captures, AirDropped PDFs, supplier emails), one consolidated output for a real bookkeeping handoff.

Three reasons the Mac is genuinely the right tool for a real receipt batch:

  • Folder semantics. Receipts arrive from many sources: photos from the iPhone Photos library, supplier PDFs in Mail, AirDropped scans from the iPad, exports from Apple Wallet. macOS lets you stage them in one folder, drag the folder onto the converter, and let the tool walk the directory recursively. No iOS share-sheet equivalent moves a hundred files at once.
  • Spot-checking at speed. A 27-inch display shows the receipt image and the extracted row side by side. Spotting that the date column missed a leading zero, or that “Trader Joe’s” landed under both “Trader Joe’s” and “Trader Joes”, takes seconds when you can scroll the spreadsheet with one hand and the receipt with the other. On an iPad you swap views; on an iPhone you squint.
  • Numbers and Excel both run native. Whatever spreadsheet your bookkeeper uses, macOS opens it without conversion. The output .xlsx opens in Excel for Mac; the same file opens in Numbers without rewriting cell types. iCloud Drive then syncs the final back to your iPad and iPhone for review on the go.

If the receipts arrived one at a time over three months on the iPhone, capture them on the iPhone as they arrive. When it’s time to consolidate into one quarterly report, switch to the Mac.

Why a receipt batch is harder than it looks

A single receipt is a forgivable extraction problem. A folder of a hundred and forty receipts from twelve different vendors, three currencies, four years of thermal-paper fade, and a mix of photos and PDFs is structurally different. Concretely, the failure modes a batch extractor has to handle:

  1. Mixed file types in one run. Some receipts are JPEG photos from the iPhone, some are PDFs forwarded from suppliers, some are PNG screenshots from Apple Wallet, some are HEIC images from a recent iPad capture. A batch tool that handles only one format means three passes and three spreadsheets to merge by hand.
  2. One vendor, many spellings. “Starbucks”, “STARBUCKS COFFEE”, “Starbucks #4831 SFO Airport”, “Starbucks Reserve” — the same vendor, four different strings. A pivot table grouped by vendor splits into four rows of partial totals unless the extraction normalizes upfront.
  3. Currency at the file level, not the receipt level. A Berlin business trip’s receipts are in EUR; a Tokyo trip’s are in JPY; the rest are USD. The “amount” column needs both the original currency and a normalized currency for the trip total. A column of mixed-currency numbers is meaningless.
  4. Receipt date vs photo date. A receipt photographed on April 17 might be for a meal on April 15. The expense-report date is the meal date, not the capture date. The extraction has to read the date from the receipt itself, not infer it from EXIF metadata.
  5. Personal vs business. If the iPhone Photos library is the source folder, half the photos aren’t receipts at all — they’re screenshots, family photos, product pictures. A batch tool that doesn’t pre-filter wastes time and clutters the output.

A tool that solves the single-receipt case but not the batch case is the gap most users fall into. The batch path is where the time savings actually live.

Method 1: ignitai folder-watch on macOS (the main path)

ignitai treats batch extraction as one job, not a hundred individual ones. The Mac flow:

  1. Stage the folder. Create ~/Documents/Receipts/2026-Q2-expense-report/. Drag every relevant receipt photo, PDF, and screenshot into it. Or point ignitai at the existing iCloud Drive folder where you’ve been dropping captures since January.

  2. Open ignitai. Drag the folder onto the window. macOS 14.4+ on Apple Silicon (M1 onward) runs the on-device model — no images leave your Mac. Intel-era Macs fall back to a hosted pipeline with documented zero retention.

  3. Describe what to extract, in plain English. For an expense-report batch:

    “For each receipt, return: date (ISO 8601, from the receipt face, not the file metadata), vendor_name (normalized — collapse STARBUCKS COFFEE #4831 to Starbucks), category (one of: meals, lodging, transportation, supplies, software, other), subtotal, tax, tip, total, currency (ISO 4217), payment_method (card last 4 if visible, else ‘unknown’), and source_file (the original filename). Skip any image that is clearly not a receipt — a person, a product photo without a price, a screenshot of a chat. Flag any receipt where the math doesn’t reconcile (subtotal + tax + tip ≠ total) with a needs_review column set to true.”

    Save the prompt as a preset called “Quarterly expense report.” Next quarter it’s one tap.

  4. Pick XLSX as the output format. Two-sheet workbook: receipts for the line-level rows, summary for vendor and category totals. Currency formatting auto-applied to amount columns, ISO dates parsed as Excel date cells.

  5. Hit Extract. A folder of a hundred and forty mixed-format receipts on an M2 Mac processes in eight to twelve minutes. The progress bar shows file-by-file completion. The Mac fans don’t kick in — the Neural Engine handles it cool.

  6. Spot-check in Excel or Numbers. Open the output file. Sort by needs_review first; resolve any flagged rows by checking the source image (the source_file column is a clickable file:// link in Numbers). Then sort by date.

The whole flow, end to end on a quarterly batch: under thirty minutes of human time, most of it in the spot-check phase.

Why XLSX (not CSV, not Numbers) for the expense-report handoff

For bank statements the right output is often CSV — the destination is QuickBooks or Xero’s transaction-import flow. For Numbers-native personal sheets the right output is .numbers. For a receipt batch destined for an expense-report handoff, XLSX is the right format for three practical reasons:

  1. Multi-sheet structure. A receipts export wants two sheets — one row per receipt, plus a summary table with vendor and category subtotals. CSV is single-table; jamming both in one CSV means denormalized rows. Numbers handles multi-sheet but the bookkeeper probably opens it in Excel anyway.
  2. Bookkeepers run Excel. Whatever your personal preference, the bookkeeper on the receiving end of the email opens .xlsx natively. Sending .numbers forces a manual export. Sending CSV strips the formatting and the categorization formulas. XLSX is the universal handoff.
  3. Formulas and pivot tables survive. A =SUMIFS(receipts.total, receipts.category, "meals") in the summary sheet that totals meals expense for the quarter is a one-time setup. Pivot tables grouped by vendor with tax broken out are first-class in Excel. CSV strips both; Numbers carries different formula syntax that the bookkeeper has to translate.

If you personally live in Numbers and your bookkeeper does too, output .numbers directly (Format → Numbers in ignitai). Otherwise XLSX is the safe handoff.

Method 2: Apple Notes scanner + manual transcription

For a sole proprietor with five receipts a quarter:

  1. Open Apple Notes. Tap the camera button → Scan Documents.
  2. Each receipt becomes a scanned PDF in the note. Notes’ OCR makes the text selectable.
  3. Long-press the total field on each receipt, copy. Paste into a new row in Numbers.
  4. Repeat for date, vendor, category. Type the rest by hand.

This works for five receipts in a sitting. It does not handle a hundred and forty without becoming the worst job of the week. For an occasional sole proprietor with low transaction volume, fine. For anyone doing real per-quarter expense reports, the manual path stops scaling at receipt twelve.

Method 3: Expensify, Receipt Bank, or one of the SaaS apps

Expensify, Dext (formerly Receipt Bank), Concur, and the rest of the cloud expense-management stack all work. They’re not a bad answer if you’re already paying for one of them as a corporate-mandate tool. For an indie or small business, the math is the same problem the rest of the web-tool ecosystem has:

  • Per-user monthly fees. Expensify is roughly $5–$20 per user per month depending on tier. Dext is in the same range. A year of either is a hundred and twenty dollars or more per user, recurring forever, for a workflow you could do on-device for a one-time app cost.
  • Upload required. Every receipt photo, every PDF, every line item goes to the vendor’s cloud. For corporate expense workflows that’s a deliberate trade for the auditing and integration features. For personal or solo-business work, it’s data you’re shipping to a third party for no benefit.
  • Vendor lock-in on the categorization rules. The category logic you build in Expensify lives in Expensify. Move to a competitor or cancel the subscription and you walk away with CSV exports — no extraction-prompt portability.
  • Workflow optimized for “approve, then reimburse.” The whole UX assumes a multi-person approval workflow with managers and finance teams. For a solo expense report to a bookkeeper, half the buttons are noise.

For a finance team of fifteen at a company, Expensify or Dext is probably right. For a solo founder, a freelancer, or a small partnership, it’s solving a different problem than you have.

The four reconciliation checks for an expense-report batch

Once the XLSX is written and opened in Excel or Numbers, four quick checks separate “I have a file” from “I have an audit-ready expense report”:

  1. Math reconciliation on every row. The needs_review column flags rows where subtotal + tax + tip ≠ total. Sort by needs_review = true. Open each flagged source file. Common cause: a thermal-paper receipt where the tip line faded and the extractor read it as zero. Edit the row by hand; the rest of the batch is trustworthy.
  2. Vendor normalization spot-check. Create a pivot table grouped by vendor_name. Look for variants of the same vendor that should have merged — Trader Joes vs Trader Joe's, STARBUCKS #4831 that the prompt missed. Find/replace in the column, then refresh the pivot.
  3. Currency total per trip. If the batch crosses currencies, group by currency. The Tokyo trip’s JPY total should equal the sum of JPY receipts; the Berlin trip’s EUR likewise. Mixed-currency leaks (one EUR receipt classified as USD because the symbol was ambiguous) surface here.
  4. Date range sanity. The earliest date in the batch should be on or after the quarter start; the latest on or before the quarter end. Out-of-range rows are either misread dates or receipts from a different quarter that got dragged into the folder. Resolve before sending to the bookkeeper.

Skip these four and the bookkeeper finds them, which is the slow path. Better to spend ten minutes on spot-checks than to email an expense report that gets bounced back for re-review.

A worked example: quarterly batch for a freelance designer

Concretely: a freelance designer with a home office, a regular Tuesday-Thursday client site forty miles away, two conferences this quarter, and a software stack that adds up. The end-to-end Mac flow:

  1. Open ~/Documents/Receipts/2026-Q2/. It already contains 87 photos AirDropped from the iPhone over the quarter, 23 PDF supplier receipts from Mail, and 14 conference receipts from the iPad.
  2. Drag the folder into ignitai. The on-device model on the M3 MacBook Pro starts processing.
  3. Apply the “Quarterly expense report” preset.
  4. Pick XLSX. Hit Extract. 11 minutes.
  5. Open the output Q2-expense-report.xlsx in Excel.
  6. Sort by needs_review = true. Six flagged rows: three thermal-paper fades where tip was unread, two where the date column ran across a fold, one where the vendor name was actually two vendors (a hotel receipt with a separate parking line item).
  7. Fix the six by reopening each source file via the source_file link, transcribing the missed field, and unchecking needs_review.
  8. Build a pivot table: rows = category, values = sum(total). Meals: $1,140. Lodging: $2,820. Transportation: $930. Supplies: $310. Software: $580.
  9. Email the workbook to the bookkeeper. Total time start to email: 28 minutes.

Compare to the Expensify-equivalent flow (capture one at a time over the quarter, categorize one at a time, approve, export at quarter-end): roughly the same total human time but spread across ninety touches instead of one Sunday afternoon. The Mac batch is the right shape when you’ve let captures pile up — which is almost always how real receipts arrive.

When the Mac batch isn’t the right tool

Honest edge cases:

  • Receipts you need expensed today. Don’t wait for a quarterly batch — capture and extract on the iPhone at the moment of the transaction. The Mac batch is for the consolidation, not the capture.
  • Receipts where the original is a paper stack, not photos. A pile of physical receipts wants a desktop scanner pass first (any ScanSnap-class scanner outputs multi-page PDFs into a folder), then ignitai treats the PDFs as input. Skip the iPhone-camera step for paper that’s already in your hand at the desk.
  • Subscription receipts (AWS, Stripe, Google Workspace, Apple Developer). Those vendors all export billing CSVs directly. Pull the CSV from the billing portal — don’t extract from a hundred receipt PDFs when one CSV is one click away.
  • Corporate expense reports with manager approval. If your employer mandates Expensify, Concur, or SAP Concur, use the mandated tool. The on-device batch is for owner-operators and freelancers handing to a bookkeeper, not for multi-tier corporate approval flows.
  • Receipts older than the on-device model is comfortable with. Receipts from 2018 on faded thermal paper that you photographed in 2026 will have legibility problems no extractor will fully solve. For audit-defense purposes, the originals matter more than the extraction; keep the photos as evidence even if some rows need manual entry.

Bottom line

For a Mac user staring down a quarter or year of accumulated receipt photos and PDFs that need to become one expense-report spreadsheet: stage them in a folder, drag the folder into ignitai, apply the saved preset, pick XLSX, run the four reconciliation checks. For five receipts and a willing afternoon, Apple Notes plus manual entry works. For a corporate workflow with approvals, Expensify or Dext is the right tool for a different shape of problem. For everything in between — the indie, the freelancer, the small partnership doing real bookkeeping — the on-device Mac batch is the shortest distance from “folder of receipts” to “spreadsheet on its way to the bookkeeper.”

The same app handles iPhone capture for the in-the-moment receipt, iPad month-end batches for the couch review, and the Mac batch path for any other PDF folder you’re consolidating. Presets sync across all three via iCloud — write the extraction prompt once on Mac and the iPhone capture afterward picks up where the batch left off.

Get ignitai on the App Store — free download, $19.99/mo unlocks unlimited extractions after the 3-day trial.