How to Build a Restaurant Online Ordering System (2026)

App DevelopmentJun 9, 2026 · 9 min read

A restaurant online ordering system includes a digital menu with modifier groups, ordering flow for pickup and delivery, payment, and a kitchen display system (KDS). RaftLabs builds these platforms in 12-16 weeks for $90K-$160K. At $30K/month in online orders, a $120K build pays back in 20 months by cutting DoorDash's 20% commission.

Key Takeaways

  • DoorDash charges 15-30% commission. At $100K/month in delivery orders, that is $15K-$30K/month going to a third party. A direct ordering system costing $120K recoups in as little as 6 months.
  • The kitchen display system (KDS) is not optional for QSR. It is what prevents orders from getting lost during a dinner rush.
  • The hardest engineering problem is real-time ETA feedback: kitchen load must update customer-facing wait times every 2-5 minutes or customers wait longer than promised.
  • POS integration (Toast, Square, Clover) is a Phase 2 project. For MVP, the order management dashboard acts as the POS terminal for online orders.
  • At 5 or more locations, custom development beats ChowNow ($149-$229/month) on both economics and control. You own the customer data and the loyalty layer.

DoorDash charges 15-30% per order. A restaurant doing $100K/month in delivery pays $15K-$30K/month to a third party that owns the customer relationship, the data, and the repeat purchase channel.

According to Bloomberg Second Measure, DoorDash held 67% of the US food delivery market in 2024. Restaurants using it exclusively have no path to the customer after the order. They can't run loyalty programs, retarget purchasers, or even email the person who just spent $40.

A direct ordering platform costs $90K-$160K to build. At $100K/month in online orders with a 20% commission rate, you recoup the build cost in 6 months. The math favors building at scale.

"When a restaurant relies entirely on third-party marketplaces, they're essentially renting their customers. The moment you have a direct channel, you have the data to know who's ordering twice a week and who hasn't returned in 60 days." -- Hudson Riehle, Senior Vice President of Research, National Restaurant Association

What "restaurant online ordering system" actually means

This is not an app that replaces DoorDash's logistics network. It is a platform that replaces DoorDash's customer interface. You still need delivery drivers (your own, or via white-label delivery APIs like DoorDash Drive or Relay). What you own is the customer relationship, the menu data, the order history, and the loyalty program.

The buyers for a custom-built system are:

  • Restaurant groups and chains paying 15-30% commissions who have the order volume to justify the build cost

  • Ghost kitchen operators building their own brand identity without a physical storefront

  • QSR franchises that need multi-location management with centralized menu control and per-location overrides

  • Dark kitchens launching a direct-to-consumer channel for the first time

A single-location independent restaurant with $10K/month in delivery orders is better served by ChowNow or Square Online. The economics shift once you are running multiple locations or order volumes above $50K/month.

Core features: MVP vs. full product

The National Restaurant Association's 2024 State of the Industry report found that 68% of consumers say ordering directly from a restaurant's website or app is their preferred method when the option is available. Most operators simply haven't built the channel.

FeatureMVPFull Product
Digital menu with modifier groupsYesYes
Ordering flow (pickup and delivery)YesYes
Payment (card, Apple Pay, Google Pay)YesYes
Order management dashboard for kitchen/staffYesYes
Basic order historyYesYes
Real-time kitchen display system (KDS)YesYes
Estimated delivery time (ETA) engineYesYes
Loyalty and rewards programNoYes
Email and SMS marketingNoYes
Table QR code ordering (dine-in)NoYes
Third-party delivery driver integrationNoYes
Multi-location managementNoYes
Online catering ordersNoYes
POS integration (Toast, Square, Clover)NoPhase 2

The KDS belongs in the MVP column even though it feels like an advanced feature. For QSR operations, the KDS is what prevents orders from getting lost during a dinner rush. Without it, staff are reading printed tickets or juggling email notifications. That breaks at volume.

The architecture

Menu data model is the foundation everything else rests on. The structure is: categories contain items. Items belong to modifier groups. Each modifier group has a minimum and maximum selection count. "Choose a size" is exactly 1. "Add toppings" is 0-5. Items have availability windows (breakfast items available before 11am). Items can be marked 86'd (out of stock) in real time by kitchen staff.

Get the modifier group schema right early. Changing it after launch requires a data migration and breaks existing order history.

Order flow works like this: customer selects items, picks up or delivery, chooses a time slot (ASAP or scheduled future time), enters payment. Payment processes. Order goes to the kitchen immediately. Kitchen marks items ready. For delivery: driver is dispatched. For pickup: customer gets a notification when the order is ready.

Kitchen display system uses a WebSocket connection from the order management backend to kitchen tablets. Orders appear as cards. Staff marks each card started, then ready. Color coding: green for on time, yellow for approaching the target window, red for late. The KDS is not a nice-to-have for any restaurant doing more than 30 orders per hour. It is the control layer.

Delivery ETA engine: ETA equals prep time plus delivery travel time. Prep time is category-specific and set per menu category (burgers: 12 minutes, pizza: 18 minutes). Travel time from Google Maps Distance Matrix API using the restaurant address and customer delivery address. The system sends SMS updates at three moments: order confirmed, order ready, driver en route.

The ETA engine must also do something harder. More on that below.

Payment uses Stripe Elements for card input on web. Apple Pay and Google Pay for mobile web. Store payment methods for repeat customers via Stripe PaymentMethod. Tips are offered as flat amounts or percentages. Always validate tip amounts server-side before charging. Never trust client-submitted totals.

POS integration is genuinely complex. Toast has a documented API. Square Restaurants supports webhook-based integration. Clover is more limited and changes frequently. For MVP, skip it. The order management dashboard is the POS terminal for online orders. Staff see the same orders on screen that the KDS shows in the kitchen. Full POS integration belongs in Phase 2 after you have proven the direct ordering channel works.

Multi-location management: each location gets its own menu (inheriting from a brand template, with per-location overrides for items and prices), its own hours, its own delivery radius, and its own KDS instance. Centralized reporting shows order volume, revenue, and popular items across all locations. Route by subdomain (location.yourrestaurant.com) or URL parameter (/order?location=downtown).

The hardest technical challenge

Research from Cornell's Center for Hospitality Research found that order accuracy drops 15-22% during peak periods at restaurants without a structured kitchen display system. That accuracy drop directly correlates with 1-star reviews and chargeback rates.

Real-time order routing under kitchen load.

An order placed at 7:02pm with a 45-minute estimated delivery must reach the kitchen with enough time to prepare and deliver by 7:47pm. That part is straightforward.

The hard part: at 7:02pm, if the kitchen already has a backlog of 20 orders, the real wait time is 65 minutes, not 45. The system needs to know the kitchen is backed up and add 20 minutes to ETA automatically. Showing the customer 45 minutes when the actual wait is 65 destroys trust and generates chargebacks.

The solution is a feedback loop: poll kitchen completion rates every 2-5 minutes. Track average time from order received to order ready over rolling 15-minute windows. Compare current backlog against that average. When backlog exceeds normal capacity, add a buffer to all new ETA calculations. When kitchen catches up, reduce the buffer.

This requires a small background job running continuously. It adjusts ETA dynamically, not just at order placement. Customers see updated times. Kitchen staff see a realistic target.

Get this wrong and you have two failure modes: customers wait longer than promised, or the kitchen drowns trying to hit impossible targets.

Build timeline and cost

MVP (web ordering, KDS, pickup and delivery, ETA engine): 12-16 weeks, $90K-$160K.

Full platform (loyalty, dine-in QR ordering, multi-location management, POS integration, delivery driver API): 20-26 weeks, $200K-$350K.

Team composition for MVP: 1 product lead, 2 backend engineers, 1 frontend engineer, 1 QA. Infrastructure runs $500-$2K/month and scales with order volume.

Break-even vs DoorDash:

  • At $30K/month in online orders with 20% DoorDash commission: $6K/month to DoorDash. A $120K build recoups in 20 months.

  • At $100K/month: $20K/month to DoorDash. A $120K build recoups in 6 months.

  • At $300K/month: $60K/month to DoorDash. Even a full $350K build recoups in 6 months.

Build vs. buy

DoorDash Storefront: free to set up, 2.9% plus $0.30 processing. DoorDash owns the customer data and the reorder channel. You get orders. You do not get customers.

ChowNow: $149-$229/month plus 3-5% processing. White-label direct ordering with faster time to launch. Limited customization for loyalty programs, menu complexity, and multi-location management. Good for single-location restaurants under $50K/month in online orders.

Square Online: free tier, 2.9% plus $0.30 per transaction. Works well with Square POS. Limited on menu complexity, ETA logic, and KDS integration.

Olo: enterprise direct ordering built for chains with 50+ locations. Pricing starts around $500/month and scales up. Requires significant integration work. The right choice for enterprise QSR chains. Overbuilt for most restaurant groups.

Build custom when you operate 5 or more locations and need full control over customer data, when your loyalty program requires deep integration with ordering history, or when your kitchen workflow is complex enough that off-the-shelf ordering flows do not match how you actually operate.

Tech stack

  • Ordering frontend: Next.js with server-side rendering for fast menu load (SEO benefit for direct ordering, especially important when Google indexes your menu page)

  • Kitchen display: React app running on Chrome in full-screen mode on dedicated kitchen tablets

  • Admin and restaurant dashboard: React

  • Mobile apps: React Native for Phase 2 (web ordering handles the majority of orders without a native app for most restaurants)

  • Backend: Node.js

  • Database: PostgreSQL

  • Real-time: Socket.io for KDS and order status updates

  • Payments: Stripe (Elements for card input, PaymentMethod for stored cards, webhooks for order confirmation)

  • SMS: Twilio for order status updates (confirmed, ready, en route)

  • Delivery ETA: Google Maps Distance Matrix API

  • Menu images: AWS S3 with CloudFront CDN for fast image loading (slow menu images kill mobile conversion)

Next.js matters here for one specific reason: SSR means your menu page gets indexed by Google. A customer searching "order pizza from [your restaurant]" can find your direct ordering page, not just DoorDash. That organic traffic is the long-term payoff for building direct.


RaftLabs has built ordering systems, loyalty platforms, and hospitality tech for QSR chains, ghost kitchens, and multi-location restaurant groups. If you are cutting DoorDash commissions and building direct, our SaaS application development team can scope your build accurately. Start with the AI in Hospitality page to see how AI fits into the ordering and operations picture.

Frequently asked questions

An MVP with web ordering, kitchen display, and pickup plus delivery support costs $90K-$160K and takes 12-16 weeks. A full platform with loyalty, dine-in QR ordering, multi-location management, and POS integration costs $200K-$350K over 20-26 weeks. Infrastructure runs $500-$2K/month and scales with order volume.
At $30K/month in online orders, DoorDash's 20% commission costs $6K/month. A $120K build recoups in 20 months. At $100K/month, recoups in 6 months. ChowNow ($149-$229/month plus 3-5% processing) is faster to launch but gives you less data control and no custom loyalty integration. For restaurant groups with 5 or more locations, custom development is the better investment.
A KDS is a tablet or screen in the kitchen that shows incoming orders in real time via WebSocket. Orders appear as cards. Kitchen staff marks items started, then ready. Color coding shows which orders are on time (green), approaching the target window (yellow), or late (red). For quick-service restaurants, this replaces printed tickets and prevents orders from getting lost during peak hours.
ETA equals prep time plus delivery travel time. Prep time is category-specific (burgers: 12 minutes, pizza: 18 minutes). Travel time comes from Google Maps Distance Matrix API. The system must poll kitchen completion rates every 2-5 minutes and adjust ETA dynamically based on current kitchen load. When the kitchen is backed up, customer-facing wait times must update automatically, not just at order placement.
Toast has a documented API. Square Restaurants supports webhook integration. Clover is more limited. For MVP, skip POS integration entirely. The order management dashboard handles online orders directly. Full POS integration is a Phase 2 project. POS vendors update their APIs frequently, so integration requires ongoing maintenance.

Ask an AI

Get an instant summary of this post from your preferred AI assistant.