When I look back at how I started Elevated Code, I’m amazed at all the mistakes I made and how we somehow managed to survive. While I won’t share all of my mistakes, there are a few that seem to be generally applicable.
Cash Flow is Hard
I knew this from my MBA and I’d heard the advice before, but understanding and predicting your cash flow is an incredibly hard thing to do. When I started Elevated Code, I had some ideas of what costs I would bear. I think I started the business for somewhere around $5,000. Once things were up and running and we had our first client, I started making spreadsheets to predict how rich I would become. Boy were they ever wrong.
One of my first mistakes was our invoicing period. Initially, we were sending our client invoices once a month. It seemed like a good idea. Invoices were a pain to send, and I didn’t want to send them very often. I also gave our client 30 days to pay. After all, that’s what my credit card gives me, right?
So let me do the math that I didn’t do back then. If I start work for a client on 4/1, I’ll send my first invoice on 5/1. With 30 days to pay, I should expect to get paid by 5/31, right? Well, maybe. In our case, that first check came in around 6/15. But that was just the beginning.
It turns out banks don’t like to make the funds from large checks available quickly on new accounts. Our bank held the check for 10 days and didn’t release the funds to us until about 6/25. So to do the math, we did almost 3 months of work for a client before we had access to the first dollar.
It’s no wonder that (cash flow problems)[http://www.finpacific.com/1/post/2012/05/cash-management-why-some-profitable-businesses-fail.html] are one of the main reasons that profitable businesses fail. Now in our case, it turned out to be not that big a deal. After all, both Jason and I had day jobs, so we could afford to not get paid. That would be a whole lot harder if we didn’t have day jobs to fall back on.
Getting Paid is Hard
Now you may be thinking that my problem was partially caused by our client paying late. And you’re right. What I can tell you from 7 years of experience is that almost all clients pay late. Especially the big ones. In a bigger company, they don’t care that your contract says payments are due in 15 days. If they pay at 60 days, you get paid at 60 days. Heck, it make take the first 30 days just to get set up in the invoicing system.
With smaller clients, you may not have the setup problems, but you’re often relying on a small group of people who are overworked as it is. They often see paying bills as a nuisance and will delay when possible.
My advice here is to be very clear about your expectations up front. We tell our clients that we know they would be upset if we just didn’t deliver any code for a few weeks or if we missed a deadline without telling them, and ask them to be respectful when paying us. We try to make it as simple to pay us as possible, including allowing payment via ACH with one click (I’ll talk a lot more about this later.)
Most importantly, when an invoice is due, I make sure to call and let our clients know. I used to hate calling about past due invoices. Now I realize that it’s just part of my job. I don’t like doing it, but I really hate the resentment and frustration that builds up when our invoices are past due.
Avoid Risk Where Possible
Besides the obvious cash flow problems with invoicing once a month and allowing Net 30 payments, that setup also involves a lot of risk. When doing Agile development, we value rapid feedback cycles. I’ve learned to do the same with payments. We now invoice weekly with Net 15 payments, or semi monthly with Net 7 payments. In either case, I’ll know within three weeks if an invoice will be paid on time. This is especially important with new clients.
If you think about it, there’s a lot of risk working with a new client. You take on the risk that they will pay you what you’re owed, and they take on the risk that you can actually do the job you say you can do. We try to mitigate the risk for our clients by showing them working code quickly. Another way we help mitigate their risk is by giving both references of people that liked us, as well as the people we didn’t work well with.
By having short payment deadlines, we reduce our risk that a client won’t be able to pay for the work we’ve done. Of course, bigger companies are an exception. It’s one of the reasons we prefer not to work with very large companies.
So in summary, one of the biggest mistakes you can make when getting started is not understanding the huge lag in cash flows. It will be quite a long time between when you first start working for a client, and when you can spend that money. Hopefully I’ve given you some ideas on how you can reduce your risk, and also your lag time.
This has all assumed that you’re only dealing with yourself and other owners. Things get much more complicated if you have employees, as I’ll talk about in the future.