The past few weeks I’ve been struggling with automating my accounting, invoicing and banking processes to the point I don’t really have to think about it anymore. Currently, a lot of my accounting-related processes are still way too manual for my liking. Being both a virtuous, lazy programmer and an entrepreneur I’d like to automate every process that can be automated at reasonable cost, especially if that process doesn’t generate any revenue.
Now, as far as invoicing and small business accounting is concerned there are great services such as Freshbooks that take care of that vital part of business. However, those services tend to be quite US-centric and using their accounting data for your annual accounts and tax statement in Germany is next to impossible, not to speak of most German accountants not being familiar with that kind of software.
There’s no shortage of similar accounting applications for the German market, mind you. However, they often fall short in one way or another when it comes to completely (or mostly) automating invoicing and accounting for small businesses. Some don’t comply with certain tax standards, some don’t allow you to have VAT reports sent to tax authorities automatically, which then means you have to use additional tools for accomplishing those tasks not covered by your main accounting tool. Therein lies another problem: Most of these tools don’t communicate well together. There often is no accessible API, let alone a dependable standard for exchanging accounting data.
Soon enough you find yourself juggling a handful of tools, manually exchanging data and essentially servicing the software while all you wanted was a solution that allows to do away with the hassle that is accounting so you can focus on your actual business. After all, most entrepreneurs are not in the business of accounting so accounting should be an afterthought: Something that certainly needs to be done in order to run a successful, financially viable business but also something that’s technical, repetitive and routine so it shouldn’t require your personal focus and hence won’t distract you from your actual business.
It’s bewildering that in 2016 small business owners still have to spend so much time and thought on a function that should have been automated a long time ago.
A particularly long-standing pet peeve of mine is incoming invoices and accounts payable: Why do I still have to deal with incoming invoices manually (either personally or via an accountant)? Why do many companies even seem to insist on paper invoices that add the additional nuisances of having to scan and file those documents?
Sure, electronic invoicing does exist but no one seems to use it. At least I have yet to come across an electronic invoice that can be processed automatically by whatever accounting software I use. This is not just a matter of efficient processes and automation:
If an invoice can be processed automatically, payments could be scheduled automatically according to payment terms as well, which would be a boon to accounts receivable. Some businesses admittedly like to treat payment terms and accounts payable rather – let’s say ‘flexibly’ and therefore probably would be averse towards such an automated, timely process but that’s an entirely different matter, so let’s not go there …
What I’m struggling with particularly at the moment is the ridiculous problem of getting the bank account statements for my business account at German bank Commerzbank (which incidentally received casino money from the German taxpayer in 2008 because they had bitten off more than they could chew when buying a competing bank – banking is a truly marvellous business … I suppose that money didn’t go into their technical infrastructure …) into my accounting software:
While Commerzbank’s online banking service allows you to export your account statements it only provides a custom CSV format for doing so. The accounting software I use (Collmex, which is pretty good in most respects) and pretty much any other accounting software I’ve researched so far, however expects account statements in MT940 format. You might say “So what? You’re a programmer. Write some script that converts your CSV account statements into MT940.” and rightfully so.
The problem is: MT940 is a file format conceived by the devil. It’s the WTF of file formats, which is why I suggest using .wtf as new a file extension for MT940 files. Ok, maybe I’m being slightly inaccurate here: PSD perhaps is the true WTF of file formats but MT940 at least is its pesky little brother.
It’s needlessly convoluted and complex for what it does to the extent that although it’s plain text it looks more like binary or encrypted text. There’s no standard way of creating MT940 files. Each bank implements the format slightly differently. There are no openly available software libraries for generating MT940 files, supposedly because the software providers involved in the whole mess that is SEPA likely earn quite a fair amount of money by providing ‘integration services’ and therefore have a reasonable incentive for keeping things a little closer to the vest.
Then there is a service called bank2swift that promises to solve this exact problem of converting arbitrary CSV bank statement files to MT940, which gives rise to the question why such a service needs to exist in the first place. The problem with that one is that I’d much rather not share my business’s financials with additional 3rd parties and bank2swift is an SaaS-only offering. Besides, as mentioned earlier my goal is to simplify my processes not to service and manually orchestrate additional tools that neither have an API nor can be automated in other ways.
The obvious solution for getting those account statements into my accounting software would be using HBCI and have the accounting software fetch those statements automatically. However, Collmex and again every other accounting software I’ve researched so far only supports HBCI with PIN / TAN while Commerzbank only provides HBCI using a signature file (which arguably is more secure but again that’s a different matter).
So, I’m at a loss right now. Other than manually entering account statements in my accounting software or switching to a bank (which for a business means a whole lot of additional hassle) that plays nicely with that software I’ve run out of options. A few hours ago, I even was at the point of saying: “Screw it. I’m going to write that software myself.”. However, like I said automating accounting should be a solved problem by now. Accounting literally was one of the first applications of computing. There are hundreds of thousands of accounting software packages out there. Why is it that right now I feel the urgent need to reinvent that wheel because pretty much every service provider in this industry seems to have missed the boat?
Reinventing this particular wheel is no small feat, either: You start with a simple accounting software (because accounting and double-entry bookkeeping specifically essentially is a very simple and elegant concept) and soon enough you realize you have to accommodate an insurmountable multitude of use cases and edge cases you wouldn’t have thought possible in the first place. Ultimately, this leads to having to start your own bank because an accounting software without access to a business’s actual financial transactions isn’t really all that useful. Existing banks however won’t allow you easy access to their APIs – if those exist at all with most banks technologically still being stuck in the mainframe era of computing. So, you end up in an inescapable vicious circle, which by and large likely accounts for the whole situation I described.
There are a hopeful attempts like FinTech startups Number26 and Holvi, which try to rethink the way banking and accounting is done in a rather wholistic fashion. The former, however is still limited to private accounts while the latter is more targeted at online shops than being a general-purpose SMB solution at the moment. Moreover, Holvi recently was acquired by industry incumbent BBVA so I suppose we’ll have to wait how that’ll turn out in the end.
Until then, I suppose it’s back to basics for me:
If you have any thoughts, ideas or suggestions regarding this subject please don’t hesitate to contact me or leave a comment below: