Scenario

When I graduated from a Canadian university in the mid-1980s, there was an economic downturn in full swing. It hit the IT industry hard, and jobs were very difficult to find. Some of my fellow graduates wound up driving trucks and taxis, or “did retail” in book stores and sporting goods stores, or flipped burgers. Some still do.

Some of us were determined to work in IT no matter what. Realising that personal computers were likely to become the Next Big Thing, a handful of my colleagues and I started a computer consultancy to develop bespoke PC software for small to medium-sized businesses.

When we started our firm, handling our own billing was the last thing on our minds. We wanted to make money, not worry about how to collect it! I quickly became very busy writing software for other people, so I simply didn’t have time to implement a good billing system for myself and my partners. I remember bodging something together very hastily, over a rather desperate evening or two, because I had to get invoices out the door before we went broke. Because of lack of time, that hasty bodge ended up being used for years, before we re-wrote it several times as we outgrew it.

I always regretted not having created a good billing system before we got started. Because I’m such a nice guy, I’m going to make sure the same thing doesn’t happen to you, when you start your own consultancy.

Yes, I know some of you will start computer consultancies. You might only do it for a short time, like on your Placement year or between “real” jobs. Or, you might wind up like me and run a consulting firm for nearly fifteen years. Either way, one thing you’ll definitely need to do is send bills – aka invoices – to your clients.

So, I’m going to make you write a billing system for yourself! Fortunately, a billing system for a small consultancy is pretty straightforward.

First, you need a way to keep track of your clients. For each client, you’ll need to know their company name, your contact(s) in the company, a billing address, the usual phone numbers, email address (maybe more than one), fax number (yes, some people still insist on using those), and an area for general notes. You may think of other attributes you’d like to create. Of course, you’ll need a way to uniquely identify each client.

Customers will typically ask you to provide estimates, proposals or bids for jobs before you can start work. You’ll need a way to track them. An estimate/proposal/bid usually has a unique number, a date of issue, a description, and a price and/or hourly rate; along with perhaps some conditions like “this proposal is valid for 30 days from date of issue”. It will typically be printed on your company letterhead so you don’t need to print your consultancy’s name and address, but you can if you want to (and thereby save the cost of getting letterhead printed when you start your company.)

When a customer approves an estimate/proposal/bid, it should turn into – or become the basis for – a work order. A work order has the same information on it as an estimate, plus the date it was approved and perhaps additional specific notes about the job. Sometimes estimates won’t be approved. It’s a good idea to keep them in the system along with notes to indicate why they haven’t been approved. That will help you evaluate them later. (E.g., maybe your prices are too high?) Customers will sometimes want printed copies of work orders, and you might want printed copies yourself so you can pin them to your notice board. So, you should provide a means to print them.

Jobs are typically either billed by the hour or as a total amount. For the former, the estimate might read “network installation will be billed on an hourly basis, at £80 per hour”. For the latter, the estimate might read, “total charge for network installation will be £1750.00”, etc. Sometimes a job will involve a combination of both hourly and charged work.

Whether a job is billed by a total amount or hourly charge, it’s a good idea to keep an hourly log. For every hour you or an employee work, an entry should be logged of what you’re doing (or your employee is doing) and which job you’re doing it for (or your employee is doing it for.) The log should be summarised and printed on the work order and invoice.

Of course, if you’re logging the work being done you’ll need to identify who is doing it. For that, you’ll probably want to keep track of employees. Initially, the only employee might be you, but your company is going to grow, isn’t it? How else are you going to get big and rich enough to buy Microsoft and IBM? Some employee attributes you might wish to note are address, phone numbers, usual per-hour billing rate, and usual per-hour pay rate. You’re not creating a payroll system, so don’t worry about employee tax codes and all that PAYE stuff. You can buy software to handle payroll.

Once a job has been finished, and often part way through a lengthy job, you’ll want to invoice your clients. Printed invoices should at least show an invoice number, the client’s name and billing address, the terms (e.g., “payment due in full within 15 days of the invoice date”) the invoice date, details of all charges and their subtotal, the VAT on the subtotal and a grand total. Obviously, invoices are a point of contact with your clients so you’ll want them to look as professional as possible. You’ll want to be able to print a batch of invoices, probably once or twice per month. You’ll also need to print individual invoices, so you can re-send them as needed when clients need reminders to pay or because they lose them.

We’ll assume you don’t need to track payments. That’s not normally handled by billing (which is for tracking estimates, logging work, and generating invoices), but by something called “accounts receivable”. For a small firm, accounts receivable can easily be handled in a spreadsheet, cheap bookkeeping software, or even manually.

However, to facilitate bookkeeping, you should provide a Sales Report which lists the following given a range of invoice dates, sorted by Invoice number:

  • Invoice number
  • Invoice date
  • Customer ID
  • Customer Name
  • Subtotal
  • VAT charge
  • Total

Your sales report should provide grand totals of the subtotal, VAT charge, and total columns. You’ll also need an Employee Log report to tell you what to pay employees based on a summary of the entries the hourly (or whatever) log. You should list the following given a range of dates, sorted by Employee Name and Date:

  • Employee Name
  • Date
  • Work order number
  • Hourly rate
  • Hours worked
  • Total

Your employee log report should provide subtotals of the Total column for each employee, and a grand total. You should provide a Configuration form to set your company name and address (so it can appear on report headings and the like), the current VAT rate, and any other configuration settings you deem appropriate.

Obviously, as this is a product you might actually use, I expect you to make every effort to make it as easy to use – and as suited to its intended task – as possible.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.