Expensent
Expensent
PricingIntegrationsGuidesAboutContactGet Started
Menu
PricingIntegrationsGuidesAboutContactHelp
Privacy PolicyTerms of Service
Theme
Get Started
Home/Guides/Expensify SmartScan Troubleshooting

Expensify SmartScan Troubleshooting

Stuck on “SmartScanning” forever? Seeing SCANFAILED? Forwarded receipts vanishing? A full diagnostic walkthrough of every way Expensify SmartScan breaks — including the forwarding-chain root cause most troubleshooting guides miss.

Last updated: April 2026

In This Guide

  1. 1. How SmartScan actually works
  2. 2. Diagnostic flowchart: which failure is yours?
  3. 3. Category A — Receipt never arrived
  4. 4. Category B — Arrived but scan failed or stuck
  5. 5. Category C — Wrong data extracted
  6. 6. Category D — Quota & plan limits
  7. 7. Category E — The forwarding-chain problem
  8. 8. When to stop troubleshooting and switch approach
  9. 9. Frequently Asked Questions

1. How SmartScan actually works — the layered pipeline you need to understand to fix it

Most SmartScan troubleshooting advice fails because it treats SmartScan as a single thing. It isn't. According to Expensify's own engineering blog, SmartScan is a layered pipeline: OCR runs first, then a set of vendor-specific parsers that recognise receipts from Amazon, Home Depot, Delta, and dozens of other well-known issuers, and then a 24/7 human verification network picks up anything the machine isn't confident about.

The accuracy number matters. Expensify markets SmartScan as roughly 99% accurate, but the company is blunt in its own blog that “even the best OCR in the world only gets a receipt right around 85% of the time.” That remaining ~14 points come from the vendor parsers and the human reviewers. A 2017 Quartz investigation documented that some of the human review historically ran through Mechanical Turk.

Why does this matter for troubleshooting? Because a SmartScan problem can live in any layer of the pipeline — the upload itself, the OCR pass, the vendor-parser routing, the human review queue, or the steps before and after SmartScan entirely. Each layer fails differently and has a different fix. Lumping them together is what makes generic advice useless.

Key implication: when someone says “SmartScan is broken”, the first job is to figure out where it broke. That's what Section 2 does.

2. Diagnostic flowchart: which category is your failure?

Run through these four questions in order. The first one you answer “no” to points you at the right category below.

  1. 1.Does the receipt appear in Expensify at all (any state, including “Checking” or an empty expense)? No → jump to Category A.
  2. 2.Did SmartScan finish (not stuck, not SCANFAILED)? No → jump to Category B.
  3. 3.Is the extracted amount, date, and merchant correct? No → jump to Category C.
  4. 4.Are you seeing any “upgrade your plan” or Concierge upsell messages around this receipt? Yes → check Category D.

If the receipt is being forwarded from Gmail or Outlook and you keep landing in Category A even after fixing the obvious stuff, skip ahead to Category E — the forwarding chain itself is probably the problem.

3. Category A — Receipt never arrived at Expensify

Symptom: you forwarded or emailed a receipt to receipts@expensify.com and nothing shows up in Expensify at all — no expense, no SCANFAILED, no “Checking” placeholder. The receipt didn't reach Expensify's servers, so nothing in the SmartScan pipeline has a chance to run.

Sending address not verified as a secondary login

Cause: Expensify only accepts receipts from the primary login or a verified secondary login. Unverified senders are silently dropped — no error, no bounce.

Fix: Settings → Account → Contact Methods → Add a secondary login. Add the address, then complete the Magic Code verification from that inbox. See the full email receipts to Expensify setup walkthrough.

Typo in the destination address

Cause: Sent to receipt@expensify.com (singular), receipts@expensifiy.com, or a similar typo. These silently bounce or go nowhere.

Fix: The correct address is exactly receipts@expensify.com. Save it as a contact to eliminate repeat typos.

Gmail or Outlook flagged Expensify's bounce as spam

Cause: When something goes wrong, Expensify often replies with an error email. If Gmail or Outlook files that reply into Spam, you never see it and assume nothing happened.

Fix: Search your spam/junk folder for from:expensify.com. Whitelist the domain so future bounces land in your inbox.

Attachment type not supported

Cause: receipts@expensify.com accepts GIF, JPG, PNG, PDF, DOC, and RTF. iPhone HEIC photos and WEBP images are silently rejected even though they look like normal image files in the email client.

Fix: Convert HEIC to JPG on the phone (Settings → Camera → Formats → Most Compatible) before sending, or open and re-export the file as PNG.

4. Category B — Arrived but SmartScan failed or stuck

Symptom: the receipt is visible in Expensify, but it's stuck in a status like “SmartScanning” forever, flipped to SCANFAILED, or is blocking your report from submitting with a “waiting for SmartScan to finish” warning.

“Checking” vs “SmartScanning” are different states. “Checking” means the receipt never actually reached Expensify — treat it as a Category A failure. “SmartScanning” means the job is queued on Expensify's servers and will eventually complete, per their own Concierge guidance: “as long as you still see the word SmartScanning, it will eventually complete.”

Stuck on SmartScanning for hours

Cause: Expensify publishes that SmartScan takes “a few minutes to a few hours” depending on receipt quality and backlog volume. During month-end, tax season, and major holidays the human review queue balloons and multi-hour waits are normal.

Fix: Wait. If you're past 24 hours on the same expense, ping Concierge with the report ID so they can manually force it through the pipeline.

SCANFAILED state with manual-entry fallback

Cause: OCR confidence hit zero — usually a blurry, rotated, or glare-ruined image, a screenshot-of-a-screen, or a receipt cropped so tight half the line items are missing.

Fix: Tap the retry button on the expense. If retry fails twice, fill the fields manually. For future receipts, re-photograph flat-on, in daylight, and avoid screen-of-screen captures entirely — a downloaded PDF from the vendor portal works far better than a phone photo of the same email on a monitor.

Email signature image confusing OCR

Cause: When you forward an email, some clients convert your HTML signature (with logo) into an attached image. SmartScan sees two attachments and can route to the wrong one, or can combine them into a single garbled receipt.

Fix: Strip your signature before forwarding, or download the original invoice PDF from the vendor and attach just that to a fresh email.

Report blocked: “waiting for SmartScan to finish”

Cause: Expensify won't let you submit a report while any expense on it is still SmartScanning — that's by design, to avoid approving a report whose totals are about to change.

Fix: Either wait for SmartScan to finish, or detach the offending expense from the report, submit without it, and add it back later once the scan completes.

5. Category C — SmartScan extracted the wrong data

Symptom: SmartScan finished, the expense has values, but the amount, date, merchant, or currency is wrong. This is the “15% failure rate” Expensify's own blog admits to. The fix is always the same — edit it manually — but understanding why it got it wrong helps you choose better receipts going forward.

Amount picked up the tip line, not the total

Common on US restaurant receipts where the printed total includes a blank tip row and a “grand total” row. OCR sometimes grabs the larger number from whichever line happens to be cleanest. Fix in-place on the expense.

Date = statement date instead of transaction date

Credit card statements, subscription receipts, and “thanks for your purchase” confirmations often show two dates. SmartScan's vendor parsers usually pick correctly for big-name vendors, but for the long tail you get whichever date OCR read first.

Merchant = parent company, not the DBA

SmartScan returns “YUM Brands” instead of “Taco Bell”, or “Darden” instead of “Olive Garden.” Fine for reporting, annoying for categorisation. Edit manually, and accept that next month's receipt from the same vendor will still say the parent company — editing does not train SmartScan.

Currency mis-detection on international invoices

€, £, and $ are easy to confuse when the currency symbol is tiny or printed in a decorative font. SmartScan tends to default to your account currency on ambiguous receipts, which means a €100 EU invoice can land in your reports as $100 USD. Always double-check currency on foreign vendors.

Your edits don't train the model. Both Expensify docs and community threads confirm that correcting a SmartScanned expense does not teach SmartScan to do better next time on the same vendor. If a vendor is consistently wrong, build the expectation that you'll keep fixing it.

6. Category D — Quota & plan limits

Symptom: SmartScan works for the first handful of receipts each month and then silently stops filling in data — or Concierge starts nudging you to upgrade whenever you submit a receipt.

Expensify's free plan includes a limited number of SmartScans per month. That number has been revised downward multiple times over the years and we deliberately aren't citing a specific figure here — check the current Expensify pricing page for the number that applies to your account today. Once you exceed the quota, SmartScan either stops running for the rest of the billing period or charges per additional scan.

Fix: if you're a freelancer or solo operator who only submits a handful of receipts per month, you can ride it out. If you're consistently over the limit, either upgrade your Expensify plan or automate the forwarding so you're only submitting receipts that actually need to be expensed — the next two sections cover why that matters and how to do it.

7. Category E — The forwarding-chain problem (the real root cause most guides miss)

Here's the one most troubleshooting articles never mention. If you've verified your secondary login, confirmed the file format, waited out the SmartScan queue, and the forwarded receipt from Gmail or Outlook still fails — the problem isn't on Expensify's side. It's the forwarding chain.

When Gmail or Outlook auto-forward a message, they don't just relay it untouched. They rewrite the envelope. Specifically:

What Gmail/Outlook auto-forward does to your receipt email

  • Rewrites the envelope From: header — the forwarded email arrives at Expensify with your address in the envelope, not the original vendor's. Expensify uses envelope sender to route the receipt to your account, and if the address it sees is wrong, the receipt can arrive but never associate with your expenses.
  • Strips or invalidates the DKIM signature — the original vendor's DKIM no longer matches the rewritten envelope, so any system that uses DKIM to trust the sender (Expensify's spam/routing logic included) has to fall back to heuristics.
  • Sometimes re-encodes attachments — Gmail occasionally wraps forwarded PDFs inside a message/rfc822 container so the PDF is technically “inside” another email, and SmartScan never unwraps it.
  • Manual forward is only slightly better — clicking the Forward button in Gmail still rewrites the envelope From, just doesn't strip DKIM as aggressively. You'll still hit the routing problem.

The tell: the exact same receipt works when you manually forward it from your phone's Gmail app (which sometimes preserves more headers), but fails from a Gmail auto-forward rule. Or: a vendor receipt works when you email it fresh from a web portal, but the same receipt forwarded from your Outlook rule lands in limbo. That's the forwarding chain doing surgery on the envelope.

The only fixes are: (a) stop using auto-forward and manually forward each receipt from the native Gmail/Outlook UI, (b) use a desktop Outlook rule (which is less invasive than server-side rules), or (c) bypass the forwarding chain completely by using a tool that connects to your inbox directly and sends a clean, properly-addressed email to receipts@expensify.com on your behalf. That's what we cover next.

8. When to stop troubleshooting and switch approach

If you've spent the last hour clicking through Concierge threads, re-verifying your secondary login, reshooting receipts, and watching the same ones vanish again — take a breath. You're not doing anything wrong.

Honest framing: if you've worked through Categories A, B, C, and D, and receipts still vanish between your Gmail/Outlook auto-forward rule and Expensify, the problem is structural. The forwarding chain itself is rewriting headers you can't control, and no amount of configuration inside Expensify will fix a header that gets rewritten before Expensify ever sees it. Expensent doesn't fix SmartScan's OCR misreads or plan quotas — it only removes the forwarding-chain variable. But for most people stuck at this point, that's the entire problem.

At that point you have two realistic options. One: manually forward every receipt from the native Gmail or Outlook UI — works, but puts the burden back on you to remember every receipt, every month. Two: skip the forwarding chain entirely.

How Expensent bypasses the forwarding chain

  1. 1.Connect your inbox via OAuth — Gmail, Outlook, or IMAP. No password shared, no Gmail filters to configure, no auto-forward rules to verify.
  2. 2.Expensent sees your invoices inside your inbox — AI classification identifies the ones with attachments ready to forward, the ones that need a portal download, and the ones that need a second look.
  3. 3.One-click forward to receipts@expensify.com — or create a rule from an existing invoice so the next one like it is auto-forwarded when it arrives. No more remembering.
  4. 4.Expensent sends the forward from your verified secondary login with a clean envelope — no Gmail header rewriting, no DKIM strip, no rfc822 wrapping. Expensify's SmartScan pipeline sees the email exactly how it expects to see it.

Why this fixes Category E specifically

Because Expensent isn't forwarding an email through Gmail — it's composing a fresh email from your verified login address directly to receipts@expensify.com with the invoice PDF attached. There is no forwarding chain to mangle. 5-minute setup, and the Action Center catches anything the rules don't auto-forward so nothing slips.

Want the full setup walkthrough? Read the Expensent → Expensify setup guide, or see the Expensify integration page for the feature breakdown. Related reading: Gmail to Expensify workflow and never miss a receipt in Expensify.

Get Started

9. Frequently Asked Questions

Why is my Expensify SmartScan taking so long?
Expensify says SmartScan typically finishes in "a few minutes to a few hours" depending on receipt quality and backlog volume. During peak periods (month-end, tax season), multi-hour waits are normal and expected. As long as the status still reads "SmartScanning" (not "Checking"), the receipt has reached Expensify's servers and will eventually complete. If it has been stuck well over 24 hours, contact Concierge and attach the report ID — the job may have silently failed and need a manual retry.
What does "SCANFAILED" mean in Expensify?
SCANFAILED is Expensify's explicit failure state for a SmartScan that could not extract data — usually because the image was too blurry, too dark, heavily rotated, or the file was a format SmartScan could not parse. When a receipt hits SCANFAILED, Expensify drops you into a manual-entry fallback so you can type the amount/date/merchant yourself, and exposes a retry button to re-submit the same attachment to SmartScan. SCANFAILED is not the same as the receipt being lost — the expense is still created, just without auto-filled fields.
Why don't my forwarded Gmail receipts show up in Expensify?
This is almost always one of two things. First, the sending address must match a primary or verified secondary login on your Expensify account — unverified senders are silently dropped with no error. Second, Gmail auto-forward rewrites the envelope From: header to your own address and strips DKIM signatures. Expensify uses the envelope sender to route receipts to the right user account, so a mangled envelope can cause the email to arrive but never associate with your expenses. Manually forwarding from the Gmail UI is slightly safer than auto-forward rules, but both are fragile. The reliable fix is to bypass the forwarding chain entirely with a tool like Expensent.
Can I retry a failed SmartScan?
Yes — but only when the receipt has reached the SCANFAILED state. On the expense, tap the retry option to re-submit the existing attachment back to SmartScan. For stuck "SmartScanning" expenses (no failure yet), there is no manual retry — you have to wait, because Expensify considers the job in flight. If the same receipt fails SmartScan twice in a row, the underlying image is the problem (re-photograph in better light, crop tightly, avoid screen-of-screen captures) or the file type is unsupported (HEIC from iPhone is a common silent failure — convert to JPG first).
Does Expensify use real humans to read my receipts?
Yes, as a fallback. Expensify's own engineering blog describes SmartScan as a layered pipeline: OCR runs first, vendor-specific parsers (Amazon, Home Depot, Delta, and others) handle known formats, and a human verification step reviews receipts where machine confidence is low. Expensify is blunt that "even the best OCR in the world only gets a receipt right around 85% of the time" — the 99% accuracy they market comes from the layered approach, humans included. A 2017 Quartz investigation documented that some of this human review historically ran through Mechanical Turk. If you're privacy-sensitive, assume a human may see any given receipt.
Why did SmartScan extract the wrong amount?
Common causes: SmartScan read the tip line instead of the total (on restaurant receipts), pulled the statement date instead of the transaction date, picked up the parent company name instead of the DBA (e.g., "YUM Brands" instead of "Taco Bell"), or mis-detected the currency on multi-currency invoices. Also: if your receipt image includes an email signature or a second receipt in the same frame, OCR can cross-contaminate the fields. Fix: edit the expense directly — amount, date, merchant, and category are all editable. Note that editing does not train SmartScan; community reports and Expensify's own docs confirm your corrections do not teach the model to do better next time on similar receipts.
How do I add a secondary email so my receipts show up?
In Expensify, go to Settings → Account → Contact Methods → Add a secondary login. Enter the email address you plan to forward receipts from, then enter the Magic Code Expensify sends to that inbox to verify it. Until you complete the Magic Code step, the address is pending and receipts forwarded from it will be silently dropped. You can add multiple secondary logins (useful if you forward from both a personal and work inbox) — each needs its own Magic Code verification.
Does editing a SmartScanned expense teach it to do better next time?
No. Community threads and Expensify's own documentation are clear that SmartScan corrections do not retrain the model per-user. If SmartScan consistently mis-reads a specific vendor's receipts (say, always grabbing the subtotal instead of the total), you should expect to keep correcting it every time. The layered pipeline improves over time globally as vendor parsers are added, but your individual edits are not fed back as training data.
What file types does receipts@expensify.com accept?
The receipts@expensify.com intake address accepts GIF, JPG, PNG, PDF, DOC, and RTF attachments. Common silent failures: HEIC photos from iPhone (convert to JPG first), WEBP images (convert to PNG), encrypted PDFs (Expensify cannot open password-protected files), and PDFs wrapped as message/rfc822 attachments by some forwarding chains. If you forward an email whose attachment is in a supported format but Expensify still misses it, the forwarding chain may have re-encoded the attachment en route.
Why does my receipt say "Checking" and never start scanning?
"Checking" and "SmartScanning" are two different states and mean very different things. "SmartScanning" means the receipt reached Expensify's servers and is in the pipeline — it will complete eventually. "Checking" (sometimes shown as the receipt still being uploaded) means the receipt never left your device or never arrived at Expensify at all. If a receipt is stuck on "Checking" for more than a few minutes, force-close and reopen the Expensify app, check your internet connection, and try re-adding the receipt. A Checking-stuck receipt will never transition to SmartScanning on its own.

Done fighting SmartScan?

Connect your inbox, see every invoice in one place, decide what gets forwarded — and let the rules you set handle the rest as new invoices arrive. Expensent sends each receipt from your own verified login with a clean envelope, so SmartScan sees it the way it expects. 5-minute setup. No auto-forward rules to verify, no header rewriting, no more hunting for the one receipt that vanished.

Get Started

Also see: pricing · how Expensent works

Expensent
Expensent

Finds your invoices. Forwards them your way.

ProductPricingIntegrationsHow it WorksComparevs Manual Forwardingvs Gmail Filters
Works WithExpensifyQuickBooksXeroFreshBooksZoho ExpenseSAP ConcurWaveRampBILL.comDext
Guides
QuickBooksExpensifyXeroFreshBooksBrexRampSAP ConcurDextBILL.comWaveZoho ExpenseDivvyEmburseHubdocPleoRydooRevolut Business
CompanyAbout UsContactHelp CenterPrivacy PolicyTerms of ServiceLegal Information

© 2025–2026 Expensent. All rights reserved.

Stripe Climate badgeExpensent contributes a portion of revenue to remove CO2 from the atmosphere.