I'm currently interviewing candidates for a back-end web development position. I ask them to perform some basic work (a real project, not a throwaway exercise) to get a sense for how they go about designing code and troubleshooting. I just had one candidate complete and send me his completed test, along with an invoice charging me almost $1000 for his time! Of course I won't be paying, and he won't be moving forward with us, but is this becoming common enough that I should put out a disclaimer, or is this just one incredibly unprofessional experience?
I asked in the comments
Is the work he was asked to perform usable by your company? Or was it a throwaway project that cannot be used?
What's the point of a throwaway project? Of course I assign usable work. But for this case I haven't opened his project yet and I don't plan to.
So, you are getting real work done for free. Sounds like a good deal for you. So good, in fact, that it is reasonable for someone to assume that they were only given the coding test in order to get free work out of them, and that you may have no intention of ever hiring anyone.
If you want real work done, pay for it. Don't dress it up as an interview test, even if you are legitimately using it as one.
If you are going to use the work, then yes, most definitely, you want to be VERY clear about it when you assign the work to the interviewee.
In addition to the above, be aware (keeping in mind that IANAL) that anyone who writes any code retains the copyright to it unless they explicitly turn it over to you. So, unless there is some sort of license attached to your interviewees' work (any of them, not just this one that tried to invoice you), you may have opened your company up to some very nasty legal liability with these coding tests.
You are certainly not obliged to pay the invoice, since there was no "meeting of the minds" about paying for the work.
I personally don't think it's unreasonable to have some sort of coding exercise as part of an interview process. However, some employers have gone off the rails with this, and have coding exercises that require multiple days worth of work. Anecdotally, a few employers have even used this tactic to get free consulting and development work. Applicants who have run into this sort of mistreatment might be sensitive about whether they are being exploited.
You've clearly ticked this applicant off. It might be worth a bit of reflection on whether you or the applicant is the one being unreasonable. Can the exercise really be completed in a couple of hours? Is the exercise really an exercise, or does it solve an actual business issue? If the exercise takes more than four hours, or solves an actual business issue, then the applicant might have grounds for being upset. On the other hand, some folks just have short fuses, and the exercise has shown you something about the candidate.
Edit: OK, I see from your comments that apparently you are one of the employers using "real life" problems for an exercise. Attempts by an employer to benefit from free labor are a big flashing red light for applicants, indicating "not a place I want to work". Doing an hour or so of pair programming on a real problem is reasonable. Sending a candidate home to do free development for you is not. I wouldn't have bothered sending you a bill, since that's pointless, but I certainly would have lost all interest in the position.
The idea of doing the test and sending along an invoice seems to be pretty rare, mostly because it almost certainly means that the interviewee just wasted their chance at moving forward and spent whatever time was put into the test for nothing.
The sentiment that people don't want to spend hours on a technical test before they get to speak with anyone (or otherwise need to invest hours of their spare time at no recompense) on the other hand seems to be growing a bit. There's plenty of questions on the Workplace here from developers bothered by these tests and looking for ways around them, or even flat out saying they refuse to take them unless they get paid for them.
So while it's unlikely you'll be getting any more invoices, you might get more people opting out of your interview process or asking for payment before taking the test. You should probably be happy with this result though; it'll take you a whole lot less time to reject this interviewee for being unprofessional than it took the interviewee to complete the test before throwing away their chances by attaching an invoice.
Leaving aside the specifics of your question for the moment, it is certainly becoming more common for candidates to be compensated for their time and/or money.
A very common example is where the candidate travels a long way for interview and/or has to stay overnight. In these cases mileage/travel and reasonable accommodation costs can be claimed.
For larger testing sessions, an potential employee may also lay on coffee or a buffet meal.
As for your question, if you're expecting a professional to spend hours or days on code that could reasonably be used at the end, yes - they're going to feel exploited unless it is made clear the work is gratis and/or they're part of a very small pool of select candidates.
Perhaps a better way is to carry out a phone interview in the first instance, or ask them to complete a questionnaire or written test to weed out the weaker candidates before moving onto the project element.