Why Web Development Invoices Go Unpaid
Web development projects are particularly vulnerable to payment disputes because of their complexity, extended timelines, and the client's frequent misunderstanding of what development work actually involves. A website that looks simple to the client may represent hundreds of hours of backend work.
Common unpaid invoice scenarios for web developers include:
- Scope creep without payment: The client kept adding features, pages, and integrations beyond the original specification, then disputes the final invoice reflecting the additional work
- Launch delay blame: The project launched late — often due to the client's delayed content delivery or feedback — and the client uses the delay as justification to withhold payment
- "It does not work" claims: The client reports bugs or issues after launch (sometimes caused by their own modifications) and refuses to pay until everything is fixed, regardless of warranty terms
- Milestone payment defaults: The client paid the deposit and perhaps the mid-project milestone, but withholds the final payment after the site goes live
- Ongoing maintenance disputes: Monthly retainer or maintenance invoices go unpaid after the initial project relationship sours
Legal Leverage for Web Developers
Source Code Ownership
Unless your contract explicitly transfers copyright, you own the source code you wrote. This includes custom themes, plugins, modules, API integrations, and backend logic. The client has a license to use the deployed website, but that license is contingent on payment.
Hosting and Infrastructure Control
If you manage the client's hosting, DNS, SSL certificates, or deployment pipeline, you have practical leverage. While you should never take a live site offline without proper notice (and legal advice), you can decline to provide further hosting services for an account in default.
Database and Content
Custom database schemas, migrations, and configurations you developed are your intellectual property. The client's content stored in the database belongs to them, but the system architecture you built does not.
What to Include in Your Demand Letter
Project Agreement Reference
Cite your contract, statement of work (SOW), or proposal. Reference the agreed scope, technology stack, timeline, and payment schedule.
Work Completed
Document the full scope of development work:
- Discovery and planning: Requirements gathering, wireframing, technical architecture
- Frontend development: Pages built, responsive design, browser testing, accessibility compliance
- Backend development: Custom functionality, CMS configuration, database design, API integrations
- Testing and QA: Bug fixes, cross-browser testing, performance optimization, security hardening
- Deployment: Server configuration, domain setup, SSL installation, launch checklist
- Post-launch support: Bug fixes, content updates, training provided
Scope Change Documentation
If the client requested features beyond the original SOW, list each change request with:
- Date requested
- Description of the additional work
- Email or message where the client approved the change
- Hours spent or agreed additional fee
Financial Summary
- Original project fee
- Deposits and milestone payments received
- Additional charges for scope changes (with documentation)
- Monthly hosting or maintenance fees owed
- Late fees per contract terms
- Total outstanding balance
Intellectual Property Notice
State that you retain ownership of all custom code, and that the client's license to use the deployed website is contingent on full payment. Clarify that you are not obligated to provide source code, repository access, or hosting credentials until the account is current.
Industry-Specific Tips
- Document everything in Git: Your commit history is timestamped evidence of every hour of work performed. Reference your repository's commit log as proof of development effort
- Separate your code from their content: Make clear in your demand letter that you are not withholding the client's content (text, images, data) — only the custom code and systems you built
- Reference market rates: Use platforms like Glassdoor, Stack Overflow salary surveys, or agency rate cards to demonstrate that your rates are within industry norms
- Address the "my nephew can build it cheaper" defense: If the client claims the work is overpriced, your demand letter can note the specific technical skills required (e.g., custom API integration, database optimization, security compliance) that justify professional rates
- Preserve access logs: Server logs showing the client actively using the website prove they received and are benefiting from your work
Timeline for Resolution
- Day 1: Send demand letter via email and certified mail
- Days 3-7: Client response window
- Day 14: Payment deadline
- Day 15: Revoke repository access and withhold further development or hosting services
- Day 30: File small claims court petition or engage a collections agency
When to Escalate
Web development disputes often involve amounts from $5,000 to $50,000+. Choose your escalation path based on the amount:
- Under $10,000: Small claims court is ideal — no lawyer needed, and you can present your contract, commit history, and communications as evidence
- $10,000-$25,000: Consider mediation first, then small claims (if within your state's limit) or hiring an attorney for a breach of contract claim
- Over $25,000: Attorney representation is recommended. The cost of litigation is justified, and your contract may include an attorney fees clause
- Ongoing hosting disputes: If the client owes for hosting and maintenance, you can terminate hosting services with 30 days written notice, forcing the client to migrate and often prompting payment