Just a few random thoughts from ~10+ years of doing this. These are not ordered, as I've been out of this for the past few years.
- Contracts, contracts, contracts
- Immediately stop all work when any customer doesn't pay an amount owed. There's a natural inclination to keep going, but this is a firm of pathetic cost fallacy.
- Work with an escrow provider and eat the fees. You'll generally have a 10% non-collectable rate, until you work with an escrow provider. This can be lowered to 1-3%, meaning you stay far ahead. More importantly you reduce the time spent in administration, and running after customers.
- Downpayments / upfronts are key. Any customer that is unwilling to engage in this practice, is a customer likely to not pay.
- Maintain ownership of your code, if you can. True, consulting code has little value - usually. But sometimes, you can legally, reuse the same blocks, or segments across multiple projects. Your rate of return increases dramatically here.
- Your name is your bond. When people learn they can trust you, even in just a handshake (remember: contracts!) they happily recommend you to your friends
- Digitize it all. Do everything in your power, pay for every web service that makes sense, to reduce your overhead. I was incredibly happy to pay for receipt scanning (shoeboxes), book keeping / invoicing, and accounting (xero). Most people view this as an expensively monthly cost - which it is at the beginning. It will also, eventually cost less than an hour of your consulting time. Scale.
- Never price at the top of the market. It's better to be 100% busy at 80% of the fee structure, than it is to be 50% busy, at 125% of the base rate.