Let’s make smart receipts | Nathaniel Read

Let's make smart receipts

Over the weekend I wanted to get the fundamentals of Go, so thought that I’d make a new project to get hands-on with it. Through getting email receipts and scraping items from them, I can convert all my Wetherspoons and Trainline receipts into transaction data.

Building it

The application works by scraping emails over IMAP (the most popular email receiving protocol) and looking through their contents to find receipt items, quantities and costs and then converting it to Monzo’s formats and sending it to them over their receipt API.

It’s pretty nice to be able to get a better sense of where my money is going, and if Flux can expand to more merchants it’ll really change banking for the good. In the meantime, my solution makes it easy to look back through transactions at the two merchants and work out what I bought and when!

In-app view

The API isn’t perfect though, and there are a few things that I’d change about it.

A Receipt API wishlist
  • You should be able to fetch all receipts for a Monzo transaction, possibly through passing as a parameter like getting extra merchant information, as this would be useful to be able to show in client apps.
  • You should be able to create receipts for the old Monzo Prepaid Card transactions, at the moment if you do it, it just gives you 403 Forbidden.
  • Developers should be able to add custom fields (i.e. Transaction ID/Reference, booking collection ID) and mandate what gets shown on the receipt, as the Spoons app makes sense being an online merchant, but you should still be able to say the address at the pub it was used in.

Also, as an aside, Starling Bank should get a receipts API - I previously used them as my main current account, and it would be pretty useful to get that data matched up nicely too.


I’ve written some more about how I implemented the application, you can read it here:

receiptify on Projects Page