There are obvious benefits to the freelancer if payment is made up front:
- No chasing the money at the end
- Harder for a client to cancel the project if they've already paid
There is also a big risk to the client:
- What happens if the freelancer dies or disappears before the end of the project?
I have seen 2 reasons why clients are willing to take that risk:
- If there is a significant discount for pre[payment (say 10%)
- Clients who have annual department budgets that they must spend by the end of the calendar year may use up front payment to insure that they can fund projects that cross budget years.
Personally, as a freelancer I have learned being paid the entire amount upfront is not for me. I've learned that my motivation to work on a project is tied to the money I will be earning. If I've already been paid for everything, my desire to work on the project tanks. That being said, I know other freelancers who prefer this approach and only take up front payments. And I almost always ask for partial payment up front, just not the whole thing.
Regarding the contract...yes. You always create a contract prior to project development, and in this case you would just include that the terms are that payment must be received before the work can begin.