TL;DR
On this page
A freelance web developer in unpaid revision round 7 usually has the same root cause: the contract said "reasonable revisions per scope." That phrase has no number, no cap, and no timer, so every new request feels reasonable to the client. The fix is structural, three interlocking clauses written before the project starts.
pro tip
A 2026 web developer contract needs scope-with-exclusions (name what is NOT included), a 2-round revision cap with hourly overage past the cap, and a 5-day acceptance-criteria timer where deliverables are deemed accepted after 10 business days of silence. Plus IP-transfer-on-cleared-funds as the payment-leverage backstop. Per Ignition's 2025 report, 57% of agencies lose $1,000 to $5,000 per month to scope creep.
The general contract framework lives in freelance contract essentials. The mistakes that this post prevents are catalogued in freelance contract mistakes. The invoice that bills against this contract is in the web developer invoice guide, and the proposal that precedes it is in the web development proposal guide.
Why "reasonable revisions" bankrupts the project · The scope-lock stack · The acceptance-criteria timer · The change-order threshold · IP transfer as leverage · Payment terms
Why "Reasonable Revisions" Is the Phrase That Bankrupts the Project
Scope creep is not a client problem. It is a contract problem. Per Ignition's 2025 Agency Pricing and Cash Flow Report, 57% of agencies lose $1,000 to $5,000 per month to scope creep and 30% lose more than $5,000 per month. Only 1% successfully bill for all out-of-scope work, and 78% rarely or only sometimes charge for it.
The phrase "reasonable revisions" is the structural cause. It contains no objective boundary, so the developer and client have different definitions of reasonable and the gap is unpaid labor. Contra's clause guide draws the line precisely: "Changing a button color is a revision. Adding a shopping cart to a brochure site is a new feature requiring a separate agreement." The contract has to encode that distinction, not leave it to good faith mid-project.
The Scope-Lock Stack
The fix is three clauses that interlock. Each one alone is leaky; together they close the loop.
| Clause | What it does | Without it |
|---|---|---|
| Scope-with-exclusions | Names what is NOT included, not just what is | Client assumes everything adjacent is in scope |
| Revision cap (2 rounds) | Limits free revisions, bills overage hourly | Infinite revision rounds at no charge |
| Acceptance-criteria timer | Closes each review window after a fixed period | Reviews never formally end, work never completes |
Clause 1: Scope-with-exclusions
Most contracts list deliverables. Few list exclusions. The exclusions list is what stops the "I assumed that was included" argument. For a brochure site, the exclusions might read: does not include e-commerce, booking systems, custom CMS development, content writing, ongoing maintenance, or third-party integrations beyond those named. The scope-of-work guide covers building the SOW that becomes this clause.
Clause 2: Revision cap
Two rounds is the web-dev standard, verified across Contra, Plutio, and Webflow. The verbatim Contra language: "Each deliverable includes two rounds of revisions. Additional revisions will be billed at the standard hourly rate." Plutio prices overage at $150 per round as an alternative to hourly. The number is less important than the existence of the cap plus a defined consequence.
Clause 3: Acceptance-criteria timer
This is the clause most contracts skip and it is the one that actually terminates the revision loop. Detailed in its own section below.
The Acceptance-Criteria Timer
A revision cap without an acceptance timer still leaks, because the client can keep a single round open indefinitely by never formally approving. The acceptance-criteria timer fixes this. Per Contra's clause, the verbatim language is: "Client has 5 business days to review deliverables and provide written feedback. If no response is received within 10 business days, deliverables are deemed accepted."
This converts client silence into acceptance, which is the opposite of the default where client silence blocks project completion. It also creates a clean record: each milestone is either approved in writing or deemed accepted by timer, and revision eligibility ends at that point. Combined with the revision cap, the two clauses make "revision round 7" structurally impossible without a change order and additional billing.
The Change-Order Threshold
When the client wants something outside scope, the change-order clause routes it through written approval before any work happens. The verbatim PandaDoc template language: "Changes to this Agreement or to any deliverables in this contract must be submitted in writing and approved by both parties prior to taking place."
The operational rule, per Alvalyn Creative's change-order guide, is to not begin any new work until the client signs the change order. This is where most developers fail in practice: they start the "quick change" to be helpful, then have no leverage to bill it. The discipline is to treat every out-of-scope request as a change order, even small ones, with a stated threshold. A practical threshold: changes estimated under 1 hour are absorbed as goodwill buffer; anything over 1 hour requires a signed change order. This neutralizes the "it's just a small tweak" objection without nickel-and-diming every typo fix.
IP Transfer on Cleared Funds (Your Leverage)
The IP clause is not boilerplate. It is the developer's collection leverage. The standard pattern, verified across Plutio, Contra, and Bonsai: intellectual property transfers to the client only upon receipt of final payment in full, and until then the freelancer retains all rights.
Plutio's verbatim clause: "All intellectual property rights transfer to the client upon receipt of final payment in full. Until final payment is received, the freelancer retains all rights to the work." The mechanism: a client who has not paid does not own the site and cannot legally deploy it. This makes post-delivery non-payment legally untenable. Write "cleared funds" explicitly rather than "paid in full," because ACH and wire transfers can reverse for up to 90 days. The clause lives in the contract; reference it on the invoice as a reminder at billing time.
Kill Fee by Project Phase
If the client cancels mid-project, the kill fee compensates for sunk cost and committed-but-unbilled time. Per ClauseShield's cancellation-clause guide, an escalating schedule calibrated to project phase works better than a flat percentage:
| Project phase | Kill fee (of remaining contract value) |
|---|---|
| Discovery / kickoff | 50% |
| Production / build | 35% |
| Revision / delivery | 25% |
The logic: the deeper into the build, the more has already been invoiced via milestones, so the remaining-value percentage decreases. ClauseShield's milestone-based verbatim alternative: "Client shall pay the full fee for any milestone then in progress, plus twenty-five percent (25%) of aggregate fees for all subsequent milestones." Plutio uses a flatter 20% of remaining value as the lower-end option.
Payment Terms for Web Dev Contracts
The contract sets the payment frame the invoice executes against:
- Deposit: 25% to 50% upfront for new clients, non-negotiable. The deposit is the first filter for serious clients.
- Milestone split: 25/25/50 per Webflow, or 30/40/30 for $5,000 to $25,000 builds. Tie each milestone to acceptance criteria, not calendar dates, so client review delays do not become developer cash-flow problems.
- Net terms: Net 15 is the freelancer-preferred default per Plutio; Net 30 for enterprise clients with procurement workflows per PandaDoc.
- Late fee: 1.5% per month, triple-verified across Contra, Plutio, and the FreelanceDesk payment-terms guide.
Copy-Paste Clause Checklist
Web developer contract scope-protection checklist
Build the full contract with these clauses pre-structured in the free FreelanceDesk contract generator. The companion templates for the engineering professions with comparable scope-creep exposure are in the AI engineer contract guide (eval-acceptance gates) and the broader best free contract templates roundup.
References
- Ignition 2025 Agency Pricing and Cash Flow Report
- 7 Must-Have Clauses for Your Freelance Web Developer Contract, Contra
- How to Create a Freelance Contract, Plutio
- 10 Must-Have Sections in a Web Design Contract, Webflow
- Website Development Agreement Template, PandaDoc
- How to Use Change Orders to Manage Freelance Projects, Alvalyn Creative
- Kill Fees: Getting Paid When Projects Get Cancelled, ClauseShield
- Freelance Web Development Contract Template, Bonsai
