42. Design E-commerce Cart and Checkout (Amazon / Flipkart)
1
The interview prompt2
42.1 What do you ask first?3
42.2 How big is this, really?4
42.3 What are the doors?5
42.4 What do we store?6
42.5 What does the whole system look like?7
42.6 How is the cart stored?8
42.7 How do you reserve inventory?9
42.8 How do you make order creation idempotent?10
42.9 How does the payment hand-off work?11
42.10 How does the checkout saga work?12
42.11 What would you say in the last five minutes?13
Score yourself14
Variations to practise15
Sources16
Code lab42. Design E-commerce Cart and Checkout (Amazon / Flipkart)
42.3 What are the doors?
3 min read+10 XP
Step 3: API and data model (10 minutes)
PUT /v1/cart/items/{sku} { "qty": 2 } → 200 cart
POST /v1/cart/merge (at login: guest cart id) → 200 cart
POST /v1/checkout/preview → { "items": [...], "price_changes": [...], "total": 1248, "offers": [...] }
POST /v1/orders Idempotency-Key: cart-77-attempt-1
body: { "address_id": "a1", "payment_method": "upi", "expected_total": 1248 }
returns: 201 { "order_id": "o42", "status": "payment_pending", "payment": { "redirect": "..." } }
GET /v1/orders/{id} → { "status": "confirmed" | "payment_pending" | ... }
POST /webhooks/payments (from the payment gateway, signed, Chapter 24)
expected_total lets the server refuse to charge a different amount than the shopper saw.