ExpenseBot

Why is my ExpenseBot Zap failing?

Work through these in order. Most broken ExpenseBot Zaps are one of the first three.

Work through these in order. Most broken ExpenseBot Zaps are one of the first three.

The Receipt File field is not a file

Symptom: Upload Receipt errors on the file, or processes something that is not a receipt.

Receipt File needs the actual file object from the trigger, or a directly downloadable file URL. A link to a preview page or a sharing page is a web page, not a receipt. The attachment's name is not the file either. Check this mapping before anything else — it is the single most common cause.

The wrong ID in Get Receipt Processing Result

Symptom: the result step returns nothing, or a not-found error.

Map the exact Submission ID that Upload Receipt returned. It is a different value from the Source Event ID you supplied, and it is not the file name or a timestamp.

Terminal Result Found keeps coming back false

Not a failure. Processing has not finished. Add or lengthen the Delay before the result step and check again. Upload Receipt returns when the file is queued, not when it has been read.

MIME Type is wrong or hardcoded

Symptom: intermittent failures on a trigger that produces several file types.

Map the true type from the source step — image/jpeg, image/heic, image/png, application/pdf. Do not hardcode one type for a trigger that can produce several, and make sure File Name keeps its real extension.

The group does not exist

Symptom: the client, project, or trip group field will not accept your value.

No ExpenseBot action creates a group. The field selects from groups that already exist. Create the group in ExpenseBot first, then map to it. Category fields behave the same way — they need an exact configured category name.

A date is rejected

Calendar dates are strict YYYY-MM-DD. Ranges are inclusive, need both ends, and the end must fall on or after the start. Ambiguous or reversed dates are rejected rather than guessed at, which is deliberate — a silently reinterpreted date puts an expense in the wrong tax year.

The connection fails or stops working

Authentication is OAuth 2.0 with PKCE and Zapier refreshes tokens itself, so there is no key to rotate. If the connection breaks, reconnect the ExpenseBot app in Zapier and sign in again. A connection that authenticates but then fails at a step usually means a missing prerequisite: no Google Sheet connected in ExpenseBot, or — for scan actions — Gmail never connected inside ExpenseBot.

The Gmail scan action fails

Gmail must already be connected inside ExpenseBot. The action uses the access you authorized there; it does not grant it and cannot scan an account ExpenseBot has never seen. Also check the range: use Lookback Days or Start Date and End Date, not both.

The Zap succeeded but nothing appeared in my sheet

Read the Receipt Verdict rather than the success flag. A duplicate verdict means the receipt was recognized against an existing expense and correctly not written twice. skipped, errored, or unknown means it went to Review Expenses for a person to decide. mixed is a batch where some files were added and some were duplicates — it is not an error. Only added writes new rows outright. Treating "not added" as a hard failure is the most common way a working integration looks broken.

A retry created a second record

The Source Event ID was not mapped, or was mapped to something that changes on replay — a timestamp or a random value. Map the trigger's stable unique identifier instead. See prevent duplicate expenses.

Still stuck

Email support@expensebot.ai with the Zap step that failed, the exact error text, and the Submission ID if you have one.

Related

Share:

Try ExpenseBot Free

AI extracts every receipt into a Google Sheet you own. Gmail scan, mileage, tax reports, profit-by-client. No credit card needed.

No credit card required · Setup in 30 seconds