There are two traditional ways you can incentivise someone outside your company to do custom work for you.
If you pay them a fixed price for the job, their incentive is to do as few hours as possible, to ignore your phone calls and e-mails, to test/mitigate risk as little as possible, to push work back to you, to produce no documentation, to refuse any change of scope without a big cost increase, and to deliver the least they can within your contract. IT example: Elance
If you pay them by the hour, their incentive is to increase complexity, to investigate every possible risk in painstaking detail, to re-do work you've already done, to call and e-mail and hold meetings with as many people as possible for as long as possible, to produce more (and more carefully produced) documentation than you want, to interpret every cough and sneeze as an instruction to widen the scope, and to deliver late and over any estimated budget. IT example: Government IT and defense projects.
Theoretically it's possible to come up with an agreement that doesn't have either set of flaws - but in my experience if you've got the expertise and to do that, you've got the expertise and time not to need to hire outsiders.