What's actually inside a fixed-fee statement of work.

A labeled diagram of a fixed-fee SOW — scope boundary, deliverables, acceptance criteria, the change-control valve, and the column we put excluded work in. Why fixing the price quietly fixes the incentives.

Most arguments about software contracts are really arguments about who absorbs uncertainty. Hourly billing hands all of it to the client. A fixed fee hands it to us — on purpose. Here is the document that makes that trade legible, drawn out part by part.

SCOPE BOUNDARY 01 / DELIVERABLES What we hand you Named artifacts, not "effort." Each is shippable. 02 / ACCEPTANCE How we both know Pass/fail tests written before the work starts. Fixed fee + end date The risk of overrun sits with us, not you. CHANGE-CONTROL VALVE 03 / EXPLICITLY EXCLUDED — Net-new scope — Third-party license fees — Migrations not named above — "While you're in there…" — Production support post-handoff Excluded is not refused. It is a new line item through the valve.
Left of the dashed line is what we owe. Right is what we don't — until a change order moves it across.

The scope boundary is the whole document.

Everything else hangs off one dashed line. Inside it: the work we have committed to deliver for a fixed number. Outside it: everything else in the world. People assume the hard part of a SOW is describing the work. It isn't. The hard part is describing the work's edge precisely enough that both sides recognize it when they hit it.

Deliverables are nouns, not effort.

A deliverable is a thing you can point at — a migrated dataset, a deployed service, a signed-off design. We do not list "two weeks of backend work." Effort is our problem to estimate. Yours is to receive something that exists and works.

Acceptance criteria are written before, not after.

We agree on the pass/fail test up front, while nobody is under deadline pressure and nobody is annoyed yet. Acceptance written after the build is just a negotiation with extra steps.

A fixed fee doesn't make us faster. It makes us honest about what "done" means, because we wrote the definition down before we knew how hard it would be.

The change-control valve, and the excluded column.

New requests are welcome. They go through the valve as a fresh line item with its own fixed price — not absorbed silently into a budget that was never sized for them. The excluded column exists so "excluded" never gets confused with "refused." It is simply work that hasn't been priced yet.

Why fixing the price re-prices the incentives.

  • Hourly rewards the slowest path. Fixed fee rewards the shortest path to acceptance.
  • Scope creep stops being a quiet margin leak and becomes a visible, pre-agreed line item.
  • We are paid to ship the deliverable, not to be present. Boring, finished, signed-off — that's the win condition.

— Suhail Abidi. Walnut Creek, CA. June 2026.

All posts Read next: The whiteboard wall after a two-day discovery sprint

Comments