How to write a software requirements document (with template)
A clear requirements document gets you accurate quotes, fewer surprises and software that fits. Here is how to write one, section by section, with a free template.
Ask three software companies to quote for "an app to manage our orders" and you will get three very different numbers. That is not because anyone is being dishonest. Each one is guessing what you mean. A software requirements document removes the guessing. It turns the picture in your head into something a development team can estimate, design and build against. You don't need to be technical to write a good one. You need to be clear about your business.
Why a requirements document matters
A requirements document does three jobs at once:
- It gets you comparable quotes. Vendors estimate the same scope, so you can compare price and approach fairly.
- It surfaces decisions early. Writing down "what happens when a customer cancels a part-shipped order?" forces an answer before it becomes an expensive change.
- It becomes the reference during the project. When there is a disagreement about what was promised, the document settles it.
It matters most on fixed-price work, where the scope sets the price. If you are still deciding on a contract model, see our comparison of fixed price, time and materials and dedicated teams.
Before you write: gather the right inputs
Spend a few days collecting material before you start typing. The best requirements come from the people who do the work, not just the person sponsoring the project.
- Talk to each type of user. Sales, accounts, warehouse, field staff and managers all see the process differently.
- Collect your current tools. Spreadsheets, paper forms, printed reports and email templates show what data you really use.
- Walk through a real transaction. Follow one order, job or service call from start to finish and note every step and hand-off.
- List the pain points. Double entry, missed follow-ups, stock mismatches, slow month-end. These show where the value is.
- Note the exceptions. Partial deliveries, returns, credit holds, approvals. Exceptions are where most of the complexity hides.
The template, section by section
Use the template below as your structure. Not every project needs every section, but working through each one will catch most of the gaps that cause trouble later.
| # | Section | What to include | Example prompt |
|---|---|---|---|
| 1 | Purpose and background | The business problem, why now, and what success looks like. | "We lose track of orders between sales and dispatch, causing late deliveries." |
| 2 | Goals and measures | Three to five outcomes you can check after go-live. | "Dispatch can see every confirmed order the same day it is approved." |
| 3 | Scope and out of scope | What the system will cover, and what it explicitly will not. | "Payroll is out of scope; we keep our existing payroll tool." |
| 4 | Users and roles | Each type of user, roughly how many, and what they can see or do. | "Sales reps see only their own customers; managers see all." |
| 5 | Current process | How the work happens today, step by step, including tools used. | "Orders arrive by phone and email and are typed into a shared spreadsheet." |
| 6 | Functional requirements | What users must be able to do, grouped by module or workflow, each with a priority. | "A sales rep can convert an accepted quotation into an order in one step." |
| 7 | Business rules | Calculations, approvals, validations and limits. | "Orders above the customer's credit limit need manager approval." |
| 8 | Data and records | The main records, their key fields, and any existing data to migrate. | "Customer: name, tax ID, billing and delivery addresses, credit limit." |
| 9 | Reports and dashboards | Each report, who uses it, how often, and the filters needed. | "Daily pending dispatch report by branch, exported to Excel." |
| 10 | Integrations | Other systems to connect, which direction data flows, and how often. | "Send approved invoices to our accounting software nightly." |
| 11 | Non-functional requirements | Devices, browsers, offline use, performance, security, availability, languages. | "Field staff must record deliveries without mobile signal and sync later." |
| 12 | Constraints and assumptions | Budget range, deadlines, hosting preferences, regulations, existing licenses. | "Must go live before the new financial year." |
| 13 | Acceptance criteria | How you will test and sign off each major feature. | "Ten real orders processed end to end without using the spreadsheet." |
| 14 | Open questions | Decisions not yet made, with an owner for each. | "Do we need customer self-service in phase one? Owner: Sales Head." |
How to write good functional requirements
Section 6 is the heart of the document, and the one most often written badly. A few habits make a large difference.
Write from the user’s point of view
A simple pattern works well: "As a [role], I need to [action] so that [reason]." For example: "As a warehouse supervisor, I need to see orders ready for picking, sorted by delivery date, so that urgent orders leave first." The reason helps the developer suggest a better solution than the one you first imagined.
Be specific and testable
"The system should be fast and easy to use" cannot be tested. "The order list loads within a few seconds for a user with 5,000 open orders" can. Replace adjectives with examples, numbers or rules wherever you can.
Prioritize everything
Label each requirement so everyone knows what is essential. A common method is MoSCoW:
- Must have: the system is not usable without it.
- Should have: important, but there is a workaround for launch.
- Could have: valuable if time and budget allow.
- Won't have (this time): agreed to leave for a later phase.
Prioritizing is the single best way to control cost. It also helps if you are planning a first release; our guide on building an MVP goes deeper on what to cut.
Describe the exceptions
The "happy path" is usually easy. What happens when a customer rejects half a delivery, a payment bounces, or a technician cannot complete a job? Write those cases down. They often take as much effort as the main flow.
Show, don’t just tell
Attach sample documents: a current invoice, a delivery note, a report you print every week, a rough sketch of a screen. A photo of a whiteboard is better than nothing. Real examples answer dozens of questions at once.
Common mistakes to avoid
- Describing a solution instead of the need. "Add a dropdown with 40 options" is a design choice. "Staff must record the reason for every return" is a requirement.
- Copying a competitor's feature list. Their features fit their business. Start from your own processes.
- Leaving out reports. Reports drive the data structure. Adding them late can mean rework.
- Forgetting data migration. Moving years of customers, items and balances from old systems is real work and needs planning.
- Writing it alone. A document written only by management often misses how the work really happens on the floor.
- Treating it as frozen. Requirements change as you learn. Agree how changes will be handled rather than pretending they won't happen.
A quick quality checklist
Before you send the document to vendors, check that:
- Someone outside the project can understand the business problem from page one.
- Every user role is listed, with what they can see and do.
- Every functional requirement has a priority.
- The main business rules and approval limits are written down.
- Each report has an owner and a frequency.
- Every integration names the other system and the direction of data.
- Out-of-scope items are listed explicitly.
- Open questions have an owner and a date.
Our take
You don't need a perfect document to start a conversation with a development partner. A clear problem statement, a list of users, your current spreadsheets and your top ten must-haves is often enough for a first meeting. A good partner will then help you fill the gaps through workshops and questions, and turn your business language into technical specifications. That is how we start most of our custom software and ERP projects.
If you have a draft, even a rough one, send it to us. We'll review it, point out what is missing, and tell you what a realistic scope and timeline look like.