Monday, January 29, 2007

What do you do when clients don't pay?

I have to say I am in a very lucky situation. I can choose which clients I work with and which I decide are not worth the bother, mostly.
Recently I got involved with a project that involves an end client, I work with and trust, and a vendor of that client.
I worked through the vendor to deliver a project for the client. I have never worked with this vendor before and would probably not have chosen them as a client. I wanted to deliver value for the end client, so I took the project.
I then got in a the sticky situation that the vendor is not paying on time, actually so far it would be correct to say the vendor has not paid me at all.

What should I do?

Not deliver the product to the end client? Is it their fault for hiring a vendor that cannot manage the project and therefore the end client pays the price?

I want to deliver value for the end client and they are a client I enjoy working with directly.
If I don't deliver the project it doesn't help anyone.
If I do deliver the project with out payment that leaves me in a nasty place.

What would you do?

13 comments:

Elmar said...

I can´t tell you what I would do in this particular project but I can share my technical solution to situations like this.

For a large-scale project we had to deliver ASP.NET software to the client. This means that we actually had to ship milestones on CD and not only install the software on our servers.

Shipping ASP.NET/.NET code is not easy because it can be decompiled without much knowledge. So during development I used a commercial win32 (c++) license component and some obfuscated C# classes. That classes made calls to this component before executing their real task. The component again gets its working information from a license file that was issued with the installation.

With that file the developer could control just about everything in this app. How long it will run, on which machine etc.. I even extened it to make it work with the ASP.NET membership provider, so we could even control how many concurrent users are allowed etc..

With that setup the project could be "safely" delivered and run as long as we wanted it to run. With the final release (after payment) these classes are replaced by classes that don´t use the component.

It was easy to communicate this to the client because we needed to do a lot of upfront work (+8 months, with a team of 5 people) and wanted some basic protection of our work.

Of course this will not work for every project but it did work quite well for ours.

Jeffrey Palermo said...

"Is it their fault for hiring a vendor that cannot manage the project and therefore the end client pays the price?"

The answer is "yes". It is their fault; however, since you desire to keep a good working relationship with this client, I would disclose this issue to them as soon as possible. Ultimately, it is their goal to receive the software, and that requires them to manage their vendor. Either way, I think communication has to happen.

Gabriel Gonzalez said...

I would disclose the problem to the end client, and maybe deliver the application and call a lawyer :D

F2theD said...

How about you deliver a "demo version" of the product, so your client sees how awesome it is. Get him hooked. If that doesn't work, consider it a learning experience and keep the information you gained for future projects. Hope that helps...

Fabian

Jason said...

From experience the only way to handle this is to tell the vendor that since they have not paid you according to your agreement that you are unable to continue working on the project until receiving payment. I'm not sure what was agreed to regarding payment (i.e. weekly invoices, milestone based payments etc) but let them know that you need to be paid for all work to date before you will continue.

Remind them that you work for yourself so you can't afford to absorb the effect of slow paying clients and there is no hard feelings. Also tell them that since you already have a good relationship with the client then you will have to let them know why you did this in order to maintain this relationship.

Being the nice guy simply doesn't work but being too tough is also not a good idea.

Dr. Neil said...

Thanks for all the ideas. I ended up doing something I really dont like doing. I told both parties I was going to hold off delivery of the final stage until we had been paid.
So guess what? This morning money had been transfered into the account for the first 2 milestones ( we are currently delivering milestone 4 ).

So why does it have to come to this?

With this episode I have certainly reminded myself why I only do business with people I like and consider to be my friends.

Jason said...

Nice work. I don't really like having to do that either but as I mentioned in my previous comment it is the only thing that works in that situation.

Wilecoyote said...

The problem with delivering to clients who do not pay is that it is habit forming, for them and you. I feel bad at withholding code particularly when it hits a strategic goal and everyone benefits from the work. The buzz I get from that is as important if not more so than the money. Anything that tempers that feeling for me makes me rethink my involvement. Not being paid is bad because it reduces incentives and stifles workflow (creativity) - because your mind is deflected to that issue.

The hiring of someone who can manage your accounts and other problems (without upsetting your clients to the point of losing them) is therefore as important as hiring your development team. With that person in place, knowing how you feel, life gets so much simpler.

The bad bits of the relationship can be deflected onto them and you never need to know.

That person must be involved in the delivery process, without their tick the project stalls. When you want to feel good, do so, and accept that without capital there is chaos. Half the world tried communism, I gather it didnt work.

Dr. Neil said...

Hi Wilecoyote,
Hiring someone to deal with the problem merely hides the problem and makes it someone else's problem.
I dont see this as a good solution. My solution is to fire the clients that don't behave in a decent way.
In this industry there is plenty of work to be done and I dont need to be involved with an organization that I don't consider to be my friends. Life is too short to waste that kind of energy.
If we all became more picky about the clients we work with I think we would pretty quickly remove the badly behaved ones from the pile, this would do wonders to increase the value of the industry.

Wilecoyote said...

"knowing how you feel" - sorry mate I did qualify that... If your policy is to fire the clients who dont pay, that is fine, just so as the person you hire knows that.

Making the problem someone elses - I dont see as a bad thing. It means that your mind is not taken off what you want to be thinking of.

Also when that decision is made to fire the client, you will be able to keep associations with people from that organisation which you want to preserve, as you wont be the messenger (who always manages to get shot). Sometimes that will work out for you, as I have seen some solid friendships fall by the wayside because of bad business.

You posted an article on what is your time really worth. Bright people are wasted thinking about "Am I getting paid."

I would rather think about a cure for cancer, or a better algorythm for moving my 1's and 0's around
(see I was listening) or heaven forbid, sex.. (well Im male)!!!

I also agree with "removing badly behaved ones" from the pile. If no one would work for them, they would struggle to survive. Unfortunately these sorts of people continue to cast a net until they trap a young good programmer who is starting out or one who is desperate to pick up some work.

While we may network and be aware of such organizations, naming them publicly is very dangerous. They will therefore be there even if they are highlighted in "THE NETWORK".

It underpins the need to network and research "New" clients as thoroughly as possible.

Another thought is to build penalty for non payment clauses into your contract. The penalty needs to be substantial, say 20 Percent, otherwise they will take the 12 percent they are getting on their capital and use you as a bank. (It therefore helps to know what their net results are to set this figure) Remember you are a Captial cost, not an Operating one.

If it also costs them more money they will pay on time.

icelava said...

I faced a similar situation almost two years back. The chain of relationships were more complicated though, I was sub-contracted by a software developer who is himself a sub-contractor to the hardware vendor trying to implement RFID security solution for the end-customer.

The main con owed him (the sub con) a great deal, and their excuse is the end customer did not pay them either. This cascading effect also reached me of course. Due to other complications (he got hospitalised) and dragging, I eventually handed over the code base - which I had stopped working on - for a reduced fee.

I believe people who are enthusiastic about delivering technology to provide wonderful solutions to other people's lives have motivation and desires beyond that of money, but at the same time I had to be reminded by family and friends that I am not running a charity organisation, and therefore "value" that I provide for customers (end or not) has to be reciprocated. I need to eat and pay my bills at the end of the day.

All in all, I eventually joined up an SI company so that I don't have to personally deal with these financial/business matters, and devote my time more on the technical/solutioning side which is what I'm interested in.

Scott Mitchell also has faced these encounters and has documented
http://scottonwriting.com/sowblog/posts/4014.aspx
http://scottonwriting.com/sowblog/posts/4055.aspx

Steve sculpts critters said...
This comment has been removed by a blog administrator.
web hosting company said...

Well that’s very Nice work! I would like to appreciate the great work done by the web master and would like to tell everyone that they should post their interesting comments and should make this blog interesting.