Subscribe to RSS
get email updates
home | about | pixDif AIR app | video tutorials
polyGeek.com

place your ad here

Web Premium



Get Qwest High Speed Internet



What to do when a client doesn’t pay up

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?

If something here has proved valuable to you then feel free to drop a couple of bucks in the tip-jar.

Post to Twitter Post to Delicious Post to Facebook Post to Reddit Post to StumbleUpon


similar posts

35 Responses to “What to do when a client doesn’t pay up”


comment number 1 by: NA

Perhaps you would like to tell us the name of your client, Karma's a bitch

comment number 2 by: nicopolitan

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.

comment number 3 by: JesterXL

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. [...]

comment number 5 by: Nick Kwiatkowski

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.

comment number 6 by: Peter Bell

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.

comment number 7 by: Mister

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?

comment number 8 by: Harry

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.

comment number 9 by: polyGeek

@NA, you know, that's probably the first thing I'd do. If I had a really bad experience I'd just blog about it and say, "This guy owes me money. I'd appreciate it if no one in the community works for them until I get what's owed to me." And then post again when the matter was resolved.

comment number 10 by: polyGeek

@nicopolitan, I'd be very cautious with that approach. It would be easy to add app logic that said, "If you can't find this bit of data then FAIL." But what if that data is hosted on a website that goes down. Now both are down. I suppose you could have redundancy by placing, say images, on Flickr, Facebook, Twitter – oh wait, that's down all the time – etc. And if the app can't find any of those images then FAIL.

However, if I had a client that was that much of a concern I'd just stop working for them.

comment number 11 by: Mister

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.

comment number 12 by: polyGeek

@JesterXL, yeah, what you said!

comment number 13 by: polyGeek

@Mister, I'm no legal expert but I don't think slander applies to factual statements. So if you just kept it at: client so-n-so was sent an invoice for $x.yz and replied that they didn't have the money to pay up right now… Then I think you're okay.

I like the idea about a Flex blacklist. PeterElst will probably have it finished this weekend. :)

comment number 14 by: Jake Hawkes

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.

comment number 15 by: polyGeek

@Jake, good for you. Glad everything worked out. It's a very slippery topic.

comment number 16 by: Chris

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.

comment number 17 by: polyGeek

@Chris, your right. This is absolutely the proper way to handle a situation like this.

comment number 18 by: Pat

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…

comment number 19 by: polyGeek

@Pat, Wow, thanks for the input. That's very handy info.

Option A) That is a classic! I love it.

Yes, if you do the hosting then you have LOTS of leverage. Just turn them off and then send them an email, "I'm sorry that your site is down. I can't afford to pay the electic bill this month. You're site should be up next month. Thanks for your patience." :)

You're right. We should have more power to collect like making it easy to place a lean on their assets.

comment number 20 by: Filippo

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

comment number 21 by: polyGeek

@Filippo, dude, that is such on obviously simple solution with the file EXISTS. That way you don't have to worry about servers being down or something. The client only sees the error if the app DOES find the file, brilliant!

I lived in Italy for about 6 months back in 1999-2000. You're right. Time there is a whole different thing. Same with traffic signals, stop signs, crosswalk, and anything else that has to do with driving a car. :)

comment number 22 by: Mister

@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.

comment number 23 by: cosmin

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)

comment number 24 by: polyGeek

@Mister, thanks for doing some homework on the topic.

One thing I'd add: if I ever did have trouble collecting from a client I would be sure that they paid me in advance if I ever worked for them again. Generally I just invoice my clients at the end of each month and usually have the checks by the middle of the month.

comment number 25 by: Tink

"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

comment number 26 by: Peter

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.

comment number 27 by: RedefineIt

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.

comment number 28 by: Ian Ford

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.

comment number 29 by: polyGeek

@Tink, what do you mean, "Comments are layed out aweful…"? One below the other. Clearly delineated and author comments are indented. What more could you ask for? Well, now that you mention it they do look like kak. I'll put it on my list of things to do. Maybe removing the alternating colors would help.

@RedefineIt, If someone were to add a kill switch I think Filippo's solution is perfect. It just introduces a 'bug' that doesn't crash the app every time. Like he said, 'maybe only 20% of the time.' It would be near impossible for someone to discover that it was actually done on purpose.

But you're right about adding details about code ownership to the contract. I always tell my clients that I will send them a copy of the code after payment is received.

I've never written a bid but that would really suck and I'm sure it happens all the time. If I were to write a comprehensive bid for someone I would expect that they would pay me for my time of putting it together.

comment number 30 by: Rob Huddleston

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.

comment number 31 by: polyGeek

@Rob, I agree with everything you said. But there are a few unfortunate realities to deal with. Number 1 is that most developers have at least a little bit of the hacker mentality going for them and so when givin the choice to flip on a kill switch or contact a lawyer we'll go with the former. I'm not saying it's right but it's the easiest solution. Plus, lawyers are time consuming and even if everything does go your way it could be months before resolution.

If it were me I'd be more likely to put the kill switch in a contract before going mentioning lawyers.

By the way, what do you call 10,000 lawyers at the bottom of the ocean?

"A good start!"

Did I mention that I despise lawyers? :)

comment number 32 by: Judah

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.

comment number 33 by: polyGeek

@Judah, it seems that the suggested solutions come in two camps:

1-use a variation of a kill switch

2-legal means

I think it depends on how much faith you have on the latter. Me personally, I'd rather have the control with a kill switch than need to contact a lawyer.

Your suggestion to use a mediator up front is good. I don't like jumping through hoops more than is necesarry but this is a better safe than sorry approach for both parties.

-dan

comment number 34 by: dave

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.

comment number 35 by: polygeek

@Dave, thanks for the input. Contracts can be such a hassle but it’s like my poppa used to say, “Better to have a gun and not need it than to need a gun and not have one.”

   Welcome back (Change)

Leave a Reply

comment feed RSS   subscribe to this comment thread

Recent Posts

   



polyGeek.com

© Copyright 2008 polyGeek.com / Dan Florio, All Rights Reserved Except Where Explicitly Stated
Web Developement Blogs - Blog Catalog Blog Directory
M2 Websites
Local Directory for Los Angeles, CA

Better Tag Cloud