Web development contract template
The two things a development contract has to settle are when work is finished and who owns the code. This one ties acceptance to written criteria, gives a warranty with a real boundary, and assigns the custom code on final payment while keeping your own libraries yours.
Free to copy and use. Nothing to download, no email required. Replace anything in [SQUARE BRACKETS] with your own details.
Acceptance has to be a test, and silence has to mean something
Tie acceptance to the written criteria in the scope, give a UAT window of [10] business days, and say that the milestone is deemed accepted if the window passes without a written defect report. Without deemed acceptance, an unresponsive client can leave a finished milestone permanently uninvoiced. With it, you have a fair, predictable end to every stage.
Assign the custom code, licence your own toolkit
The client should own what you wrote for them. They should not accidentally own the boilerplate you have carried between twenty projects — so assign the project-specific code and grant a perpetual, royalty-free licence for anything pre-existing that ends up embedded in it. Say clearly that open-source components stay under their own licences, since assigning code you do not own is a promise you cannot keep.
Handover means credentials, and credentials mean a date
Repositories in the client's organisation from day one, secrets in a secret manager, and a written handover of every account at the end. Put it in the contract with a deadline. Developers get dragged back into dead projects for years because they are still the only person who can log in to a DNS panel, and because nobody ever wrote down when that responsibility ended.
Classification, data, and access are local questions
Contractor classification, IP assignment formalities, data-protection duties when you touch personal data, accessibility obligations, and enforceable liability caps all vary by jurisdiction. If this project processes personal data you likely also need a data processing agreement. Have a lawyer in your jurisdiction review this before you rely on it.
The contract template
Copy the whole thing, or select the parts you need. The numbers and dates are examples — change them to yours before sending anything.
Web development contract template
WEB DEVELOPMENT AGREEMENT
Made on [2026-01-10] between:
CLIENT: [Client legal entity name], of [registered address] ("Client")
DEVELOPER: [Your legal name or entity], of [address] ("Developer")
1. THE WORK
1.1 Developer will build the software described in the statement of work
dated [2026-01-08], attached as Schedule A (the "Work").
1.2 Schedule A governs the description of deliverables and acceptance
criteria; this agreement governs everything else.
1.3 Developer will perform the Work with the skill and care expected of
a competent professional developer, following reasonable current
practice for security and maintainability.
2. MILESTONES, FEES, AND PAYMENT
2.1 Total fee: $[15,000.00], across the milestones in Schedule A.
2.2 Each milestone is invoiced on acceptance under clause 3. Invoices
are payable within [30] days.
2.3 Approved change requests are billed at $[110.00] per hour.
2.4 Late payment accrues interest at [1.5]% per month, or the maximum
permitted by law in [jurisdiction] if lower. If an invoice is more
than [14] days overdue, Developer may suspend work and withhold
deployment until it is paid.
2.5 Third-party services — hosting, domains, monitoring, paid libraries
— are Client's cost. Developer will buy them in Client's name where
possible, or bill them at cost with receipts.
3. ACCEPTANCE
3.1 Each milestone is deployed to staging with release notes listing
what is included.
3.2 Client has [10] business days to test against the acceptance
criteria in Schedule A.
3.3 A milestone is accepted when Client confirms in writing, or when the
testing window closes without a written report identifying a
specific criterion that has not been met.
3.4 Defects are graded S1 to S4 as defined in Schedule A. An S4 — the
software doing something the criteria never described — is a change
request under clause 4, not a defect.
3.5 Developer fixes S1–S3 defects reported during the testing window at
no charge, and re-submits for acceptance.
4. CHANGES
4.1 Either party may propose a change. Developer responds with a written
change request stating the estimated hours and schedule impact.
4.2 No work starts until Client approves the change request in writing.
4.3 If an approved estimate will be exceeded by more than [10]%,
Developer stops and seeks re-approval before continuing.
5. CLIENT RESPONSIBILITIES
5.1 Named product owner with authority to accept milestones.
5.2 Credentials, test data, content, and third-party API access by the
dates in Schedule A.
5.3 Testers available within the windows in 3.2.
5.4 Delay by Client moves the schedule day-for-day. Delay beyond [10]
business days may be billed at the hourly rate in 2.3 for
re-familiarisation and re-booking.
6. INTELLECTUAL PROPERTY
6.1 On payment in full for a milestone, Developer assigns to Client all
intellectual property rights in the custom application code written
for that milestone, worldwide and in perpetuity.
6.2 Until payment, Developer owns that code and Client's licence to use
it is limited to internal testing.
6.3 Open-source and third-party components remain under their own
licences. Developer will maintain a list of them and their licences,
and will not include anything whose licence conflicts with Client's
intended use.
6.4 Developer's pre-existing libraries, boilerplate, tooling, and
know-how remain Developer's property. Where any is embedded in the
Work, Client receives a perpetual, worldwide, royalty-free,
non-exclusive licence to use, modify, and host it as part of the
Work — but not to sell it as a standalone product.
6.5 Developer may describe the Project in a portfolio and case study,
and may reuse general techniques and knowledge gained, without
disclosing Client's confidential information or code.
7. SOURCE CONTROL, CREDENTIALS, AND HANDOVER
7.1 All code lives in a repository owned by Client's organisation from
the first commit.
7.2 Secrets are stored in [secret manager], never in source control.
7.3 On final acceptance, and in any event within [10] business days of
termination, Developer transfers or removes its access to all
Client accounts and provides a written handover listing every
service, its owner, and its renewal date.
7.4 After handover, Developer has no responsibility for the operation,
security, or availability of the Work.
8. WARRANTY AND SUPPORT
8.1 For [30] days after production launch, Developer will fix, at no
charge, defects where the Work does not behave as the accepted
criteria describe, on the browsers and devices listed in Schedule A.
8.2 The warranty does not cover: new or changed requirements; content
changes; failures of third-party services or APIs; changes made by
Client or another supplier; environments outside the support matrix;
or problems caused by declining a recommended update.
8.3 After the warranty period, support is available under a separate
agreement, or at $[110.00] per hour with no committed response time.
8.4 Except as stated in 8.1, the Work is provided without further
warranty. Software is not warranted to be error-free.
9. DATA AND SECURITY
9.1 Where Developer processes personal data on Client's behalf, it does
so only on Client's documented instructions and under [the data
processing agreement dated [date]].
9.2 Developer will apply reasonable technical measures — encryption in
transit, access control, tenancy scoping on every query touching
customer data — and will tell Client without undue delay, and in any
event within [48] hours, of any suspected breach.
9.3 Developer deletes its working copies of Client data within [30] days
of handover, except where the law requires retention.
10. TERMINATION
10.1 Either party may terminate on [14] days written notice.
10.2 Either party may terminate immediately for a material breach not
fixed within [10] business days of written notice.
10.3 On termination, Client pays for all work completed to that date and
all committed non-cancellable costs. Intellectual property
transfers only for work paid in full.
10.4 Clause 6 (IP), 7.3–7.4 (handover), 9 (data), 11 (liability), and
12 (general) survive termination.
11. LIABILITY
11.1 Neither party is liable for indirect or consequential loss,
including lost profits, lost revenue, or lost data.
11.2 Developer's total liability under this agreement is limited to the
total fees paid by Client under it.
11.3 Nothing limits liability for death or personal injury caused by
negligence, for fraud, or for anything that cannot lawfully be
limited.
11.4 Developer gives no warranty about traffic, conversion, search
rankings, or any commercial outcome.
12. GENERAL
12.1 Developer is an independent contractor, not an employee, and is
responsible for its own taxes and insurance.
12.2 Confidentiality: each party protects the other's confidential
information for [3] years after termination.
12.3 Governing law: [jurisdiction]. Exclusive jurisdiction of its
courts.
12.4 Changes must be in writing; email is acceptable for change
requests under clause 4.
12.5 This agreement plus Schedule A is the whole agreement.
12.6 If any clause is unenforceable, the rest stays in force.
CLIENT DEVELOPER
Name: ______________________ Name: ______________________
Title: _____________________ Title: _____________________
Signature: _________________ Signature: _________________
Date: ______________________ Date: ______________________
SCHEDULE A — STATEMENT OF WORK
[Attach the signed SOW: user stories with acceptance criteria,
exclusions, browser support matrix, environments, milestones, defect
severities, and the payment schedule.]Generate the agreement from your project in PaloWorks
On Pro, PaloWorks generates a project agreement with the client, project, deliverables, revision rounds, timeline, and fee filled in from your scope — from its default agreement or one of 5 starter templates (design retainer, web & app development project, photography shoot, consulting engagement, mutual nda). You edit it as plain text before sending, and your client signs it online. It does not import this page's wording: paste in any clause you want to keep.
Free for one client and three active projects. Pro is $19/mo for unlimited clients and projects.
Use this with
Invoice
Web development invoice template
A development invoice built around milestones, hourly overage, pass-through service costs, and a defined warranty window.
Scope of work
Software development scope of work
A development SOW with user stories, environments, a browser support matrix, UAT window, defect severities, and a defined warranty.
Contract
Freelance contract template
A plain-English freelance agreement covering payment, revisions, IP assignment on final payment, kill fee, termination, and liability limits.
Related reading
Compare
PaloWorks vs HoneyBook
An honest comparison. HoneyBook has the mature CRM, the template library, and built-in scheduling; PaloWorks is narrower, pays into your own Stripe account, and counts revisions and change orders.
Compare
PaloWorks vs Bonsai
An honest comparison for freelancers. Bonsai carries the accounting and tax side; PaloWorks counts revision rounds, prices change orders, and pays into your own Stripe account.
Built for
Change orders and invoices for developers
Turn "it's just one small change" into a written, priced change order agreed before you cut the branch.
Free tool
Late Payment Fee Calculator for Overdue Invoices
Invoice amount, due date, and your annual rate in — the fee accrued so far out.
Article
Send the invoice the day the work is done
How to send and follow up on freelance invoices so clients pay on time: put the due date in the scope, send the bill the day that slice of work is done, and use a three-note cadence instead of “just circling back.”