The First Few Years at Fortnox

This is the story of how it all started at Fortnox. I was the fourth person joining the company and the first developer. This story will give you some background how the company started as well as some insight in the tech used. I work as a consultant and at almost every assignment people know about Fortnox and when I tell them that I was the one writing most of the initial applications I usually get a ton of questions. So I figured there must be some kind of public interest and demand for this information. I will write this story as I go along but will try to keep the events in chronological order.

But first, for those of you that don’t know anything about Fortnox let me do a quick “pitch”. Today Fortnox is the leading supplier in Sweden of web based application for bookkeeping, invoicing, salary administration with more than 100 000 customers.

Some 13 years ago Jan Älmeby, who was the founder and CEO at SPCS decided to start a new company. SPCS was bought by Visma and Jan had to leave the position as CEO and was superseded by a new CEO appointed by Visma. The Sales Manager at SPCS, Jens Collskog, was offered a position in the new company, called Fortnox. The idea was simple, do the same thing all over again, but this time make the software available online. Low price, high volumes, a lean organisation and everything that comes with providing SaaS.

At the very beginning Fortnox had no intentions of developing their own software. At SPCS they had successfully used a small company in Borlänge to develop the SPCS Administration suite of software. This company was the first to sign a deal with Fortnox as a supplier of their newly developed bookkeeping software. Things were starting at Fortnox. However, Fortnox wanted more than just bookkeeping software. The vision was to provide a whole suite of software for small and medium sized companies.

At this time I was working at my own company, Logisign Communication. It was basically a digital advertising agency. We did everything we could get our hands on and most notably we developed and sold our own content management system, dubbed WebPublish. We had our office in Videum Science Park in Växjö. This was the place where almost all start-ups had their offices. This was also the place where Fortnox had their office. So we met for the first time where all swedes go to meet new people, by the coffee machine.

Soon enough Fortnox approached us [Logisign] and asked if we were willing to develop a CRM and document storage software for them. The deal was simple, we would get a kick-back for all licenses sold. They had little requirements, we had some unoccupied time and the deal could potentially bring us lots of money if Fortnox vision of tens of thousands customers would come true.

During the following month I developed what would be called Fortnox Kundstöd and Arkivplats (CRM and document storage). The deal was on! The following months I was doing further development of the Fortnox applications, some simple web pages in WebPublish and I even did a ShockWave-application for another of our customers. The work for Fortnox took more and more of my time and at Logisign we were struggling with profitability. After a couple of months I was approached by Jan and Jens at Fortnox and they offered me employment. Now some very interesting deals where made. I sold my share of Logisign to my business partner for 1 SEK in exchange for the exclusive ownership of Fortnox Kundstöd and Arkivplats. Once this deal was settled I sold the ownership of the software to Fortnox for an “unspecified” amount. This would allow me to settle some of the debts I had acquired when starting Logisign. So, I was done with Logisign and now my years at Fortnox started.

When I joined there was Jan, Jens and Kristina. Jan was the CEO and his main focus was to raise capital for Fortnox to continue it’s business. Jens and Kristina worked with sales and marketing.

One of the first things I did was to visit this company in Borlänge that provided Fortnox with the bookkeeping software. I spent a week there, digging in the the technical solution as well as how to use and configure the software. When I got back I could not help thinking that this software was so wrong for what Fortnox wanted to achieve. There where hours of configuration to get one single customer up and running. The performance was subpar and the software could be configured by the end user to such a degree that it was almost impossible to support them without knowing everything about their configuration and how they work. Frustration was amplified when the software showed sign of instability under load. Jan and Jens could sometimes exclaim how much they missed the simplicity of the first SPCS products; SPCS Blå Bokföring.

During the first summer in Fortnox history there wasn’t that many customers so Jens and Kristina split the support commitment between them. The CRM and document storage application was running like a charm but the frustration with the bookkeeping software was substantial. Since I have done bookkeeping for my mothers company since I was a teenager I had basic knowledge and I was also familiar with SPCS Blå Bokföring. So with the summer coming up, very little vacation planned, I suggested that I could write a web based software, with the same functionality as the old SPCS software and it would be done by August when everyone was back from their vacation.

The CRM and Document Storage application were simple and effective and they were sort of the mold for the bookkeeping software. Using the same data persistence and the same design I had no trouble writing the new bookkeeping software. Just adding a few tables, some views and well; the logic for bookkeeping of course. We also got this great synergy where the customer records was shared between CRM and bookkeeping and documents was shared between CRM, bookkeeping and document storage. The applications was heavily centered around the database; one database for each customer but shared among all the applications that the customer had bought. During the second half of 2004 Fortnox started selling the new bookkeeping software. However when it comes to bookkeeping there are some essential concepts, such as double-entry bookkeeping and the database server I had chosen was MySQL. We’re talking MySQL 3.23 with the MyISAM table engine. Support for transactions were non-existent. I believe the only way to get transactional support was to use the experimental Berkley table engine, which wasn’t officially supported by MySQL. This had me worried, that I’d made the wrong choice of database server.

Then suddenly one day I got a call from a sales representative at MySQL. He went on something about licenses for SaaS, basically he wanted to get paid. Either a step-up plan for MySQL 4 where Fortnox would pay an amount based on the number of customers we had or we could use MySQL 3.23 for a one time payment. There was a lot of licensing talk and I didn’t really get all of it. There was supposed to be some clause in the license agreement with MySQL that had to do with SaaS and we were supposed to pay massive amounts of money to them. For the past months I had come to realise that MySQL wasn’t a very good database server. The lack of transactional support was a major issue but also running OPTIMIZE TABLE every now and then seemed like something made up for a bad implementation. So now I was mad at MySQL for having a mediocre database server and I was mad at the MySQL company and that sales representative for trying to exploit the situation with some licensing bullshit.

Since development is not just a day time job for me I had come across this other database server that seemed promising. It had transactional support, table partitioning, support for subqueries, stored procedures, cursors and views. Basically it makes MySQL look like simple file storage.

So with this MySQL sales representative hanging over my shoulder, wanting Fortnox to make a licensing decision for a bad product I proclaimed: “We’re migrating to PostgreSQL!”. Jan was always very supportive, he had shown great faith in me when deciding to develop the new bookkeeping application basically giving me carte blanche. If you gained his trust he usually had the view of — just make it work. So when I proclaimed the migration to PostgreSQL there wasn’t much of a discussion or fuzz. Two weeks later when that MySQL sales representative called me up I explained to him that we had migrated all customers to PostgreSQL.

Things where moving fast. I continued developing new functions and modules such as invoicing, supplier invoices, quotes and orders. Also I developed an internal application for administrating Fortnox customers. Adding new customers, setting expiration of their license, sending them invoices. There was no database-queries running weekly/monthly to generate internal reports, everything was available through the administration application.

Fortnox hired more people; Johan in sales, Carolina in support and Håkan i development. And while the company and number of customers grew we always kept it simple, both in a technical sense but also in the company as a whole.

We almost never did any branching of the code. We deployed whenever we had new features done. We didn’t use any ORM or even object-oriented programming. There was no JavaScript framework or PHP framework. We kept it vanilla; simple. There was however a very distinct way of working, very clear metods to invoke and no one was afraid to ask any questions. For a small, tight team this was working excellent and the amount of speed we got from this simple setup was amazing. There was no time at all spent in getting the development environment working. Every single minute of development added directly to the product’s features and quality.

The applications I wrote had a lifetime of about 10 years. But I would imagine that there has been some frustration in the later years of Fortnox as the company and development team grew. This setup was never intended to just be expanded indefinitely. Today there are over 100 persons employed at Fortnox, during my years we peaked at ten.

Fortnox is a success story, elected Gasellföretag in 2013 and Sveriges Superföretag in 2015. Today the products serve over 100 000 customers and while they launched new versions of the applications a couple of years ago I’d like to think that I gave Fortnox a good start.

Looking back at this time in my career I realise how much this way of working has characterized me. When it comes to development my mantra has always been; keep it simple. Don’t add frameworks if you don’t really need them. Development environment should be close to zero cost of setting up. Make sure you master branch is always ready to deploy in production. Make sure your product has full administrative features making it usable not only by your customers but by your support, finance and marketing personell.

On the business side the strong entrepreneurship at Fortnox has inspired me to start my own business. Getting acquainted with the right type of people, Michael and Niklas, we started Katakumo together two years ago. Now, we don’t have the same financial muscles that Fortnox had but we’re not copying a concept, we’re making our own.

Thank you for reading.