Recent Posts
Converting Commonwealth Bank PDFs to CSV
When I started working on Bank Statement Converter, the first banks I supported were HSBC and Westpac. I started with those two banks because I have accounts with them. Soon after launching we started receiving a lot of bug reports from users wanting to convert statements from Commonwealth Bank, so they were the third bank we supported.
The First Format

These statements are quite easy to work with. They come in one language, English. The tables have headers. The headers appear in one line. The date values include the year. The amount and balance values have explicit negative signs. Back in those days my algorithm was pretty simple.
Converting Transfer Wise PDFs to CSV
For some reason the international payment company Wise (which used to be called Transfer Wise) issues PDF bank statements. I use Wise to send money overseas, but I don’t use their “Wise Account” feature because it isn’t available in Hong Kong. A lot of other people seem to use it, because we process a lot of PDF statements from Wise users.
The First Format

Wise statements used to look like this.
My business is dying
Revenue and Monthly Recurring Revenue are down significantly since we peaked in February 2026.

Revenue is down 24% since February 2026.

Monthly Recurring Revenue is down 12% since February 2026.

This has happened to me before with an application I made called Girlfriend Plus. In 2017 revenue spiked, but I didn’t do much development on the app. Pretty quickly revenue dropped off. Today it basically makes no money.
Why not always OCR?
In a previous post I talked about how OCRing the PDF would solve the problem I was facing. However, I chose to process the PDF with a different method. Someone in the hacker news comments had this to say.

This person is not wrong, but I’d like to point out some other scenarios where reading the PDF is a better solution than using OCR to process the PDF.
Identifying statements
When processing a bank statement, the first thing we do is classify the statement into a document_type. Once it is classified we run special rules for that document_type.
Why are all the amount values negative?

A few days ago I got this email from a customer. Something about all the amounts coming out as negative. I converted their PDF to verify the issue they described.
PDF Sample

Converted Sample

The customer was right, all the amounts were coming through as negative. Pretty weird. Interestingly the column headers also end with minus sign characters. I then opened up the PDF in a debugging tool called PDFSnake to see how the text is encoded. Let’s look at how the values “$110.00-” and “$1,527.57” are encoded.