What I found. Before writing any code to ease my bookkeeping, I did a research pass over what my accounting system actually supports. Everything below comes from public documentation — that was the point of the exercise.
Receipts go in by plain email forward. The bookkeeping service gives each organisation its own intake address; mails forwarded there land in the receipt archive, whether the receipt is an attachment or just the mail body. Their own recommended workflow is mail rules that forward known supplier senders. The second finding shaped everything: there is no missing-receipt report. No filter, export or API field anywhere lists entries without a receipt. Bank reconciliation is the proxy — the unmatched bank lines are the to-do list.
I framed buy-versus-build honestly: a commercial product exists that does exactly this, matured. I rejected it for one reason — it reads your mail on its servers, and nothing leaves my machine.
The conclusion writes itself: a mail filter forwarding known senders captures most of the value before a single line of code exists. And the failure mode that matters, for whatever gets built later: an automation that silently misses receipts is worse than none, because you stop checking while believing you are covered. So the primary output must be the remainder — the lines with no receipt found — plus a statement of what was not searched. It must never say all clear.