Been in this exact situation three times over 12 years of freelancing. Here is the cost-benefit reality nobody talks about:
For a $5K deposit, small claims court is almost always the right move over hiring a lawyer. In most states, small claims limits are $10K-$15K, filing fees are $30-$75, and you do not need an attorney. The process takes 4-8 weeks from filing to hearing. You show up with your signed SOW, your follow-up emails, and evidence of the other client you turned away. Judges see these cases all the time and they are very sympathetic to contractors with signed agreements.
That said, the demand letter really is the first step. So in my situation, 2 out of 3 ghosting clients pay up after a formal demand letter because they realize you are serious. The third one either genuinely cannot pay or is trying to see if you will give up.
Going forward, here is what eliminated this problem for me entirely: I switched to a workflow where the SOW, payment, and project kickoff are all bundled. I use HoneyBook to send the contract and collect the deposit in one step. The contract is not considered executed until payment clears. Zero ghosting since I made this change two years ago.
Also, add a kill clause to your SOW: “If the deposit is not received within 14 calendar days of the Effective Date, this Agreement shall automatically terminate and Developer shall have no further obligations.” This protects you from being stuck in limbo waiting for a client who may never pay.