Costs, Hiring & Planning
How to Write a Software Requirements Document (With Template)
Updated 12 July 2026 · Tech Box
Quick answer
A software requirements document describes the problem, users, and what the system must do: start with goals and success metrics, define user roles, write functional requirements as user stories with acceptance criteria, list integrations and non-functional requirements (performance, security), and explicitly state what is out of scope.
The requirements document is the cheapest place to fix a misunderstanding — every ambiguity you resolve on paper costs 10–100x more to resolve in code. Whether you call it an SRS, a product brief, or an RFP, this guide shows what to include so agencies can quote accurately and your team can hold delivery accountable.
Step by step
- 1
State the problem and business goal
One paragraph: who has what problem, what the software should change, and how you will measure success (time saved, conversion, revenue, error reduction). Every scoping decision downstream refers back to this.
- 2
Define user roles and their goals
List each role (customer, staff, admin, partner) with the top tasks each must accomplish. Roles drive permissions, views, and testing — they are a bigger cost driver than screen count.
- 3
Write functional requirements as user stories
Format: 'As a [role], I can [action] so that [outcome]', each with 2–5 acceptance criteria. 'As a patient, I can book an appointment slot so that I don't need to call' beats 'the system shall support booking'.
- 4
List integrations and data sources
Name every system the software must connect to — payment providers, CRM, ERP, legacy databases, government APIs — and who controls access to each. Integrations are the most commonly underestimated cost item.
- 5
Specify non-functional requirements
Performance expectations, device and browser support, accessibility, uptime, data protection (GDPR/HIPAA where relevant), and expected user volumes. These shape architecture and cannot be bolted on later.
- 6
Declare what is out of scope
The out-of-scope list prevents most disputes: name the features, platforms, and migrations you are explicitly not buying in this phase.
- 7
Prioritize with MoSCoW
Tag each requirement Must / Should / Could / Won't (this phase). This lets a partner propose a phased plan and gives you levers when budget or timeline tightens.
A one-page template you can copy
For most SMB projects, one page per area is enough:
- 1. Problem & goal — the paragraph and the success metric
- 2. Users & roles — table of roles and top tasks
- 3. Functional requirements — user stories with acceptance criteria, MoSCoW-tagged
- 4. Integrations — systems, owners, API availability
- 5. Non-functional — performance, security, compliance, devices
- 6. Out of scope — explicit exclusions
- 7. Constraints — budget range, deadline, existing tech stack
Common mistakes that produce bad quotes
Describing solutions instead of problems ('add a dropdown' instead of 'staff must assign a driver in under 10 seconds'), leaving out roles and permissions, omitting reporting needs (reports are features too), and hiding the budget range. Agencies scope to fit budgets — hiding yours produces proposals you can't use.
Send us your draft — or let us write it with you
Tech Box runs structured discovery workshops that turn a rough idea into a requirements document with user stories, acceptance criteria, and a phased delivery plan — a document you can take to any vendor, not just us.
Already have a draft? Send it over and we will return a scoped estimate plus the questions a serious partner should be asking about it.
Frequently asked questions
What is the difference between an SRS and a product brief?
A product brief describes the problem, users, and goals in 1–2 pages; an SRS (software requirements specification) adds detailed functional and non-functional requirements with acceptance criteria. Start with the brief — a good agency helps you develop the SRS in discovery.
How detailed should requirements be before contacting an agency?
One page minimum: problem, goal, roles, must-have features, integrations, budget range, and deadline. That is enough for comparable ballpark proposals; full detail emerges in a discovery phase.
Should I include a budget in my requirements document?
Yes, at least a range. Scope is elastic — agencies design proposals to fit budgets. Hiding the budget produces proposals that are too big, too small, or padded with guesswork.
What are acceptance criteria?
Testable conditions that define when a requirement is done — e.g., 'booking confirmation email arrives within 60 seconds'. They turn vague features into verifiable deliverables and prevent end-of-project disputes.