I've been a freelance developer for many years and am setting up a system designed to attract clients through one of my developer websites.

If successful, these would be clients I do not know, and some jobs may be very small. When working with clients I know on larger projects, I'm accustomed to doing the work before I get paid. But, here, that seems risky.

I'm looking for suggestions on the payment schedule I should require for small projects. I suspect potential clients will not be willing to pay the full amount up front, and so the solution will probably be some sort of compromise.


Up-Front + Milestones

Typically, you should have some payment up-front to begin work. Then, have milestones where you deliver some part of the project to them, or show an update to progress where the next payment is due. This way you have the incentive to keep working on the project, because you don't get paid the full amount until you deliver, and they have the incentive to actually pay you along the way because they won't get the full product if you walk out because they stopped paying you mid-stream.

As with anything, this is negotiable, and good-will comes in to play depending on clients/relationships, etc. Milestone and upfront payment percentages can vary widely, so use your own discression as to both what's fair and to what degree you are willing to risk not getting paid.

| improve this answer | |

I ask clients to pay 50% up front and 50% when the project is complete and I have given it to them. I have lost a lot of money in the past when clients suddenly pull out and I have not gotten anything off them up front.

With the 50% up front you know you can trust them and it will cover your development costs. They will also feel happy that you won't get your final 50% until you have given them the completed project - and you know you can trust them as they were willing to pay a large enough amount up front.

| improve this answer | |
  • +1 for a compromise between payments before and payments after the work is done. – Jonathan Wood Mar 28 '11 at 21:07
  • You just need to make sure that you get enough before hand that if something happens (i.e. they refuse to pay the final amount) you're not totally screwed and you've covered your costs. – user21466 Mar 29 '11 at 1:02

two sane options

  1. if you're flat-bidding the work, or the cost of an iteration, half in advance and half on completion. For your own protection, insist that acceptance tests be objective and automated.

  2. if you're working by the hour, sell pre-paid hours

| improve this answer | |
  • Can you elaborate on what you mean by automated acceptance tests? +1 on pre-paid hours, although I'm sure that could turn some customers off. – Jonathan Wood Mar 28 '11 at 21:04
  • @Jonathan: it's common practice to have "acceptance tests" to determine that a piece of software does what it is supposed to do. Automating these tests (a la TDD) is highly recommended, as it removes any subjectivitiy from the process and makes it easier to ensure that the software passes all the tests before it is delivered, and after it is delivered. – Steven A. Lowe Mar 28 '11 at 22:10
  • I agree on the "pre-paid" hours. They're called a retainer fee. – Michael Brown Mar 29 '11 at 0:04

I don't know if anything like this exists, but perhaps go the middle ground.. Have a middle tier account where the payment is paid, so that the money is now in limbo.. you know that the money is available, and they know you won't run off with it.

Then inside that freedom you can work out any appropriate milestone payments on a per-project basis.

| improve this answer | |
  • 2
    Only problem - who administers that escrow account? If they don't trust him enough to pay upfront, they aren't going to trust an escrow arrangement he offers either... – Jim Mar 28 '11 at 20:32
  • Well, I think something like this could work. For example, if it was a company like PayPal, people would trust it. However, I'm not sure such a service exists, and imagine they'd want a percent if they did. – Jonathan Wood Mar 28 '11 at 21:06
  • 2
    yeah mate there are heaps of escrow services around. The freelancing site that I use (Scriptlance.com) actually has an escrow facility built in to the site. Works pretty well. Not sure how they handle disputes though – JT.WK Mar 28 '11 at 21:24
  • 1
    Guru.com and Elance also provide escrow services. – Michael Brown Mar 28 '11 at 23:55

It's always a risk if you don't get paid first or at least a percentage of what is agreed. Be strict and always ask a down payment first, especially if you can't trust the employer. It's your right to ask for it. Don't worry about it. A written contract would also be helpful. It establishes that it is a professional business and it also sets the limitations and a basis of what is agreed. You can read this article for smart ways to be ensured that you get paid.

| improve this answer | |

Don't go for small projects...it takes just as much effort to land a small project as it does to land a big one. For the big projects, if you're truly worried about payment use an invoice factoring service. They run credit on your client and if approved give you the full value of the invoice minus 1-2%. From there, they handle all of the collections on your behalf. You don't have to worry about anything but providing the service.

| improve this answer | |
  • With this particular setup the projects would come to me, and I'd be more than happy to take on a small project right at the moment. For larger projects, I generally don't run into any difficultly. – Jonathan Wood Mar 29 '11 at 0:07
  • 2
    At a time when company's are at a financial crisis, small projects might be the only option for survival – Imran Omar Bukhsh Mar 29 '11 at 0:15

Not the answer you're looking for? Browse other questions tagged or ask your own question.