Skip to content
ignitai
← Back to blog · · 13 min read

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

Turn a folder of receipt photos and PDFs into one clean Excel spreadsheet on Mac — read on-device, never uploaded — ready for expenses and tax season.

guides receipts mac expense-reports

ignitai turns receipt photos and scans into a categorized expense spreadsheet on your Mac — your first conversion is free, then $19.99/mo after a 3-day free trial.

Download on the App Store ignitai — free download

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 ignitai chews through a hundred and forty receipt files and produces one consolidated spreadsheet, reading every image on-device — the files themselves are never uploaded.

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, select them all, and drag the whole batch onto the converter in one motion. 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. Two kinds of files. Some receipts are JPEG or HEIC photos from the iPhone, some are PDFs forwarded from suppliers, some are PNG screenshots from Apple Wallet. In ignitai the PDFs run as one batch and the images as another — same prompt for both, two clean outputs that paste together in a minute. What you avoid is per-vendor templates and per-file conversion.
  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 batch extraction on macOS (the main path)

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

  1. Stage the batch. Create ~/Documents/Receipts/2026-Q2-expense-report/ and drop every relevant receipt photo, PDF, and screenshot into it, so the whole quarter sits in one place.

  2. Open ignitai. Run the PDFs and the images as two batches. Select the PDFs (⌘A works inside the folder) and drag them onto the window; then drop the image files as their own batch — a Mac drop that mixes both imports only the PDFs, so two passes with the same prompt is the clean way. Each receipt is read on-device — the files are never uploaded — and only the recognized text is sent to ignitai’s private hosted pipeline to build the spreadsheet.

  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), and payment_method (card last 4 if visible, else ‘unknown’). 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.”

    ignitai keeps the prompt in Previous Prompts — next quarter it’s one tap to reuse.

  4. Pick XLSX as the output format. One consolidated sheet, one row per receipt — clean ISO dates and bare amounts you format once in Excel.

  5. Hit Convert. A quarter’s worth of receipts processes in minutes, with live progress — pages read, parts uploaded — across each batch.

  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 vendor and date on the row make the matching file a Spotlight search away). 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 XLSX opens straight in Numbers and one Save makes it .numbers. For a receipt batch destined for an expense-report handoff, XLSX is the right format for three practical reasons:

  1. One workbook carries the whole report. The extraction lands as a receipts sheet — one row per receipt — and you add a summary tab with vendor and category subtotals in the same workbook before sending. CSV is loose single-table files the bookkeeper has to reassemble.
  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 formulas you added. XLSX is the universal handoff.
  3. Formulas and pivot tables survive. A =SUMIFS(receipts.total, receipts.category, "meals") in your summary tab 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, open the XLSX in Numbers and hit File → Save — one step and it’s a native .numbers document. 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 23 PDFs into ignitai as one batch; then drop the 101 image files as a second batch with the same prompt.
  3. Reuse the quarterly expense prompt from Previous Prompts.
  4. Pick XLSX. Hit Convert. A few minutes per batch.
  5. Paste the two outputs into one 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 — the vendor and date on the row make it a Spotlight search away — transcribing the missed field, and clearing 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. And if you’re on the receiving side — finished expense-report PDFs that need to become ledger rows — the expense-report-PDF-to-Excel workflow covers that half of the desk.
  • Receipts older than the recognizer 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, run the PDFs and the images as two drags into ignitai, reuse the quarterly prompt from Previous Prompts, 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. The prompt is the same on all three — write it once and the workflow carries across devices, with the outputs meeting in iCloud Drive.

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

FAQ

How do I turn a folder of receipt photos into one spreadsheet on Mac?

Stage the quarter’s receipts in one folder and run them through ignitai — the PDFs in one drag, the image files in another — describing the columns once in plain English. Each batch comes back as a clean sheet, one row per receipt, dated and vendor-normalized, and the two paste into one workbook.

What file types can be mixed in one batch?

JPEG and HEIC photos from the iPhone, PDF invoices from Mail, and PNG screenshots all convert — run the PDFs as one batch and the image files as another, with the same prompt. Scanned and born-digital PDFs mix fine in the same run.

Are the receipt images uploaded?

No — every receipt is read on the Mac (macOS 14.4 or later) and never uploaded. Only the recognized text is sent to ignitai’s private hosted pipeline to build the spreadsheet.