Web Developer Payment Chase Guide
You built the site. It works. The client is using it. And the invoice is sitting at 60 days past due. If you are a freelance developer chasing payment for a completed project, you have more leverage than you think. Code, hosting, domains, and deployment access give you a unique set of tools that other freelancers do not have. This guide covers how to use that leverage professionally, how to structure future projects to prevent this situation, and what to do when a client will not pay for development work.
Milestone-based billing for development projects
The biggest mistake freelance developers make is billing after the project is done. By the time you send the final invoice, the client has a working product and no financial incentive to pay quickly. Milestone billing fixes this by tying payments to specific deliverables throughout the project.
A standard milestone structure for web development: 25% on signing (before any code is written), 25% at the design approval or wireframe stage, 25% when development is complete and ready for review on a staging environment, and 25% before deployment to production. Each milestone should be documented in the contract with a clear description of what constitutes completion.
For larger projects ($10,000 and up), consider more granular milestones. A $30,000 project might have six payments of $5,000 tied to discovery, wireframes, front-end development, back-end development, testing, and deployment. The principle is the same: never let the unpaid balance exceed the value of the work remaining.
Staging vs production: your most powerful leverage
Here is the leverage most developers overlook. If you deploy to a staging environment for client review and require payment before pushing to production, you maintain control of the final deliverable. The client can see the work, test it, approve it, and verify it meets the spec, but it is not live until they pay.
Your contract should include language like: 'Development work will be deployed to a staging environment for client review and approval. Deployment to the production environment will occur within [2-5] business days of receipt of the final milestone payment. Consultant retains access to and control of the staging environment until the project is paid in full.'
This is not holding work hostage. It is a standard delivery process used by development agencies worldwide. The staging environment exists so clients can review and approve work before it goes live. Tying the production deployment to payment is a natural part of that workflow.
Code escrow and IP transfer on payment
For larger projects, code escrow gives both parties peace of mind. You deposit the source code with a neutral third party (or a simple GitHub repository with controlled access). The client knows the code exists and is complete. You know it will not be released until payment clears.
Your contract should address intellectual property clearly: 'All source code, designs, documentation, and related materials created under this agreement are the intellectual property of [Developer Name] until full payment is received. Upon receipt of final payment, all intellectual property rights transfer to [Client Name], including access to the source code repository.'
Without this clause, clients may argue they own the code because they paid for it to be developed. With the clause, there is no ambiguity. The transfer happens on payment, not on delivery. If the client does not pay, you own the code, and any use of it by the client is a violation of your intellectual property rights.
Hosting and domain leverage: use with caution
If you registered the domain or set up hosting on behalf of the client, you may have administrative access that gives you leverage. But use this carefully. There is a meaningful legal and ethical difference between withholding new work (which is your right) and disrupting a live service (which could expose you to liability).
If the domain is registered in your name: you control it, but the ethical move is to transfer it to the client upon payment. Do not hold it indefinitely. Use it as a negotiation point: 'I am happy to transfer the domain once the balance is settled.'
If you have hosting access: do not take down a live site. Even if you are owed money, taking down a live website can be considered tortious interference with the client's business, and you could end up owing them more than they owe you. Instead, remove your access to the hosting account and let the client manage it going forward. Your leverage is in the source code and future maintenance, not in disrupting their operations.
The safest approach: set up hosting and domains in the client's name from the beginning, with you as an authorized administrator. When the project is paid, you hand over admin credentials. This keeps things clean and eliminates the temptation to use hosting access as a collection tool.
The developer's collection escalation timeline
Day 1 to 7 past due: Send a friendly reminder. Attach the invoice. Assume good intentions. Many developer invoices go unpaid because the client's accounting department does not know who you are or what the invoice is for.
Day 8 to 21: Send a firm follow-up. Reference your contract terms, any applicable late fees, and the IP transfer clause. If the project is on staging, note that deployment to production is pending payment. Be direct: 'I want to get this wrapped up for both of us. Can we get the balance settled this week?'
Day 22 to 45: Send a formal demand letter. State the total owed including late fees, reference the contract, and set a 14-day deadline. Mention that you will pursue legal remedies including small claims court if not resolved. At this point, also remove yourself from any ongoing support or maintenance obligations.
Day 46 and beyond: File in small claims court for amounts under your state's limit (typically $5,000 to $10,000). For larger amounts, consult an attorney. If the client is using your code without having paid, you have both a breach of contract and a potential copyright infringement claim.
Structuring your next project to avoid this entirely
After getting burned once, most developers overhaul their process. Here is the setup that works. Use milestone billing with no more than 25% of the total fee unpaid at any point in the project. Deploy to staging for review and require payment before going live. Include an IP transfer clause that ties code ownership to payment. Set up hosting and domains in the client's name from day one. And require a signed contract before writing a single line of code.
Consider using a project management tool that gives the client visibility into progress without giving them access to the actual code. This builds trust and reduces the 'I cannot tell what I am paying for' objection that leads to many developer payment disputes.
For repeat clients, offer a small discount (5% to 10%) for upfront payment in full. Many clients prefer the simplicity of a single payment, and you get your cash immediately with zero collection risk. A $9,000 project paid upfront is worth more than a $10,000 project paid in four installments over six months.
Email templates
Payment required before production deployment
Subject: Staging Review Complete - Payment Due Before Launch
Hi [Client Name], The [PROJECT NAME] build is complete and deployed to the staging environment for your review at [STAGING URL]. Please take a look and let me know if you have any feedback or changes. Per our agreement, the final milestone payment of [AMOUNT] is due before deployment to production. Once payment is received, I will have the site live within [2-5] business days. You can pay via [PAYMENT METHODS]. The invoice (#[NUMBER]) is attached. Let me know if you have any questions about the staging build or the invoice. Best, [Your Name]
Firm follow-up for overdue development invoice
Subject: Overdue Invoice #[NUMBER] - [PROJECT NAME]
Hi [Client Name], I am following up on Invoice #[NUMBER] for [AMOUNT], which is now [NUMBER] days past due. This invoice covers [DESCRIPTION OF WORK] for [PROJECT NAME]. Per our agreement: - Intellectual property rights transfer upon receipt of full payment - Production deployment is pending until the balance is settled - A late fee of [RATE]% per month applies to overdue balances The current total including late fees is [TOTAL WITH FEES]. I want to get this resolved so we can wrap up the project. Can we get the balance settled by [DATE, one week out]? If there is an issue with the invoice, I am happy to discuss. Please let me know. [Your Name]
Formal demand for unpaid development work
Subject: Formal Demand for Payment - [PROJECT NAME]
Dear [Client Name], This letter constitutes a formal demand for payment of [TOTAL AMOUNT WITH FEES] for web development services rendered for [PROJECT NAME], as outlined in our agreement dated [CONTRACT DATE]. Project scope: [BRIEF DESCRIPTION] Invoice amount: [AMOUNT] Date issued: [INVOICE DATE] Payment terms: [TERMS] Days overdue: [NUMBER] Late fees accrued: [LATE FEE AMOUNT] Total due: [TOTAL WITH FEES] Per our agreement, all source code, designs, and related intellectual property remain my property until full payment is received. Any current use of the project deliverables without payment constitutes a violation of our agreement and an infringement of my intellectual property rights. If full payment is not received within 14 days of this notice, I will pursue all available legal remedies, which may include small claims court, formal litigation, and copyright infringement claims. Please remit payment to [PAYMENT METHOD] or contact me at [PHONE/EMAIL] to discuss a resolution. Sincerely, [Your Name]
Actionable tips
Let InvoiceFlows chase clients for you
AI writes the reminders, tone escalates automatically, and you never send another awkward follow-up email again. $9/month, 30-day free trial.
Start Free TrialFrequently asked questions
Can I take down a website I built if the client does not pay?▾
You should not. Even though you may own the code, taking down a live website can be considered tortious interference with the client's business and could expose you to damages that exceed what you are owed. Instead, withhold source code, refuse to deploy updates, and pursue the debt through demand letters and small claims court.
Who owns the code if there is no contract?▾
Without a contract, code ownership defaults to the developer under U.S. copyright law, because you are the author of the work. However, the client may argue an implied license based on the fact that they paid you to create it. A written contract with a clear IP transfer clause eliminates this ambiguity entirely. Get one for every project.
How do I handle a client who wants changes before paying the final invoice?▾
If the requested changes are within the original scope, complete them and re-invoice. If they are outside the scope, quote them as additional work and require payment of the original invoice before starting. Do not fall into the trap of making unlimited changes in hopes of eventually getting paid. Each unpaid revision reduces your effective hourly rate.
Should I use a freelance platform for payment protection?▾
Platforms like Upwork and Toptal offer escrow-based payment protection that virtually eliminates non-payment risk. The tradeoff is platform fees (typically 5% to 20%) and less control over the client relationship. For new clients with no track record, the platform fee is worth the protection. For established relationships, direct billing with a strong contract is more profitable.
What is code escrow and do I need it?▾
Code escrow is when source code is held by a neutral third party and released to the client upon payment. It protects the client (they know the code exists) and the developer (the code is not released without payment). For projects under $10,000, a private GitHub repository with controlled access serves the same purpose. For larger projects, formal escrow services like EscrowTech or Iron Mountain are available.