---
title: "What is a SoW (Statement of Work)?"
canonical: https://wavect.io/glossary/sow/
language: en
description: "A signed contract that names a deliverable, a price, and a deadline, and legally binds the vendor to all three."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

ENGAGEMENT

# SoW

Statement of Work

A signed contract that names a deliverable, a price, and a deadline, and legally binds the vendor to all three.

Last reviewed: 2026-05-24 by [Kevin Riedl](/team/kevin-riedl/) [wiki ↗](https://www.wikidata.org/wiki/Q139796365)

A Statement of Work is the document that turns a verbal agreement into a contract. It lists the deliverable in concrete terms (“feature X live on production, passing acceptance criteria A, B, C”), the price, the deadline, and the conditions for sign-off.

In Austrian and German law the corresponding instrument is the Werkvertrag, which is stronger than the English-language SoW: the vendor is legally bound to deliver the work, not just to provide effort, and the customer can withhold payment until the work is accepted. A [Time & Material](/glossary/time-and-material/) contract under the same legal framework is a Dienstvertrag, which only obliges effort. Wavect’s [fixed-price](/glossary/fixed-price/) engagements are Werkvertrag contracts.

Worked example of why the acceptance criteria carry the whole contract: an SoW that says “build the reporting feature, the feature should work well” is unenforceable, because “work well” is an opinion. An SoW that says “endpoint /reports returns the monthly figures for input range R within 200ms under load L, matching values in spec S” is testable, and “done” is no longer a negotiation. The most common founder mistake is signing a vaguely worded SoW to save time at the start, then spending six months arguing about whether a half-working feature counts as delivered. A vendor who resists writing precise acceptance criteria is protecting their right to have that argument later.

The SoW is also the document that prevents scope creep: anything not in it is by definition out of scope and gets handled with a change request. Note the layering, an MSA (Master Services Agreement) covers the legal frame (IP, liability, jurisdiction) once, and many SoWs live under it over time. The honest trade-off is that a tight SoW takes real work to write and feels slow up front, which is exactly the work a paid [discovery-phase](/glossary/discovery-phase/) exists to do. Related: [Fractional CTO Austria](/services/fractional-cto/) explains the Werkvertrag model in practice.

**When this matters in a software project.** The moment money changes hands. The SoW is where “what you are buying” stops being a conversation and becomes enforceable, so it is the single document that decides whether a dispute later is settled by the contract or by who shouts loudest.

**What founders usually get wrong.** They sign a vaguely worded SoW to start faster, then spend months arguing whether a half-working feature counts as delivered. The acceptance criteria carry the whole contract; “should work well” is an opinion, not a deliverable.

**How Wavect handles it.** We write acceptance criteria precise enough to be testable before anyone signs, and we run a paid discovery first so the scope is real. Our [guide to choosing a software agency](/software-development-guide/how-to-choose-a-software-agency/) and the [fixed price vs time and materials guide](/software-development-guide/fixed-price-vs-time-and-materials/) walk the contract decision in plain English.

// FAQ

## FAQs

### How is an SoW different from an MSA?

An MSA (Master Services Agreement) covers the legal frame: IP, liability, payment terms, jurisdiction. An SoW lives under it and names the specific deliverable, price, and deadline. You sign the MSA once and many SoWs over time. Mixing the two into one document is a red flag.

### What kills most SoWs in practice?

Vague acceptance criteria. ‘The feature should work well’ is not enforceable; ’endpoint X returns Y for input Z within 200ms under load A’ is. If a vendor resists writing precise acceptance criteria, they are protecting their right to argue about ‘done’ later.

### Is a Werkvertrag really stronger than a standard SoW?

Under AT/DE law, yes. A Werkvertrag legally binds the vendor to deliver the work, not just to provide effort, and the customer can withhold payment until the work is accepted. An English-language ‘SoW’ without that legal grounding is closer to a strongly-worded promise.

Related terms

- [Fixed-Price](/glossary/fixed-price/)
- [Time & Material](/glossary/time-and-material/)
- [Retainer](/glossary/retainer/)
- [Discovery Phase](/glossary/discovery-phase/)

Related services

- [Custom Software Development](/services/software-development/)

Related case studies

- [Bond Analytics Platform](/case-studies/bond-analytics/)

Related comparisons

- [wavect-vs-staffing-agencies](/compare/wavect-vs-staffing-agencies/)
- [wavect-vs-freelance-platforms](/compare/wavect-vs-freelance-platforms/)

Discussed in articles

- [Software agency proposal teardown: 12 clauses to review](/blog/software-agency-proposal-teardown/)
- [Werkvertrag vs time & material for Austrian SaaS](/blog/werkvertrag-vs-time-material-austrian-saas/)
- [Fixed price vs T&M: scope creep by the numbers](/blog/fixed-price-vs-tm-scope-creep-rates/)

Talk to us

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/glossary/sow/#term",
      "@type": "DefinedTerm",
      "alternateName": [
        "Statement of Work",
        "Werkvertrag"
      ],
      "description": "A signed contract that names a deliverable, a price, and a deadline, and legally binds the vendor to all three.",
      "inDefinedTermSet": "https://wavect.io/glossary/#termset",
      "name": "SoW",
      "termCode": "sow",
      "url": "https://wavect.io/glossary/sow/"
    },
    {
      "@id": "https://wavect.io/glossary/sow/#webpage",
      "@type": "WebPage",
      "about": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "author": {
        "@id": "https://wavect.io/team/kevin-riedl/#person",
        "@type": "Person",
        "name": "Kevin Riedl",
        "url": "https://wavect.io/team/kevin-riedl/"
      },
      "dateModified": "2026-05-24",
      "description": "A signed contract that names a deliverable, a price, and a deadline, and legally binds the vendor to all three.",
      "headline": "SoW",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-05-24",
      "mainEntity": {
        "@id": "https://wavect.io/glossary/sow/#term"
      },
      "mentions": [
        {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        }
      ],
      "name": "SoW",
      "reviewedBy": {
        "@id": "https://wavect.io/team/christof-jori/#person",
        "@type": "Person",
        "name": "Christof Jori",
        "url": "https://wavect.io/team/christof-jori/"
      },
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          ".gls-single__h1",
          ".gls-single__tldr"
        ]
      },
      "url": "https://wavect.io/glossary/sow/"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "item": "https://wavect.io/",
          "name": "Home",
          "position": 1
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/glossary/",
          "name": "Tech, product & engagement glossary",
          "position": 2
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/glossary/sow/",
          "name": "SoW",
          "position": 3
        }
      ]
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "An MSA (Master Services Agreement) covers the legal frame: IP, liability, payment terms, jurisdiction. An SoW lives under it and names the specific deliverable, price, and deadline. You sign the MSA once and many SoWs over time. Mixing the two into one document is a red flag."
      },
      "name": "How is an SoW different from an MSA?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Vague acceptance criteria. 'The feature should work well' is not enforceable; 'endpoint X returns Y for input Z within 200ms under load A' is. If a vendor resists writing precise acceptance criteria, they are protecting their right to argue about 'done' later."
      },
      "name": "What kills most SoWs in practice?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Under AT/DE law, yes. A Werkvertrag legally binds the vendor to deliver the work, not just to provide effort, and the customer can withhold payment until the work is accepted. An English-language 'SoW' without that legal grounding is closer to a strongly-worded promise."
      },
      "name": "Is a Werkvertrag really stronger than a standard SoW?"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
