A restaurant with online ordering and a POS that do not talk to each other has a very specific look. There is a tablet on the counter that beeps. Someone reads the order off it and types it into the till. A printer produces a ticket. Somewhere in that sequence, on a busy Friday, a customer's no-onions instruction disappears.
Every operator we have worked with recognises this. The tablet is not the problem. The re-keying is. It costs staff time on every single order, it introduces errors at the worst possible moment, and it means the reporting in the POS and the reporting in the ordering platform never quite agree.
Integrating online ordering with the POS removes the re-keying. This is what that actually involves, what it costs, and where it goes wrong.
It is worth being precise about the benefits, because they are not evenly valuable.
Not all of these need to arrive at once, and the sequencing matters. Order injection first, then menu synchronisation, then stock, then reporting. Operators who try to do everything in one project usually stall on the hardest piece and get none of the benefit.
Broadly there are three technical patterns, and which one is available depends entirely on the POS vendor.
Cloud API integration. Modern cloud POS platforms expose an HTTP API. Your ordering system authenticates, pushes orders, pulls the menu, and receives status updates by webhook. This is the clean case and the one to prefer.
Local integration. Older POS systems run on a machine in the restaurant with no external interface. Integration requires a small local agent, usually on the same network, that receives orders from the cloud and injects them into the POS through a local API, a database write, or a file drop that the POS watches. This works but adds a physical dependency: if that machine is off, orders do not arrive.
Middleware. A third-party integration platform sits between the ordering system and the POS and speaks both protocols. This costs a monthly fee per site and saves considerable development effort. For a small group using a well-supported POS, it is often the correct commercial decision even though it is less elegant.
If your POS offers none of these, the honest answer is that integration is not viable and the choice is between changing POS or accepting the tablet. We say this to clients regularly, and it is better said early than after three months of trying.
The single hardest part of POS integration is not orders. It is menus.
A POS menu is built for staff taking orders at speed. Products have short codes, modifiers are structured around till workflow, and the same physical dish may exist as several buttons for different contexts. An online menu is built for customers browsing. It has descriptions, photographs, dietary flags, an ordering logic that guides choices, and a structure organised around how a customer thinks.
These two structures do not map cleanly onto each other, and pretending they do is why so many integrations produce a nonsensical online menu.
What works:
Budget more time for menu mapping than for anything else in the project. On multi-site groups, expect the mapping to differ per branch, because branch menus always diverge in practice regardless of what head office believes.
Pushing an order into the POS is more than sending a list of items. What has to be handled:
Two operational rules save a great deal of pain. Make injection idempotent, keyed on your order identifier, so a retry after a timeout does not produce a duplicate order and a duplicate meal. And never let a failed injection silently swallow an order — if the POS cannot be reached, the order must still surface loudly on the tablet with an alert, because the customer has already paid and is expecting food.
Real-time availability is the feature customers notice most, because being sold something the kitchen cannot make is a memorably bad experience.
Practical implementation:
Full ingredient-level stock control integration is technically possible with some POS systems and is rarely worth it for restaurants. Item-level availability captures nearly all the benefit for a fraction of the complexity.
Everything above gets harder with more than one branch.
The architecture that handles this cleanly is a central platform holding the group menu with per-branch overrides, plus a per-branch integration channel that can be independently paused. Attempting to enforce one identical menu across all branches will fail, and the software should accommodate reality rather than fight it.
We built exactly this shape for multi-branch ordering operations, and the override model is the part operators consistently say they could not manage without.
An integration that is not monitored is an integration that fails silently at the worst moment. The alerts that matter:
Alerts must go to someone who can act — the branch, not only a developer's inbox. And there must be a documented manual fallback, which in practice means the tablet stays on the counter as a backup even after integration is live. Operators who throw the tablet away on go-live day regret it the first time an internet connection drops mid-service.
Restaurants integrating their own ordering platform frequently overlook the other tablets on the counter. Aggregator orders from the major delivery platforms arrive on their own devices and get re-keyed exactly like web orders used to be.
Most aggregators offer order-injection APIs or partner integrations, and routing them through the same pipeline as your direct orders produces two benefits beyond the obvious time saving. The kitchen sees one queue rather than three, sequenced correctly, which is a genuine operational improvement on a busy service. And reporting finally covers every channel in one place, which is the only way to see the real picture of what each channel costs and contributes.
The complication is menu mapping again, since aggregator menus have their own structures and often their own inflated pricing to absorb commission. That mapping is worth maintaining rather than avoiding: an operator who cannot compare true margin per channel cannot make an informed decision about which channels to keep.
Rough guidance from projects we have delivered.
A cloud POS with a well-documented API, one site, order injection and menu sync: typically four to eight weeks and a mid-four-figure to low-five-figure sum. A local agent integration with an older POS: add several weeks, mostly spent on vendor cooperation and on-site testing rather than code. Multi-site rollouts add per-site configuration and testing rather than fresh development, so the marginal cost per branch falls quickly after the first two.
Middleware alternatives typically cost a monthly fee per site. For a single restaurant, that is often cheaper over three years than a custom integration. For a group of ten sites, custom usually wins.
The comparison that actually matters is against the cost of not integrating: staff time re-keying every order, the error rate, and the reporting mismatch. At even modest volume, that number is larger than operators expect once they measure it honestly.
Questions to put to your POS vendor before scoping anything:
A vendor who cannot answer these quickly is telling you something important about how the project will go. Choosing a POS with a real API is the single decision that makes everything downstream easier, and it is worth weighing heavily when a restaurant is selecting a system in the first place — a subject we covered in our guide to choosing a POS for multi-location restaurants.
We build ordering platforms and the integrations that connect them to the till. If you are weighing up whether your POS can support it, or you want a realistic scope for a multi-branch rollout, our contact page is the fastest route to an answer.