RSSAmplifier

Blog

Bank Statement Converter Blog

Recent content on Bank Statement Converter Blog

bankstatementconverter.comRSS feed ↗33 posts

Latest posts

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…

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…

Psst! Want to see a cool bug?

Yesterday I was going through error reports and I saw this email. 
 
 At first I was kind of annoyed, often users like to merge multiple PDFs into one large PDF to abuse my free plan and convert more than one PDF a day for free. Then I looked at the PDF and thought “Ah actually this is supposed to convert correctly even if the PDF has been merged into one mega PDF”.

When You Don't Know How Your App Works

On Monday morning I was going through emails and see one from a user telling me the forgot password form isn’t working. That’s weird, it’s the kind of thing that doesn’t really break. I try resetting their password for them using the form, the form errors out. That’s weird. It turns out this user’s email address was capitalised, and the query code that fetches a…

PDF Tales - Extracting Text You Can't See

A few months ago I got an email from a customer in Dubai asking me to help extract transactions from a PDF bank statement. This is pretty normal. I get about ten of these emails a day. I had a look at the PDF and thought: 
 “Damn, banks are even stupider than I thought.” 
 The statement was basically an excel file, exported out into a PDF. It’s so annoying when people do…

Bank Statement Converter Book

I have written a book about how I coded Bank Statement Converter. You can read it for free here .

Week 101 - February Sales Numbers


Plumpbird: February is the shortest month of the year. Did you make any damn money? 
 Net Volume 
 
 January 2023 - $59390 HKD
February 2023 - $57878 HKD
 A bit of a drop, but February has three fewer days than January, so you could chalk it up as a win. 
 Monthly Recurring Revenue 
 
 January 2023 - $50408 HKD
February 2023 - $57820 HKD
 A very nice…

Week 97 - Revenue Numbers

Plumbird: It’s been a while since you’ve shared sales numbers. How’s the Bank Statement Converter doing? 
 
 It’s been pretty good. 
 Net Volume 
 
 I like this number, because it’s the number of dollars that go into my bank account. 
 November - $53,531 HKD
December - $55,525 HKD
January - $59,390 HKD
 It’s a nice steady…

Week 84 - October Sales Review

Normally this blog goes out on a Monday, but since the month ended on a Monday I figured it would be better to wait a day. Let’s go through October’s stats. 
 
 In September we brought in $46,736 HKD and this month we brought in $46,846 HKD. That’s not very much growth! 
 
 We ended October with MRR at $40,455. We ended September with MRR of $37,521. 
 
…

Week 83 - $5000 Monthly Recurring Revenue


 On October 21st monthly recurring revenue (MRR) exceeded the $5000 USD mark. We hit $4000 MRR on September 12th, so it took only 40 days to earn the last $1000 MRR. If MRR continues to grow at this speed, we should hit $6000 MRR on December 1st 2022. 
 
Plumpbirds: We’re getting tired, we don’t want any more MRR. 
 Last Week’s Goals 
 ✅ 1. Contact 100 users…

Week 82 - Referral Feature

Last Week’s Goals 
 
Plumpbird: Set some harder goals this week you lazy jerk! 
 ✅ 1. Contact 100 users 
 I contacted more than 100 users last week and scheduled the emails to arrive at 10 AM in whatever timezone the user was in. Sadly only four of the users replied. Some users I emailed had signed up several months ago. It might be better to email users who recently signed…

Week 81 - Sitting on an Ants Nest

Bad News 
 Last week I walked from Tung Chung to Mui Wo, which is section #1 and #2 of the Lantau Trail . At the end of the trail I sat down in what turned out to be an ants nest. The ants started biting me it was pretty painful, but I got up and brushed them off. This taught me an important start-up lesson. 
 
 Do not sit on a nest of ants, but if you do, just brush them off.

Week 80 - September Sales Review

September Sales 
 Another month has gone by, let’s take a look at the monthly revenue graph. 
 
 Oh no, revenue went down! In August we brought in $62,596 HKD and in September we brought in $46,736 HKD. Not great news, but it’s actually okay. This is because 60% of August’s revenue came from one off work for a single customer. 
 
 The Monthly Recurring Revenue…

Week 79 - Translating the App

Here’s what I got up to last week. 
 Becoming a Xero App Partner 
 I had a look at building a Xero integration for Bank Statement Converter. I created an account, poked around and looked at the API documentation. It seemed like a feasible idea. Then I looked at the approval process. It seems like I would have to build a custom app for two customers, and then would be eligible to…

Plumping MRR from $1000 to $4000 USD


 Monthly Recurring Revenue (MRR) is the most important metric when running a SaaS company. You want your MRR to be as plump as possible. On February 13th MRR was at $1000. Last week MRR exceeded $4000. 
 
 
 What happened across the past seven months? Why did MRR increase so much in the last week? 
 Letting Time Pass 
 A big part of it was just letting time pass and…

When Customers Can't Succeed

I don’t know when this started, but at some point in my life some jerk has gone and renamed “Customer Support” to “Customer Success”. It’s a pretty crappy name because it doesn’t really mean anything when you read it. You have to be in the know. You have to know that “Customer Success” means “Customer Support”, which in turn means…

Wave Based Security

I usually work on this app from a shared office that I’ve been renting since January 2021. The rule is, everyone is supposed to check in at the reception desk in the lobby before going up to the higher floors. 
 After a while I decided to skip checking in at reception. This, as you can imagine, was really great. Walk into a building, walk into the lift, go up the lift, sit down at your…

The Hours of Work Behind a Simple Feature

Since I started this website in April 2021, I knew users would upload PDF files that were password protected. I figured it would be too annoying to do the work to support these PDFs so I put it off. Recently a user asked me to support password protected PDFs, so I did it. 
 
			 
		 

 It’s a simple feature, and it works pretty well. I spent all of…

PDF Bank Statement JSON API

Postman Collection 


 Download 

 1. Get the Authorization Token 
 
 Go to https://bankstatementconverter.com/ in Google Chrome 
 Login 
 Hit F12 to open up the developer tools 
 Click on the “Application” tab 
 On the left panel click on “Storage” -> “Local Storage” -> “ https://bankstatementconverter.com/"…

HSBC Mole Whacking Development

Last week a customer asked me to help him process a few hundred of his documents. He had PDFs for several bank accounts going back to 2018. I had a look a documents arranged a price and then got to work processing his documents. My idea was to run it through Bank Statement Converter’s (BSC) PDF to CSV processor. However a few errors occurred. BSC has a generic algorithm for detecting…

What Year Is It?


 Lately I’ve been getting a lot of complaints that the year is wrong in Bank Statement Converter’s resulting CSV. At first when I got these complaints I thought “What the hell you talking about? All we do is find the transaction data and then write it out to a CSV file. How can the year be wrong?”. Let’s walk through an what’s going on with one of my HSBC…

Automatically Get your Bank Transactions

The other day I had a bit of revelation about what problem Bank Statement Converter solves. The obvious answer seems to be “it solves the problem of extracting transaction data from PDF bank statements”. That’s true, but you could also say it solves a more general problem. “It gives user access to their bank transaction data”. However, it’s a bit of a pain to…

Getting to $1000 MRR in ten months

A few weeks ago the BankStatementConverter (BSC) exceed $1000 in Monthly Recurring Revneue (MRR). I figured you lot would be interested to hear the story 
 $0 MRR, March to July 2021 
 I got the idea to build BSC to help users process PDFs. I spent about a week playing around in Kotlin to see if my idea was feasible, it was. Soon after I meet up with a friend for beers and tell him my…

Detecting Headers of the Transaction Table

This is the second part in a series of blog posts where I explain how Bank Statement Converter works. In the previous article I talked about how I extract each character and its bounding box from a PDF. In this article I’ll talk about how I use the characters and bounding boxes to deteect the headers of the transaction table. 
 val pageRegion = Rectangle( 0f , 0f , page.cropBox.width,…

Extracting Text and Bounding Boxes from a PDF

This is part one of a series of blog posts where I explain how BankStatementConverter works. In this post I’m going to explain the code that figures out the bounding boxes and other attributes of characters on a page. Lots of this code was lifted from DrawPrintTextLocations and PDFTextStripper . 
 First thing we do is load the PDF file using PDFBox and then we process the document page…

Analysing My HSBC Bank Statements

Originally I wanted to analyse my HSBC bank statements from 2014. 2014 was a great year for me, I started off the year by launching a new app, joined a game development company and rented an apartment with a friend. Unfortunately my 2014 bank statements from HSBC’s internet banking are no longer available, it seems they only go back a few years. So let’s go through my 2015 bank…

Five ways I handled my OutOfMemoryErrors

I use Grafana to create graphs that show me various business and performance metrics for Bank Statement Converter. One of the graphs I created tracks the number of Internal Server Errors the server returns to its clients. I do this by writing a record into the database whenever a 500 is sent to the client. This graph has been really helpful for ironing out bugs I didn’t anticipate. Last…

National Australia Bank - Bank Statement Review


 The lowercase friendly NAB logo reminds me of Jeb Bush’s 2016 ‘Jeb!’ logo 
 National Australia Bank 
 
 Formed in 1982 after the merging of National Bank of Australalasia and the Commercial Banking Company of Sydney. 
 The 21st largest bank by market capitalisation . 
 They have an Irish subsidary called Danske Banke , which was formerly known as…

HSBC HK Credit Card Statement Review


 Are the people in this building good at making PDFs? 
 I’ve seen quite a few statements when helping customers get through issues converting bank statements. A lot of bank statements follow a logical structured format that is easy for a human to read and easy for an algorithm to extract data from. You’d think it’s something that would normalise into a standard format,…

Why I Created Bank Statement Converter

I own a limited liability company in Hong Kong called Dragon King Creation Limited . The company has no employees, I’m the sole director and I own 100% of the shares of the company. I created the company in 2015 to manage the revenues from my Android and iPhone application sales. The company doesn’t make a lot of money, but it’s still officially a company. Every year limited…

Extract Tables From PDF

Getting data from a PDF file into an Excel file is a major pain in the ass. A lot of people resort to manually copying it. If you want to automate the conversion follow the steps below 
 
 Go to bankstatementconverter.com 
 Click the Convert a PDF button
 
 Select the PDF you want to convert 
 Wait for it to finish uploading 
 Press the inspect button
 
 You…

Twitter OAuth 1.0a with Ktor

I’ve been working on a new project that requires lots of different social sign in providers. This meant I needed to learn what OAuth is and how to create the APIs to communicate with OAuth providers like Facebook, Google, Github and… Twitter. The first three providers were very easy to work with, Twitter was not. I spent about five hours reading Twitter’s documentation, going…

Convert Scanned Bank Statements to Excel

A few weeks ago I got an email from a user in Australia, it read “I uploaded a bank statement and nothing happens How do I see the converted file?”. I took a look at my Grafana dashboards and figured out this user had uploaded an image based PDF, probably a scanned bank statement. I’ve replied to quite a few users telling us that scanned documents don’t work. I fished out a reply from my sent…