# Design an order management system: system design interview question

> Order progress across services: repeated requests, delayed results, stock expiry, partial failures, and cancellation races.

Source: https://sysround.com/questions/design-order-management-system
Updated: 2026-11-05


Difficulty: hard. Levels: Senior, Staff+.

## How the interviewer opens it

"Design an order management system for an online store. Customers place orders, view their progress, and request cancellation before shipment."

## What to clarify first

- Scale
- Read and write mix
- Order contents
- Latency
- Correctness and durability
- Repeated placement
- External service behavior
- Stock lifetime
- Cancellation
- Region and exclusions

## Scope of a strong answer

Core requirements:

- Place an order without duplicate creation
- Read the current order status
- Coordinate stock, payment, and fulfillment
- Request cancellation and report its final result

Usually out of scope:

- Cart, price, tax, and discount calculations
- Payment processor and warehouse internals
- Returns, exchanges, and partial shipments
- Concurrent writes across multiple regions
- Historical archive design

## What interviewers probe

### Repeated requests

A lost response makes a successful placement look like a failure. Concurrent retries must identify the same order without repeating external effects.

### Order lifecycle correctness

Several services report independent facts. Late results and concurrent workers must not erase newer decisions or permit invalid order changes.

### Progress across services

A worker cannot atomically commit an order change and an external effect. Stock can expire while the payment result remains unknown.

### Cancellation and shipment

The order service cannot stop shipment through a local status change. Fulfillment must settle the race between cancellation and physical dispatch.

## Common mistakes

- Treat every order step as one synchronous transaction across all services.
- Prevent duplicate messages but ignore repeated client requests.
- Treat message arrival order as the authority for order status.
- Fulfill an order after its stock reservation expires.
- Report cancellation success before fulfillment guarantees that shipment cannot occur.
- Treat a timeout as failure or assume compensation always succeeds.

## The bar by level

- **Senior:** Makes progress durable and closes database-to-queue gaps. Handles concurrent changes, unknown payments, stock expiry, and cancellation races. Defines stock commitment and terminal failure cleanup.
- **Staff+:** Defines service contracts and identifies promises that those contracts cannot support. Plans backlog recovery and reconciliation within retention limits. Preserves correctness during regional failover.

Practice this question with an AI interviewer: https://sysround.com/practice/new?problem=order-management


---
SysRound (https://sysround.com) is an AI practice tool for system design interviews. It has a voice or typed AI interviewer and a shared whiteboard. At the end, you get feedback on each skill and a model answer. The AI feedback can be wrong.
