perfectdesign.

Commerce workflows

Restaurant ordering website development

An ordering website is judged at the pass, not on the phone. The build that matters is the one that only accepts what your kitchen can actually cook in the next half hour.

In short

Online ordering looks like a small store with photographs of food on it, and the part that decides whether it works sits behind the counter. Scope it from the operation: what the kitchen can produce in a given slot, which items are still available at seven in the evening, who accepts an order and how fast, and how that order becomes something a cook can see in a hot, loud room. The customer-facing menu follows from those answers, and it is a custom build shaped around your service rather than a package we resell.

Written for a restaurant owner or operations lead deciding whether an online ordering workflow is defined well enough to build · 7 min read

The kitchen is the constraint, and the website has to respect it

A kitchen produces a certain number of covers in a given fifteen minutes. That number falls when three large orders land together, and it has nothing to do with how many people are browsing your menu. A site that accepts whatever is sent to it is not neutral. It is a machine for promising food the pass cannot deliver, and the complaint arrives at your counter.

So the starting point is the operation rather than a feature list. Decide what the kitchen can take, when it can take it, and how an accepted order reaches the people cooking it. The menu customers see follows from those answers. Platform choice, gateway fees and the order chain every store shares belong to e-commerce website development; this page is the restaurant workflow on top of them.

Why orders need a throttle, not just a cart. A site that accepts every order during a rush hands the kitchen a problem it cannot fix. A full text version follows.

Why orders need a throttle, not just a cart

Editorial framework. A site that accepts every order during a rush hands the kitchen a problem it cannot fix.

Basis: Perfect Design: how ecommerce works. Reviewed .

Read the graphic as text
  • Open. Slots available, orders accepted
  • Busy. Longer promised time, still accepting
  • At capacity. Slots full, next window offered
  • Closed. Pre-order only, or nothing
Download this infographic (SVG)

Branches, menus and how the food reaches the customer

Four decisions set the boundary of the build. Branch identity comes first, because each branch is its own kitchen with its own hours, capacity and often its own menu. Menu availability comes next, by branch and by time of day, since a breakfast list still showing at nine in the evening produces cancellations rather than orders. Then the service area, a radius or a list of postcodes rather than a vague sense of nearby. Then the fulfilment method.

Scheduled pickup, delivery and table ordering share a menu and very little else. Pickup needs a collection time and somebody to hand the bag over. Delivery needs an address, an area check, a rider and an arrival promise. Table ordering has no address and no slot: the table number is the key, food goes out as it is cooked, and the bill may need splitting. One documented self-ordering product treats service location and payment conditions as configuration, a reminder that these are close cousins in some tools and separate builds in others.

  • Which branches take online orders, and whether one can be paused mid rush.
  • Which items appear on which branch menu, and at which times of day.
  • How much the kitchen can accept in a slot, in a unit the kitchen recognises.
  • Who may mark an item unavailable, from which device, and how fast it leaves the site.

A menu is not a product catalogue

Menu items carry option groups rather than variants, and the difference shows as soon as anyone builds it. A rice set may require exactly one protein, allow three add-ons and refuse a combination the kitchen cannot make. Options change the price, and some change the preparation time, which is the part that quietly eats capacity. Combos reference other items, so one change has to reach everywhere that dish appears.

Stock is stranger again. You are not counting units on a shelf, you are counting portions left from a batch, and that count lives in somebody's head until a system asks for it. So availability is an operational question first: who marks the last portion gone, from which device, and how fast the item leaves the site. Edited on an office laptop at nine in the morning, it is wrong by seven in the evening, and the customer who ordered the sold out dish becomes a refund and a phone call.

When is an order actually accepted

The sequence looks obvious and hides one decision worth arguing about. A customer chooses available items, chooses a slot, pays, and then the restaurant either accepts the order or does not. The argument is where acceptance sits: automatic on payment, fast but occasionally accepting what the kitchen cannot make, or manual inside a countdown, honest but needing somebody watching a screen during service.

Capacity is what makes acceptance mean anything. A slot holds a quantity the kitchen recognises, whether orders, main courses or minutes of preparation, and one large order may consume several slots. That is the timed-capacity problem behind booking and scheduling, applied to a pass instead of a diary. The money side is payment and checkout work, because a payment confirmed twice at seven in the evening is still a refund on Monday.

A fictional branch taking scheduled pickup orders, used to show where the decisions sit
Workflow stepAssumed actorProposed system responseExceptionAcceptance evidence to collect
Choose food and a pickup slotCustomerOffer only items the branch has now, and only slots with preparation capacity leftAn item sells out or a slot fills while the customer is choosingAvailability and option-rule tests, slot capacity tests, and a re-check of both at submission
Pay and wait for acceptanceCustomer, then branch managerTake payment, then hold the order pending until the branch accepts or rejects it inside an agreed windowPayment is delayed or confirmed twice, or nobody answers before the window closesMatched order, payment and kitchen-status records across successful, delayed, failed and repeated payment events
Hand over, or cancel what cannot be madeCounter staffMark the order collected, or cancel the missing items and refund them against the original paymentThe customer never arrives, or only part of the order can be producedHandover and no-show tests, and partial refunds reconciled against payment records
Paid is not the same as accepted. The gap between placed and seen is where a busy service loses orders and trust. A full text version follows.

Paid is not the same as accepted

Editorial framework. The gap between placed and seen is where a busy service loses orders and trust.

Basis: Perfect Design: how ecommerce works. Reviewed .

Read the graphic as text
  • Placed. Customer has paid or committed
  • Seen. It reached a device someone watches
  • Accepted. The kitchen confirmed a time
  • Ready. Collected, or handed to a rider
Download this infographic (SVG)

The printer, the tablet and the till

Every ordering project meets the same physical reality: the order has to become paper, or a line on a screen, that somebody cooking can see in a room that is hot, loud and busy. A docket printer needs paper and somebody who notices when it runs out. A tablet needs power and a screen that does not sleep. An alert has to beat an extractor fan. An unacknowledged order has to escalate.

Then the till. Connecting to it depends on what it exposes: whether outside orders can be pushed in, which fields survive, what the licence permits and how clean the menu data is. That gets investigated before anyone promises a connection, which makes it integration work rather than a checkbox. One documented restaurant POS product treats order management, kitchen notification, cancellation and preparation printing as separate things to configure, which is one product's feature set rather than a universal requirement. Where a till cannot take outside orders at all, the choices are a screen beside it or a person keying orders in, and the second carries a labour cost worth pricing.

QR went from novelty to default. Small businesses adopted QR faster than anyone, because acceptance costs less than a card. A counter, a stall and a delivery rider all take it. A full text version follows.

QR went from novelty to default

Published statistic. Small businesses adopted QR faster than anyone, because acceptance costs less than a card. A counter, a stall and a delivery rider all take it.

Source: Bank Negara Malaysia Annual Report 2025, and PayNet 2025 results. Reviewed .

Also: PayNet: 8.44 billion transactions processed in 2025.

Read the graphic as text
  • DuitNow QR payments in 2025: 3bn. Double the 1.5 billion of 2024
  • Registered touchpoints: ~3m. Up from 2.6 million, mostly small businesses
  • Added in 2025 by MSMEs: 267k. Of 681,250 new acceptance points
Download this infographic (SVG)

Ordering direct alongside the delivery platforms

The commercial case for your own channel is straightforward. The large delivery platforms bring customers you would not otherwise reach, and in exchange they take a share of each order and keep the customer relationship. On your own site you pay a payment gateway rather than a share of the order, you keep the contact details and the order history, and you choose which dishes get pushed. Work that arithmetic with your own margins rather than anybody's rule of thumb, including ours.

What your own channel does not do is deliver the food. That means your own riders or a courier arrangement, and the arrival promise becomes yours to keep. Plenty of restaurants run both, using the platforms for discovery and their own site for regulars.

What a card payment costs, as published. The headline rate is half the decision. Settlement speed, the online banking fee and what a plan upgrade costs decide what you actually keep. A full text version follows.

What a card payment costs, as published

Published statistic. The headline rate is half the decision. Settlement speed, the online banking fee and what a plan upgrade costs decide what you actually keep.

Source: toyyibPay pricing plans. Reviewed .

Also: Billplz pricing.

Also: Curlec by Razorpay pricing.

Also: Stripe Malaysia pricing.

Read the graphic as text
  • toyyibPay: 1.50%. Cards carry a RM100 onboarding fee
  • Billplz: 1.80%. 1.5% on the paid plan
  • Curlec: 2.40%. 2.00% on the premium plan
  • Stripe: 3.00%. Plus RM1.00 per transaction

Chart scale: Domestic card rate on the entry-level plan, read from each gateway on 18 September 2026.

Download this infographic (SVG)

Delays, unavailable items and refunds

Kitchen handover is the boundary worth naming. Before it, an order can be changed or cancelled cheaply. After it, food has been cooked and somebody pays for it either way. Write the rules on both sides: how late a customer may cancel, what happens when preparation runs behind, who contacts them and through which channel, and whether staff may substitute an item or must refund it. Substitution is a policy with a person attached, not a feature.

Partial refunds are the fiddly case and the common one. Two dishes out of five cannot be made, the customer wants the rest, and the money goes back against the original payment. Your team needs one screen carrying live orders, their slots and their states, which is admin dashboard work rather than a page on the website.

Scope, ownership and acceptance

Write the scope as a list with names against it: branches and hours, menus by branch and daypart, option groups, fulfilment methods, the service area, slot and capacity rules, the acceptance window, the kitchen handoff, substitution and refund policy, the till or printer arrangement, and who edits the menu after launch. Keep the customer-facing site separate from the operational workflow behind it, and agree ongoing care as its own line.

Bring the menu as it stands, the number of branches, an honest picture of a busy hour, the till you run, and whether you deliver yourself. If your cancellation and substitution policies are undecided, say so, because deciding them is part of the work. Tell us how the service runs and we will say what we would build first, and where a simpler answer would serve you better.

What you get

What is actually delivered

01

Branch and menu model

Branches with their own hours and capacity, menus by branch and daypart, and option groups carrying rules the kitchen can honour.

02

Availability your staff can change in seconds

A sold out item marked gone from a phone at the counter and off the site immediately, with a route back when the next batch is ready.

03

Slot and capacity rules

Collection and delivery slots limited by something the kitchen recognises, with large orders consuming the capacity they genuinely need.

04

An ordering journey built for a phone

Menu, options, cart, collection or delivery choice and a confirmation the customer can act on, designed for one hand on a bus.

05

Payment built for the unhappy paths

A checkout against the gateway you choose, with delayed, failed and repeated confirmations reconciled rather than assumed.

06

A kitchen handoff that gets noticed

Dockets to a printer or a screen with the slot time on them, an audible alert, and an escalation when an order sits unacknowledged.

07

Exception paths with owners

Late preparation, unavailable items, no-shows, cancellations and partial refunds, each with an agreed rule, a responsible person and a customer message.

08

Back office and handover

One live order screen for your team, menu editing your staff own, plus the code, the domain, the hosting and every service account in your business name.

How it runs

Start at the pass, then build forwards

Ordering projects fail on operations rather than on design. We settle capacity, acceptance and how an order reaches the kitchen before anything is drawn.

  1. 01

    Service and capacity

    We work through branches, menus, what a busy hour really looks like, and how much the kitchen can accept inside a slot.

  2. 02

    Fulfilment and policies

    Pickup, delivery or table ordering, the service area, the acceptance window, and your rules for cancellations, substitutions and refunds.

  3. 03

    Prototype the ordering journey

    You order from your own menu on a live link, on a phone, before anything is committed, so the scope is judged from the thing rather than from a document.

  4. 04

    Build, connect and rehearse the kitchen

    We build the approved scope, investigate what your till genuinely allows, and prove the docket, the alert and the escalation on your devices.

  5. 05

    Run a real service, then hand over

    A soft launch through an actual service with the exceptions exercised, then the accounts, the code and the data are handed to you.

How we work

The parts people ask about before they commit

How we build

React first, other languages when a project needs them

We build in React by preference, on both web and mobile, and we work in other languages when a project genuinely calls for it.

Timeline

Project dependent, and often quicker than expected

Timelines are project dependent. A focused build can go live in about a week, while a larger platform takes longer once scope is agreed.

Ongoing care

Quoted with the project, not bolted on

For a more complex website or a system with a real backend, ongoing care starts from RM 250 a month, with the plan confirmed against what was actually launched. Care is quoted with the project, not bolted on afterwards.

Getting hold of us

Normally under one working day

We normally respond to a support request in under one working day, and we work to solve problems as fast as we can. That is how we normally work rather than a contractual guarantee, and responding is not the same as resolving. If your operation needs a formal response or resolution commitment, we can write one into your scope.

Ownership

Everything belongs to your business

You own everything we build for you: the code, the content, the domain, the hosting account and every third-party account opened for the project. There is no lock-in. If you move to another provider, everything goes with you and we help with the handover.

  • Source code, handed over in your own repository
  • Domain and DNS, registered to your business
  • Hosting and every service account, in your name
  • Analytics, search and ad accounts, with us as a manager you can remove
  • All content, media and data in the system

Questions

Asked about restaurant ordering

Straight answers to what people ask before they commit. Anything else, message us.

What does a restaurant ordering website cost?

Our e-commerce package starts from RM 5,999 and is published openly on the pricing page. Restaurant ordering is a custom build rather than a package, so it is quoted against the scope we agree. What moves the number is the branch count, how complicated your option groups are, whether you deliver, and whether anything has to connect to the till you already run.

Can the orders go straight into our POS?

Sometimes, and it depends entirely on what your POS exposes. We check whether outside orders can be pushed in, which fields survive, what the licence allows and how clean the menu data is before anyone promises a connection. Where that route is closed, the practical answers are a dedicated order screen beside the till or somebody keying orders in, and we would rather price that honestly than gloss over it.

How do we stop orders arriving faster than the kitchen can cook?

By giving each slot a capacity the kitchen recognises, letting large orders consume more than one slot, holding orders as pending until a manager accepts them, and giving your team a way to pause online ordering for a branch during a rush. Those are rules rather than good intentions, and they are agreed before the build.

Should we leave the delivery platforms once we have our own site?

Usually not entirely, and that is your call rather than ours. The platforms bring reach and take a share of each order for it; your own site costs you a gateway fee and keeps the customer relationship. Most restaurants we talk to run both and steer regulars towards the direct route. Work it out with your own margins before you decide.

Who updates the menu and the prices after launch?

You do. Menu editing is built for your staff rather than for a developer, because prices, availability and daily specials change faster than any agency can turn requests round. Marking an item unavailable in particular has to be a few taps on a phone at the counter, not a support ticket.

Can we take orders at the table as well as for collection?

Yes, though it is a different workflow rather than a setting. Table ordering has no address and no slot: the table number is the key, courses go out as they are cooked, and the bill may need splitting. We usually build the channel carrying your volume first, then add the second one once the kitchen handoff is proven.

How long does a build like this take?

Timelines are project dependent. A focused build can go live in about a week, while a larger platform takes longer once the scope is agreed. With restaurants the pacing item is usually the menu data and the policy decisions rather than the code.

Where to go next

Sources

Tell us what you need built

We will show you the closest thing we have already built, then scope the real version against your requirements.