10 Acceptance Criteria Examples (With Templates) for Product Teams
Acceptance criteria make or break software delivery. Here are 10 real-world examples with templates, covering different feature types and acceptance criteria formats.
What Are Acceptance Criteria?
Acceptance criteria are the specific conditions that a software feature must satisfy to be considered complete and acceptable by the product owner or customer. They're written alongside user stories, and they transform a vague description of a feature into a concrete, testable definition of "done."
Without acceptance criteria, "done" means something different to every person on the team. To the developer, done might mean the code works on their machine. To QA, done means it passed all test cases. To the product manager, done means it behaves exactly as envisioned. Acceptance criteria align all three before development even starts.
Why Acceptance Criteria Matter
Shared Understanding Before Development Starts
The best time to discover a misunderstanding is before a developer spends three days building in the wrong direction. Acceptance criteria force the conversation about edge cases, error states, and exact behavior to happen at the planning stage, not during code review.
Testability by Design
Every acceptance criterion should be directly testable. If you can't write a test for it — automated or manual — it's probably not specific enough. Good acceptance criteria make QA's job significantly easier because the test cases are already implied by the criteria themselves.
A Clear Definition of Done
Acceptance criteria prevent scope creep in both directions. They stop developers from under-delivering ("I thought that was out of scope") and over-delivering ("I added a few extra features while I was in there"). When all criteria pass, the story is done — full stop.
Two Formats for Writing Acceptance Criteria
There are two widely used formats for acceptance criteria. Both are valid, and many teams use them interchangeably depending on the complexity of the feature.
Format 1: Given/When/Then (Gherkin Style)
This format, popularized by Behavior-Driven Development (BDD), describes behavior in terms of a starting state, a triggering action, and an expected outcome. It's particularly useful for complex user interactions and flows that need to be automated.
Given [some context or precondition]
When [some action is taken]
Then [some expected result occurs]
Format 2: Checklist Style
A simpler bulleted list of conditions that must all be true for the feature to be accepted. This works well for features with many independent requirements that don't follow a linear flow. It's easier to read at a glance and works well in tools like Jira or Linear.
10 Real-World Acceptance Criteria Examples
Below are 10 examples covering a range of common feature types. Each example includes both the Given/When/Then format and the checklist format, so you can choose what works best for your team.
1. User Login
User Story: As a registered user, I want to log in with my email and password so that I can access my account.
Given/When/Then
Given a registered user with a valid email and password
When they submit the login form with correct credentials
Then they are redirected to their dashboard within 2 seconds
Given a registered user
When they submit with an incorrect password
Then an error message "Invalid email or password" is shown and the account is locked after 5 failed attempts
Checklist
- Login succeeds with valid email and password
- Login fails with incorrect password; error message shown
- Account locks after 5 consecutive failed login attempts
- "Forgot password" link is visible and functional
- Login form is accessible via keyboard navigation
- Session persists for 30 days if "Remember me" is checked
2. Search Feature
User Story: As a user, I want to search for products by keyword so that I can find items quickly without browsing all categories.
Given/When/Then
Given a user on any page of the application
When they type a keyword in the search bar and press Enter
Then results matching the keyword appear within 500ms, sorted by relevance
Given a user who searches for a term with no matching results
When the results page loads
Then a "No results found" message is shown with suggested alternative searches
Checklist
- Search results appear in under 500ms for typical queries
- Results are sorted by relevance by default
- Search is case-insensitive
- Partial matches are included in results
- Empty search query shows all products or is disabled
- Zero-result state shows helpful messaging and alternatives
- Search history is retained for the session
3. Payment Processing
User Story: As a customer, I want to pay for my order with a credit card so that I can complete my purchase securely.
Given/When/Then
Given a customer at checkout with items in their cart
When they enter valid card details and click "Pay Now"
Then a payment is processed, an order confirmation is shown, and a confirmation email is sent within 1 minute
Given a customer whose card is declined
When payment fails
Then an error message specifies the reason (insufficient funds, expired card) and the cart is preserved
Checklist
- Accepts Visa, Mastercard, Amex, and Discover
- Card number input validates format in real time
- CVV field is masked
- Successful payment shows order confirmation number
- Confirmation email sent within 60 seconds of successful payment
- Declined card shows specific error; cart is not cleared
- Payment form is PCI DSS compliant (handled via Stripe or equivalent)
- Double-submission is prevented (button disabled after first click)
4. Email Notifications
User Story: As a user, I want to receive email notifications for account activity so that I stay informed about important events.
Checklist
- Email sent within 2 minutes of triggering event
- Email renders correctly on Gmail, Outlook, and Apple Mail
- Email renders correctly on mobile devices
- Unsubscribe link is present and functional in all emails
- Notification preferences can be managed in account settings
- Transactional emails (password reset, order confirmation) cannot be unsubscribed from
- Emails do not contain sensitive data such as passwords or full credit card numbers
5. File Upload
User Story: As a user, I want to upload documents to my account so that I can store and share files with my team.
Given/When/Then
Given a user on the documents page
When they select a valid file (PDF, DOCX, PNG under 25MB) and click Upload
Then the file uploads with a progress bar visible, and appears in their document list upon completion
Given a user who attempts to upload a file over 25MB
When they select the file
Then an error message appears before upload begins explaining the size limit
Checklist
- Accepts PDF, DOCX, XLSX, PNG, JPG, and ZIP files
- Maximum file size is 25MB; larger files show an error before upload
- Upload progress is shown with a progress bar
- Failed uploads show a retry option
- Duplicate file names are handled gracefully (append number or prompt user)
- Uploaded file is accessible immediately after upload completes
- Files are virus-scanned before being made available
6. Data Export
User Story: As an admin, I want to export user data as a CSV so that I can analyze it in spreadsheet tools.
Checklist
- Export produces a valid UTF-8 encoded CSV file
- All visible table columns are included in the export
- Date format in export is ISO 8601 (YYYY-MM-DD)
- Export respects active filters (exporting filtered results, not all data)
- Large exports (>10,000 rows) are processed asynchronously and emailed when ready
- Download starts automatically or a download link is clearly visible
- Export is only available to users with Admin or Manager roles
7. User Profile Editing
User Story: As a user, I want to edit my profile information so that my account details stay current.
Given/When/Then
Given a logged-in user on the profile settings page
When they update their display name and click Save
Then the new name is reflected immediately across the app without requiring a page refresh
Given a user who tries to save a profile with an invalid email format
When they click Save
Then inline validation shows an error on the email field and save is prevented
Checklist
- User can update: display name, email, phone number, and profile photo
- Email change requires re-verification via confirmation email
- Password change requires current password confirmation
- Invalid inputs show inline error messages before form submission
- Successful save shows a confirmation toast notification
- Unsaved changes prompt a confirmation dialog if user navigates away
- Profile photo accepts JPG and PNG, max 5MB, and is cropped to square
8. Permission System
User Story: As an admin, I want to assign roles to team members so that I can control access to sensitive features.
Checklist
- Three roles exist: Admin, Manager, and Viewer
- Admins can assign and remove roles for any other user
- Managers cannot change Admin roles
- Viewers have read-only access to all non-admin pages
- Role changes take effect immediately without requiring the affected user to log out
- All role change actions are logged in the audit trail with timestamp and acting admin
- The system must have at least one Admin at all times; the last Admin cannot be demoted
9. API Rate Limiting
User Story: As a platform, I need to enforce API rate limits so that no single client can degrade performance for others.
Given/When/Then
Given an API client that has made 1,000 requests in the past 60 seconds
When they make an additional request
Then the API returns HTTP 429 with a Retry-After header indicating when the limit resets
Given an API client within their rate limit
When they make a valid API request
Then X-RateLimit-Remaining and X-RateLimit-Reset headers are included in all responses
Checklist
- Default limit is 1,000 requests per minute per API key
- Rate limit is enforced per API key, not per IP address
- Exceeded limit returns HTTP 429 with a Retry-After header
- All responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers
- Enterprise tier has a configurable rate limit up to 10,000 requests per minute
- Rate limit counters reset on a sliding 60-second window
10. Mobile Responsiveness
User Story: As a mobile user, I want the application to work well on my phone so that I can use it without a desktop computer.
Checklist
- All pages render correctly on viewports from 375px (iPhone SE) to 1440px (desktop)
- No horizontal scrolling occurs on any page at mobile viewport widths
- Touch targets (buttons, links) are at least 44x44px
- Text is legible without zooming (minimum 16px base font size)
- Navigation collapses to a hamburger menu on mobile
- All forms are usable with a mobile keyboard (correct input types, no layout shifts)
- Core Web Vitals pass on mobile: LCP <2.5s, CLS <0.1, FID <100ms
- Tested and functional on iOS Safari and Android Chrome
Tips for Writing Great Acceptance Criteria
Write Them Before Development Starts
Acceptance criteria written after development are just test cases written in a nicer format. Their real value is in forcing conversations before a single line of code is written. Write them during backlog refinement, not during QA.
Include the Unhappy Path
Every feature has a happy path (user does the right thing) and unhappy paths (user enters bad data, network fails, permissions are wrong). Make sure your acceptance criteria cover both. Most bugs live in the unhappy paths that nobody wrote criteria for.
Be Specific About Numbers
"The page should load quickly" is not an acceptance criterion. "The page should load in under 2 seconds on a 4G connection" is. Wherever you use relative terms like "fast," "large," or "soon," replace them with specific, measurable values.
One Condition Per Criterion
Avoid acceptance criteria with "and" that bundle multiple conditions. "The user can log in and the session lasts 30 days and the login is logged in the audit trail" is three criteria, not one. Keep each criterion to a single testable condition.
Get Developer and QA Sign-Off
Before a story is pulled into a sprint, the developer who will build it and the QA engineer who will test it should both read and agree to the acceptance criteria. If either party has questions, that's a sign the criteria need more work — not that the story should move forward anyway.
Clearly
Stop writing requirements from scratch
Generate a complete BRD or PRD in 15 minutes. AI-guided, structured, export-ready.
Start Free — No Credit Card