I automated the hunt for my invoices
Every quarter I used to tell myself the same story: gathering the invoices for bookkeeping will only take an evening. It never did. The work was not reading the PDFs. The work was finding them.
Some arrive by email with the attachment already there. Others send a cheerful notice and then make you log in to download the file. A few never email anything at all. By the time the bookkeeper asks for the missing ones, you are hunting through portals, PayPal histories and password resets — usually at the worst possible moment.
The real cost is the hunt
I do not mind paying for tools. What I mind is spending an afternoon proving that I paid for them.
A typical round looked like this. Open the mailbox and pull anything that already has a PDF. Then log into the portals that refuse to attach one. Then check payment processors for receipts when the vendor invoice itself is missing. Then compare the pile to whatever the bookkeeper says is still outstanding. Then notice that one subscription only exists behind a login you have not used in months.
That is why it slips to the last minute. Not because bookkeeping is hard, but because collecting the input is annoying enough to postpone until it becomes urgent.
Vendors that make you clock in for your own invoice
The most frustrating pattern is the one that should have been solved years ago: the invoice is ready, the company knows my email address, and somehow I still have to log in every month to fetch a PDF.
In one recent pass I saw the split clearly. Providers like TransIP, Google Workspace and Hetzner put the invoice in the mail. Others, like KPN, mostly send a notice and leave the PDF in a portal. OpenAI did not show up as invoice mail at all — those had to be collected from the account. PayPal helped for some payments, but a payment receipt is not always the same as the supplier invoice your bookkeeper wants.
None of this is complicated. It is just repeated friction. And repeated friction is exactly what turns a monthly chore into a quarterly crisis.
So I automated the search
I changed the goal. Instead of heroic end-of-quarter collecting, I want a boring monthly run: gather what can be gathered, flag what still needs a login, and forward the ready set to bookkeeping.
- Scan the mailbox for invoice and receipt messages, including the ones already forwarded earlier in the period.
- Download attachments where the PDF is already there.
- Work through a portal list for vendors that hide invoices behind a login — with me handling passwords and verification codes when needed.
- Build one pack with a clear overview of what was found and what is still missing.
- Forward on a schedule so bookkeeping gets a monthly stream instead of a panicked dump.
The first run already made the shape of the problem visible. Plenty of invoices were sitting in email the whole time. A smaller set needed portal work. A few needed a human because the browser blocked an internal download link, or because an old account had been closed. That split is useful: automate the boring majority, and keep the exceptions short.
What I am not trying to solve
I am not building a full accounting system. My bookkeeper already has the tools for that. I also skip the invoices they upload themselves.
The job is narrower: remove the hunt. If the PDF can be found without thinking, it should already be in the pack. If a vendor insists on a portal, that vendor goes on a fixed list with a known path, instead of being rediscovered every quarter.
Monthly beats quarterly
The interesting part is not the script. It is the cadence. Once collection happens every month, the pile never gets large enough to dread. Missing invoices show up while the login is still fresh. And the evening before the deadline stops being a scavenger hunt through half-forgotten accounts.
There will always be an awkward portal. There will always be one PDF that refuses to download cleanly. That is fine. The point of the automation is not perfection. It is making the default path so easy that postponing it feels sillier than just letting it run.
Written with the help of AI.Why I work that way.
Comments
No comments yet