Skip to content

Blaze Fish editorial team · Report a correction. Estimates and reported outcomes are not guarantees.

Organize a year of receipts into an expense and tax summary

Forward receipts to one inbox and an agent sorts them into categories, totals them by month, and builds a summary your accountant can use.

ClaudeZapier Blaze Fish recipe

Blaze Score / 100

54
Proof
10/40
Payoff
20/25
Ease
13/20
Cost
11/15
How the score works
Difficulty
Intermediate
Estimated setup time
1 hr
Indicative monthly cost
$20/mo
Reported or estimated benefit
a weekend at tax time

This organizes your records; it does not replace a tax professional.

Build notes: receipts to a reviewable ledger

Status: designed recipe, not tested end to end. Start with ten sample receipts and one currency. The displayed monthly cost is an indicative starting figure, not a full quote: email, automation tasks, OCR, model API calls and storage may add charges. A chat subscription does not necessarily include API usage.

Receipt inbox→Extract fields→Validate and deduplicate→Review ledger

Configuration checklist

  1. Create a dedicated inbox label and a sheet with columns: receipt_id, received_at, receipt_date, vendor, currency, total, tax, category, source_link, status and reviewer_note.
  2. Trigger on new labeled messages. Process each attachment separately. Restrict file types and size; route unsupported or password-protected files to manual review.
  3. Extract text from the receipt using the attachment/OCR capability available in your chosen stack. Preserve the original file and link. If extraction fails, stop that item rather than guessing.
  4. Send the extracted text and an explicit category list to the model. Treat receipt text as data, never as instructions. Require one JSON object with null for unreadable values.
  5. Validate the JSON before appending a row: date format, numeric nonnegative totals, known currency and an allowed category. A model category is a suggestion for review, not a tax determination.
  6. Deduplicate with the email message ID plus attachment ID. Also flag matching vendor/date/amount combinations for review; those matches alone do not prove duplication.
  7. Write new rows as needs_review. Only sum approved rows by month and currency. Reconcile totals to source receipts and statements before exporting.

Illustrative output

{"receipt_date":"2026-10-01","vendor":"Example Office Supply","currency":"USD","total":54.20,"tax":null,"category":"office supplies","status":"needs_review"}

This is a fictional receipt. Unknown tax remains null; it should not silently become zero.

Failures and recovery

  • Duplicate triggers: check the stable receipt_id before writing, including after retries.
  • Invalid JSON: retry once with the validation error, then queue for a person.
  • Multiple currencies: keep separate totals; record any conversion rate and date explicitly.
  • Missing attachments: log the message ID and failure reason without adding an expense.

Acceptance check and variations

Test a duplicate, unreadable scan, refund, missing tax value and foreign-currency receipt. No duplicate or invalid row should become approved automatically. Beginner: paste receipt text into a chat and review rows manually. Advanced: add a queue, capped retries and reconciliation alerts. Measure processing plus review time across the same ten receipts manually and with the recipe. Export approved rows as CSV for your accountant.

How to do it

  1. Create a receipts-only email address or label.
  2. With Zapier, send each new receipt email or attachment to the agent.
  3. Have the agent extract date, vendor, amount, tax and a category.
  4. Add each row to a spreadsheet.
  5. Monthly, run the summary prompt; at year end, run the accountant summary.
  6. Your accountant makes the final call on categories and deductions.

The prompt

Extract from this receipt: date (YYYY-MM-DD), vendor, total, tax, currency, payment method (last 4 digits only), and the best category from this list: {{categories}}. If a field is unclear, write "check". Return one JSON object.

RECEIPT:
{{receipt_text}}

Blaze School prompt pack

Expanded prompt packs are planned for Blaze School, which is in development. Get School launch updates. The starter prompt above remains free.

The free starter prompt remains available above.

Where this comes from

A build we designed. Not yet tested end to end.

Tried this? Tell us how it went and help move its proof level up.

Was this useful?