Should you ask for a deposit upfront?
The simple answer is YES - I think that's obvious. However a lot of freelancers don't, thinking it might put off potential clients. When I first started freelancing I didn't take a deposit. I had no portfolio, no reputation and needed work. Still, I didn't start a project without some sort of security. Finding clients that needed specific work done and offering to do a portion of it first. Showing them it working (but not handing over the code) and THEN getting paid a large deposit before finishing the work and handing it over was the method I used.
For example, a client needed a payment system built into their website. I would offer to build the payment form. Then I would record myself showing it working to satisfy the client who would then pay a 50% deposit.
This satisfies both parties. The client is happy because they now know you are up to the task, and you are happy because you have a 50% deposit.
The above method is NOT IDEAL, but starting freelancing is hard and getting clients is harder. Thousands if not millions of freelancers start work without taking a deposit daily - so if you are going to do it, use the method above for some sort of security.
If you have any sort of experience or portfolio, TAKE A DEPOSIT UPFRONT.
When do you know if you should stop taking any risks with payment and start taking a deposit upfront? The minute you have a portfolio, 2 or 3 jobs under your belt or a client referral or two. Basically anything you can show potential new clients.
The main reason freelancers don't take deposits is because they think it will scare clients away.
The reality is the only thing that will scare clients away is if they don't think you can do the work they need done in the time/budget they have. That's it.
You need to shift your mindset to recognize that if you can provide a solution to your clients problems they will have no issue paying you 25% or 50% deposit. So as long as you have something you can provide to assure them of your skill then ask for an upfront deposit.
Why take a deposit as a freelancer?
Taking a deposit as a freelancer has MANY benefits which will make your life easier and more secure.
Simply put, having a sum of money paid in advance, already in the bank as you start a project gives you security. It allows you to relax into a project knowing that you already have enough to cover your time. You know that if a client flakes for whatever reason, you will still be compensated for your work. This removes almost all the stress of freelancing. We have all been working on a project, worrying that the client might not pay once the project is done. Don't put yourself through that unneeded stress, get a down payment.
Shows the client has confidence in you
When a client commits to paying a 50% deposit - it shows they have confidence in your abilities. They trust you can and will deliver. This kind of confidence resonates and will allow you to have more confidence in yourself as a freelancer. All this means you will be happier and provide better work. After all, if you think a client doesn't believe you can do a project correctly, you will start to doubt yourself. That doubt can lead to a self fulfilling prophecy and work you could do, doesn't get done. This is just a bad situation all round. Prevent that ever happening by knowing a client has confidence in you and get that down payment.
Bad client warning
If a client doesn't want to give you a deposit for a big project, that could be a red flag. I am not saying it is always a red flag, but it could be. If you want to know about other potential warning signs a client could be bad - I wrote a post about it here.
I have been in situations were a really keen client has literally disappeared the minute I mentioned a deposit, never to come back. Boy am I glad they decided to disappear before I started the work, than at the end of the project. Requesting a deposit can help to filter out the good from the bad when it comes to clients, and if a client refuses a deposit, it's time to start considering if that's a client you want to work with.
How much deposit should you take?
This can vary. Over the years I have slowly made my way up to a 50% deposit. The hard and fast rule is:
A deposit should cover your time and effort should a client disappear.
Some larger projects will require "milestone" payments. Smaller percentages spread out as you hit key points on the project. If you go this route, make sure no delays happen at each milestone payment as they can end up rolling into one big payment at the end leaving you vulnerable to the client disappearing.
As an absolute minimum I would say 25% is as low as you should be going when it comes to deposits.
The last point I will make is that you can protect yourself in addition to deposits by withholding work as much as possible until the full amount has been paid. I am a web developer, so for me that means holding code locally until I am happy with the payment before transferring the work to the client.
Do not ever end up in a situation where the client has all the work, no reason to need you further and you still have a large bill from them outstanding.