January 9th, 2009 . by polygeek
Let me just say, for the record, that I love all my clients and have great relationships with them. Of course that’s now. Who knows about the future?
That being said let me tell you about a friend. He’s working as a subcontractor and his client told him, “Times are tough. You’ll get paid when I get paid.”
Unfortunately the project seems to be done and is delivered along with the code. So there’s probably not much that can be done except wait and hope that the money comes in, eventually.
I’m very trusting and thus far it’s worked for me. But I do have a strict policy: clients never get the source code until I get paid. Typically I send out invoices at the end of the month. When I get a check in the mail I always try and remember to zip up their source files and email it to them. I explain that they should keep the latest zips just in case something happens to me and I’m unable to complete the project. And they know that I use SVN to archive the project as I’m working so they don’t have to worry about losing any substantial amount of work.
I think this should be sufficient. Projects are never done. A client can always think of new features to add and if they have been remiss in fulfilling invoices then they’ll find themselves sitting at the bottom of the que, for a long time. Or, payment would have to be made upfront before work began.
But what about something more drastic? Can you think of a kill switch that could be added to an app that would render it useless if you didn’t update it every now and then? That would certainly get a clients’ attention. But I think that in general it would be a very bad idea to do such a thing. If a client were so untrustworthy then perhaps you shouldn’t work for them in the first place.
What would you do?

Posted in Tags: freelance
|
35 Comments »
similar posts
35 Responses to “What to do when a client doesn’t pay up”
Perhaps you would like to tell us the name of your client, Karma's a bitch
de-lurking to let you know that this was so del.icio.us worthy! great post and definitely very timely considering the economic context.
as far as a killswitch, i bet there are things you could just host on the developer end that would make the code, like referenced src="" kinda things. either way, that's a good idea.
Kill switch, bad. Good clients, good. Trust your gut. If a client gives you bad vibes about payment, or just working in general, then yeah, seek work elsewhere. The mere thought of adding a killswitch to your code should be an indicator that you need another client(s). Besides, you want to be known in the industry for making code work, not making it blow up.
[...] My good friend Dan Florio (twitter friends actually) kicked off a discussion about what to do when a client doesn’t pay. He has some great tips and is also asking for some community input. I am sure there are plenty of bad experiences out there to go around, mine included. What would be great is to hear the creative and legal ways that Flex community members handle this particularly disdainful and sensitive issue. Join the discussion at polygeel.com. [...]
You have to watch out with the killswitch idea. In many states adding a killswitch to anything you sell is illegal unless the client expressly agrees to the idea. In Michigan, if a customer pays you only a dollar, then they cann sue you for the killswitch in your app.
I always make my customers pay in chunks. At the end of every week/month (depending on the project), i will update the customer and give them an invoice for the amount of hours billed, and the current status of the project. If the project is project based (instead of hourly), then I invoice them at certain milestones. That way, the most I would be left holding the bag for is a few hours, and not the entire project. The customer will never get the full deliverables until the final payment is rendered (this could be the source code, the documentation, or installation into their production enviroment).
I had one customer bail on me one time. With them they were good on the first two payments, then when the project was done (there were 4 total milestones, so 4 payments), I got a letter from their Chapter 11 lawyer, saying they wanted to settle on how much they could pay me (they wanted to settle for $0.40 on the dollar, which I didn't accept). I ended up getting paid 90% of the project fee, but it still wasnt pretty.
I'm with Jester. At very least kill switches are bad karma, and it's not impossible you could end up in litigation for damages over the non performance of your code – even though it wasn't paid for. Typically from what I understand courts take a dim view of kill switches and the like – probably because most judges can't code and are scared about the power of the geeks :-)
Seriously though, get a downpayment, hold onto source until you're paid if you can, and generally just work with good people so this isn't an issue. I generally work with good people. One or two have been late paying on some things, but usually they need me to desperately add another feature, so I get any outstanding balance by credit card (using PayPal) and we're all good.
Also, occasionally you'll get screwed. Just part of the game. Make sure you never need a given payment too badly. If you have a client you can't walk away from if things go bad, you have a business problem you're gonna want to try to resolve.
I say the code of good Flex ethics prevents us from deliberately sabotaging our code either with bugs or "kill switch". However, its not always easy to be a trusting guy in the industry. A lot of clients do the whole "gladly pay you tomorrow for a hamburger today" bit to take advantage of your good nature. The issue is, how do you make clients that started out good, to turn away from the dark side and return to paying clients. Do you say, its fine man, times are hard, touch base with you next month, or do you pull the lawyer card?
Just don't ever let a single client accrue a liability greater than what you're willing to lose. Ultimately, you must recover the money, or else it's your loss. Bill frequently and regularly. Put the words "payment due net 15 days from the date of this invoice" on your invoice. If a client exceeds that time, be ready to immediately cease working for them. And the most important part is to communicate with the customer, explaining exactly what you will do and when you will do it.
A big difference between consultants and employees is that consultants are responsible for collecting. (If you're an employee, you write a single letter to the Department Of Labor (DOL) saying that your employer is not paying you, and the government will work its magic. (Employers not paying employees is a big big deal to the DOL and will not be ignored.)) Consultants don't have this kind of DOL protection.
This is one reason why consultants have to charge more than employees. You're a vendor, and people can steal from you. You must take the initiative to not let people steal from you. One more thing: let your accountant know if you incurred uncollectable accounts receivable because it's tax deductable.
Well, does blogging the dudes name open you up to possible legal issues, like slander or some crap like that? My other idea was creating a sort of clearing house site, like a Flex blacklist site for clients that don't pay. So other Flex devs can avoid those customers. Think of it like a Flex strike, you don't pay, well good luck getting a Flex guy from the union to help.
I recently had this situation occur only it was my former full-time employer who didn't pay up. They were a small startup with huge egos and spent a lot of time googling themselves so I simply wrote a blog post stating the facts (avoiding anything that could be considered libel). Within a few days their lawyer contacted me. He and I worked it out almost immediately and I got paid very quickly. To show my appreciation I removed my posting.
I'm not sure this would work with every company, but it worked perfectly for me.
I've been consulting for several years now, and I've been pretty lucky — never any kill switches, nothing of the sort, always just trusted clients, and 95% of the time it's worked out perfectly. There have been times, though, when clients dragged their feet, sometimes for months; twice, in fact, I've had to threaten legal action against them. Harry is right — you need to be careful. But do tell your friend he should get ready to file a claim — if memory serves, if it's under $5,000, it's a small claim in CA, very simple to file, and once clients feel like their credit's threatened with a judgement, they'll act. In both my experiences, I got paid almost immediately, but I had to be ready to file. That's really your only option, though.
Man I've been around the block on this one. Still trying to find the best option. Here are a few I've tried:
Kill switches are bad news, but let me tell you what I'VE done in the past that worked.
Option A) Instead of a "kill switch" – I basically turned the software back into "shareware" after a time period. Think about how most shareware works – you get the full version for free for a while, then if you don't pay it reverts back to shareware. How you define shareware is up to you, but what I did was to put up an alert box that warned that the license was expired. Once they clicked OK, it allowed them to use the program anyway (think PKZip). Each day, it added one additional second to the wait time before the OK button enabled. It was just an annoyance at first, but after a few months it was taking a while to start up. I had heard from one of my friends working there that they just decided to leave the software up and never close it. But after about 8 months they finally mailed me a check and asked for a non-expiring license, which I emailed to them that day.
If they were smart they would have just rolled thier clocks back on their PC – I didn't put too much logic behind it. :)
Option B) I have a few apps out there that require an internet connection, and must authenticate against my server. My server then sends down a critical piece of code (module) that they don't own the rights to. They could rewrite it and post it on their own server, but most don't want the hassle.
I use that option when (like in your friends case) they have the source code.
Option C) If the client requires that they own all the source code, then I usually write in the contract that thier license (to the app and source) lasts 1 year, and that they can request a new license for free each year, as long as they do not have any past due invoices. Once their "paper license" expires, and they can't "legally" use your software anymore, it makes it a lot easier to shut them down.
I've discovered the hard way that it's all in what you do up front that matters. Sometimes you lose, sometimes you win.
In my case, I host almost everything now. if they don't pay then I've got options. But to tell you the truth, I have several clients that are behind on payments that are still active. Why? Because they came to me and talked to me about it one on one. It makes sense sometimes to keep them around – if you drive them out of business you will never get ANY money. But if they are not costing you any more money, sometimes it's worth the risk. It's ALL based on how they deal on it with me.
It's too bad we can't place leans on their business like contractors can place on our house when they do work. :)
Sorry this was so long…
Hi,
I do love my clients, and they almost pay all the times in time.
Sometimes, living in italy, it is common custom to say "I'll pay you in 1 month" that easily becomes 3 months.
Being "reasonable!" in Italy is different than in other countries. Sometimes a clients needs a bit of shaking.
This is my trick:
- Set a flag that RANDOMLY, lets say 20% of times, looks for a file on my server. If the file is not found, or server is down, etc. nothing happens.
If that file EXISTS, it means I have to push the client.
What does happen?
The application simulates a bug. A nasty bug which will NOT AT ALL looks connected with my behaviour or choice.
The client would then call me to fix the bug, which I usually do promptly.
Then, since I bill my works with a company, i say "sorry, but since payments are outrageously late, I have been commanded by the company CEO not to work on this app anymore untill payments are back on track".
What does usually happen?
Payment is done, file is erased, bug is fixed for free :)
Other option, the client is in serious trouble, and talks honestly to me, then I would fix it anyway, and trust he would pay me promptly.
love
Filippo
@Chris, checked the small claims court policy for California, the defendent (client) must reside in the state of california to file claims for money owed by my understanding. If the client lives in NYC for example, and you reside in CA, you can't file in California small claims court because they don't have jurisdiction over NYC. You mostly likely can't file in NYC because you need to be present in small claims court to represent yourself, something to consider when doing contracts remotely. Of course, this is my assumptions based on the information I gathered.
I can think of only one ciient who inspired me to go the kill switch way.
But nothing that drastically, just a little message that says "development version v_xx". Usually if the client's an asshole then he also really cares about their image :)
So like Filippo, I host an xml file with blacklisted project codes. If the app doesn t find the file (load error) or it's project code is not in the list nothing happens. If the code is found then the "dev version" message is shown.
Work just fine and there s no need to disable the switch after payment.
(Insert Evil Laugh Here)
"Karma's a bitch"
All about the name and shame.
I've done a load of work for <a href="http://www.agencyrepublic.com/">Agency Republic</a> in my time deving with Flash. Never again!
Comments are layed out aweful on here when there a decent amount
I think you need to think of the flip side of this as well.
If you get payment once you hand over the code and the project is turned on then what protection does the customer get if it doesn't perform as expected? You have all their money and 'could' make off without fixing anything.
All contracts are a matter of trust to an extent and as said above if you don't trust the other person don't get in a contract with them. Obviously if they turn nasty after you sign then its more difficult.
Kill Switch = Lawsuit in many cases. If you've been paid to render a service and you get paid 20% and Kill and application you could be sued.
However with a decent contract in place for your services. With a disclaimer added that until full payment is collected. The source code that you developed is your property.
With some smart includes you could easily host your portion of the code in a secure environment and deliver it after payment is rendered. Other great ways to protect your investment is Data Obscurification. I know that it's easily done with Javascript making it impossible to reverse engineer without a cypher.
=—- What do you get burnt on doing a project plan and estimate that the client takes and bids to others? Is my main question. I've lost more money on this then anything.
I'm really disappointed to hear all the objections to killswitching. I think it's a MARVELOUS idea.
I'd LOVE to see the look on a client's face when the app they didn't pay for fails to run.
while all of the talk of neat kill switches and whatnot is fun, how about pretending for just a minute that we're professionals here, and not a bunch of rowdy bullies on the p[layground? I'm surprised no one is bringing up the legal, ethical, and smart way to handle this: ALWAYS have a contract with the client. It's that old saying, "Trust, but get it in writing." Make sure that the contract has very specific language in it regarding the payment schedule. "Consultant will deliver x on <insert date here>. Client agrees to submit payment in full within 10 days of said delivery." If the client doesn't pay up, it's not a matter of "he said, she said" – they are in breach on the contract. Also include language stating that, if the terms of the contract have to be adjudicated, then then losing party will be responisble for all legal costs (which is pretty standard). When the customer says, "You don't get paid until I do", you politely say, "No, our contract states that I will get paid within 10 days." On day 11, you hire a lawyer and have them send a nasty letter demanding immediate payment. And then proceed from there. If you have a clearly written, legal contract then you will be in the clear throughout the process and you will win.
Easy. Key their car. Just kidding. There are companies out there that help you handle all of this. Contracts, payments, etc. Rentacoder.com comes to mind. They will hold the clients payment and your code until both parties are satisfied and also provide a legal discussion record. I used them in the past (don't tell my previous 10 jobs) and for handling everything they were pretty good (clients / devs were hit or miss). I think assembla has something similar and odesk as well.
Legal action seems to messy but you could contact a lawyer and see how much it costs to have them send a letter stating that their client (you) have contacted them (the lawyer) to take action if payment is not made within 10 minutes via paypal or something like that. :)
I would try and figure out a way to come to an agreement and see what they can do first. And always get a date.
always always always use a contract with specifics about delivery & payment.
Also put in a clause where if the client ever falls 30 days or more behind on payments then you reserve the right to remove their right to use your source code. Basically when you give a client source code as their site you give them a license to use your source code unless they hire you for specific code. The source code always reverts to the maker just like a photograph would to a photographer, this really confuses clients but it is that way because if the client owned the source then they could sue you and all your clients if any of your code is the same and we all re-use code so that would be a disaster. However the content is theirs in most cases.
I had a client years ago try to not pay and when I shut his site down he moved it to a new one under a different name and that immediately put him into copyright infringement and his lawyer had him settle immediately.