How to Write a Scope of Work
Most project disputes do not start with bad intentions. They start with an agreement that was not specific enough about what was actually getting built. A scope of work makes the agreement concrete before the work begins, so clients and contractors both know what is being delivered, when, and for how much. Transparency up front is cheaper than a dispute after the fact.
This is what a scope of work looks like in OpenLedger
What to include in a scope of work
A good scope of work does not need to be long. It needs to be specific. Here are the four things every scope of work should cover.
1. Define your deliverables
List every output the project will produce. Be specific about format, quantity, and what done looks like for each item. Vague deliverables invite disagreement: "website" means something different to everyone. "Five-page responsive website with a contact form and CMS" does not. For each deliverable, include the unit type: are you delivering screens, features, endpoints, hours? That unit is what you are pricing and tracking.
2. Set a timeline with milestones
Attach dates to each deliverable, not just a single project end date. Milestone-based timelines give both parties checkpoints to catch drift early, before it compounds into a deadline problem or a billing dispute. A project end date with nothing between it and the start date is not a timeline. It is just a deadline.
3. Define what is out of scope
This is the section most people skip, and it is the one that causes the most problems. If a client might reasonably expect something to be included, write it down as excluded if you are not doing it. "Does not include SEO optimization." "Does not include copywriting." "Does not include hosting setup." Explicit exclusions are not rude; they are protective for both sides.
4. Agree on acceptance criteria
How will both parties know when a deliverable is done? "Client approval" is too vague: approval within how many days, based on what criteria, with how many revision rounds? A brief acceptance clause prevents open-ended revision loops and gives the contractor a clear path to getting paid.
Scope of work templates: Construction Scope of Work · Consulting Scope of Work · Marketing Scope of Work · Software Development Scope of Work
Scope of work vs. statement of work
A scope of work is the part that says what is actually going to get built or delivered: the tasks, the milestones, the boundaries of the project. A statement of work is the bigger document that a scope of work often lives inside, alongside things like pricing, payment terms, and timelines. In everyday use, people say the two almost interchangeably, and that is fine. What actually matters is getting the deliverables written down clearly, however you label the document. That is what this guide, and OpenLedger, are built around.
Build your own scope of work
OpenLedger gives you a live, shareable deliverables ledger, not a static document. Enter your email to get started.
Common mistakes in project scope of work documents
Even experienced contractors repeat the same avoidable mistakes. Here are the ones that cause the most damage.
How payment should tie to a project scope of work
One of the most common structural mistakes in freelance and contractor work is tying payment to a single completion date rather than to individual deliverable milestones. When payment is milestone-based, both parties have aligned incentives: the contractor delivers, the client pays, and the project moves forward. When payment is tied to "project completion," you get disputes about what completion means, scope creep goes uncompensated, and the power balance shifts entirely toward whoever controls sign-off.
The fix is simple: every deliverable in your scope of work should have a price attached to it. Not just a total project budget, but a per-deliverable price that both parties agreed to before the work began. That way, if scope changes, the financial implication is already clear. If work is completed and not paid for, the record is already there.
This is the structure OpenLedger is built around. Every deliverable has a unit, a unit price, and a timeline. The financial agreement is as specific as the creative one, because that is the only version that actually protects both sides.