Industry guide · POS

Ghost Kitchen Software: Routing Orders Across Brands Without Losing Margin

The short answer

Build when the routing math stops fitting in a spreadsheet, not before. A focused first release that consolidates order intake, propagates 86s across every brand and channel, and reconciles aggregator payouts typically lands at $60k to $130k in 12 to 16 weeks in Digital Heroes delivery experience. A full platform with per-brand costing, station-level KDS, forecasting and a direct-order channel runs $150k to $400k phased over 6 to 12 months. If you are under three kitchens and four brands, Otter or Deliverect is cheaper than anything we would build you. Past roughly eight brand-by-channel-by-location combinations, the middleware becomes the bottleneck it was supposed to remove.

Why order routing software makes or breaks a ghost kitchen operator

You run six brands out of one 1,100 square foot production kitchen. Wing concept, birria concept, salad concept, two pasta brands you licensed, and a late-night smash burger label that does 60% of its volume after 9pm. Six brands times three marketplaces times four locations is 72 live menu instances. Every one of them can drift.

The stack is usually the same: Toast or Square running the register that nobody uses, Otter or Deliverect or ItsaCheckmate injecting DoorDash, Uber Eats and Grubhub tickets into it, a Fresh KDS screen bolted over the pass, a shelf of tablets that still get touched because two brands never got API approval, and a Google Sheet where the ops manager tracks which brand is actually making money. Marketplace commission is published at 15%, 25% or 30% depending on the plan you signed. Nobody in your building can tell you, on a Tuesday, what your wing brand's contribution margin was on Monday.

It is 11:47 on a Thursday. Thirty-one tickets hit in nine minutes across five brands. The fryer is the constraint for three of them. Your KDS shows tickets in arrival order, not station order, because it has no idea that "Nashville Tenders" and "Crispy Chick'n Sando" and "Loaded Fry Bowl" are the same fryer basket wearing three logos. A DoorDash Dasher walks in at minute four for an order the line has not started. He waits eleven minutes, marks it late, and the store's rating drops. Your GM's fix is to pause the burger brand on Uber Eats from a tablet, which he forgets to un-pause until 1:20pm. That is 90 minutes of a channel dark during peak, and it happens two or three times a week per location.

One protein runs out and forty SKUs stay live

Prep runs out of the braised birria at 7:40pm. That single ingredient sits inside 11 menu items across three brands, and those 11 items exist separately on DoorDash, Uber Eats, Grubhub and your own site. That is 44 listings a human now has to find and toggle off, on four different merchant portals, during service. What actually happens: someone 86s the obvious four, misses the quesabirria on the pasta brand's "chef's picks" section, and you eat nine refunds plus a "missing or incorrect item" error charge on each.

Off-the-shelf middleware cannot fix this because it models items, not ingredients. Otter and Deliverect will happily push a snooze across channels for the exact SKU you tell them about. Neither one knows that SKU 4471 and SKU 8802 share a component. There is no recipe layer, so there is no dependency graph, so a human has to hold the graph in their head at 7:40pm.

A custom build inverts it. You model ingredients and sub-recipes as first-class entities, map every channel SKU to a bill of materials, and then 86ing is a single event on the component. The system walks the dependency graph and fires snooze calls to every affected listing on every channel in under a second, then auto-restores when the next prep batch is logged. Depletion runs off actual ticket flow, so the system predicts the 86 twenty minutes out and pings the expo screen: "birria at 14 portions, projected out at 8:05." AI does concrete work here: a per-brand, per-daypart demand model trained on your own 18 months of ticket history sets tomorrow's prep pars per component, and flags the ones where yesterday's par was 30% off. Prep sheets stop being the AM lead's guess.

Your KDS sorts by brand when your kitchen is sorted by station

Ghost kitchens are stations wearing brand costumes. The line does not care that the ticket says "Pasta Sorella." It cares that the item needs the boiler, then the saute pan, then the cold assembly bench. Every off-the-shelf KDS, including Toast's and Fresh KDS, routes by order and by concept because it was designed for a dine-in restaurant with one menu.

So your fryer guy sees six tickets from six brands, each with one fryer item, sequenced by arrival. He fries them one at a time. Basket utilization sits around half, throughput craters, and your promise times inflate, which is exactly what the marketplace ranking algorithms punish.

What we build instead: a routing engine that explodes each order into station-level tasks, batches like tasks across brands inside a courier-arrival window, and sequences backward from the latest allowable ready time. The fryer screen shows "12 tenders, 4 baskets, drop now" instead of six separate tickets. The expo screen is the only place brands reappear, for bagging and label printing. Two data flows make it work: a live station-capacity model, and courier ETA polled from each marketplace's order API so the sequencer knows which orders can wait 90 seconds and which cannot. In our experience across multi-brand kitchen builds, station batching is the single largest throughput gain available, and no packaged product will ever ship it, because it only makes sense when many brands share one line.

Nobody can tell you what a brand actually earns

Your P&L is per location. Your decisions are per brand. Should the salad concept die? Should you push the burger label to the other three kitchens? Right now the answer comes from a spreadsheet where someone allocates rent and labor by revenue share, which is a fancy way of saying the answer is unknowable.

Restaurant365 and MarginEdge do good back-office work, but they reconcile to a location and a vendor invoice. They have no concept of a virtual brand consuming 22 minutes of fryer time and 3 minutes of a packer's hands. Otter reports revenue per brand and stops there, because it never saw your invoice from US Foods.

The build: parse vendor invoices into line items with unit costs, attach costs to components, and let the bill of materials push a true food cost onto every ticket in real time. Labor gets attributed by station-seconds, not revenue share, using the same task model that drives the KDS. Commission, promo spend and error charges get pulled from each marketplace's report API and attached to the exact order. Now a brand has a contribution margin per order, per daypart, per location, and killing the salad concept is a two-minute decision. Document extraction is a genuine AI use here: invoices from Sysco, Restaurant Depot and a dozen local produce vendors arrive as PDFs and photos with inconsistent formats, and a model that maps them to your component catalog with a human confirming low-confidence lines removes roughly a day a week of a bookkeeper's time per kitchen.

The payout statements nobody reads

Marketplace deposits land net of commission, net of promo participation, net of adjustments, net of error charges for missing or incorrect items, and net of chargebacks. Each platform formats this differently. Each has a dispute window measured in days. At three locations and six brands you are looking at thousands of order-level adjustments a month, and nobody at your company reads them.

We have watched operators find five figures a year of never-disputed error charges once the data was actually assembled. Not because the marketplaces are villains, but because the dispute window closes while the statement sits unread in an inbox.

A custom reconciliation layer ingests every payout report, matches each line to the order in your system, and auto-flags variances: charged commission that does not match your contracted rate, refunds on orders where your own KDS photo shows a complete bag, duplicate adjustments. Disputes get filed inside the window with the evidence attached, automatically. None of this is interesting to build. It usually pays for a meaningful slice of the project anyway.

What it costs and how long it takes

Framed only on Digital Heroes delivery experience across 2,000-plus projects: a focused first release runs $60k to $130k and ships in 12 to 16 weeks. That buys unified order intake from two or three marketplaces, the component and bill-of-materials layer with cross-channel 86 propagation, a station-routed KDS, and payout reconciliation. A full platform, adding per-brand costing from invoices, forecasting, a direct-order channel with your own couriers, and multi-tenant support for licensed kitchens, runs $150k to $400k phased over 6 to 12 months.

What drives price up in this category specifically. First, marketplace API access: DoorDash, Uber Eats and Grubhub each require partner approval and certification, and those cycles are calendar time you cannot compress with money. Second, POS (Point of Sale) integration depth, since Toast and Square partner APIs each have their own certification and their own gaps. Third, offline resilience, because a kitchen with a dead internet connection still has to cook, and building a local-first KDS that reconciles on reconnect is roughly a third more work than a cloud-only one. Fourth, hardware on the line, which means ruggedized screens, label printers and the integration tax each brings. Fifth, every additional country, because menu and tax models diverge hard.

Build versus buy, honestly

If you run one to three kitchens, four brands or fewer, under about 250 orders a day, and your menus are stable, do not build. Otter or Deliverect or ItsaCheckmate plus Toast will cost you a few hundred dollars a month per location and solve 80% of your problem. Anyone telling you to build custom software at that scale is selling you something.

The signals that it is time: you are past roughly eight brand-by-channel-by-location combinations. Someone on payroll spends more than a day a week reconciling payouts or updating menus. You are licensing your brands to third-party kitchens and need per-licensee reporting the middleware cannot give you. Your direct channel is past 20% of volume and the 30% commission you are avoiding is now worth real engineering. Or the decisive one: you have a repeatable operating advantage, like station batching or dynamic menu pricing by daypart, that your competitors cannot copy because it lives in your software. That is when the build stops being a cost center.

How to choose a developer for ghost kitchen software

Ask them to model the domain on a whiteboard before you talk price. Brand, concept, location, station, component, sub-recipe, channel SKU, order, task, courier. If they draw "restaurant, menu, order," they have built a food-ordering app and not a ghost kitchen platform, and you will pay to teach them the difference.

Ask what happens when the DoorDash menu push fails at 6pm on a Friday. The right answer involves idempotency keys, a retry queue, a divergence detector that compares your source of truth against what is live on each channel, and an alert to a human. The wrong answer is "we handle errors."

Ask which marketplace and POS certifications they have already been through. Partner approval calendars are the real project risk in this category, and a team that has cleared DoorDash and Toast before will start those clocks in week one instead of week nine.

Ask about the boring compliance surface: HACCP temperature logging tied to your equipment, allergen data flowing correctly onto every channel listing, per-brand DBA and delivery-only permits where your jurisdiction requires them, and PCI scope on the direct channel. A developer who says "we will just use Stripe" without explaining how that keeps card data out of your systems has not thought about it.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. Retailers connecting point-of-sale and loyalty data in an omnichannel strategy reported up to 15% lower cost per purchase and nearly 20% higher incremental store revenue. Source: Deloitte (2024) →
  2. The NRF discontinued its long-running annual shrink report, stating that a broad study of retail shrink 'is no longer sufficient for capturing the key challenges and needs of the industry' - important context that qualifies how POS/shrink benchmarks should be cited going forward. Source: Retail Dive (2024) →
  3. The average developer spends more than 17 hours a week dealing with maintenance issues such as debugging and refactoring, and about four of those hours on 'bad code' - waste that equates to nearly $85 billion annually worldwide in opportunity cost. Source: Stripe (2018) →
  4. An EY survey found one in five U.S. payrolls contains errors, each costing an average of $291 to remediate, with a typical 1,000-employee organization spending roughly 29 workweeks per year fixing common payroll errors. Source: EY (Ernst & Young) (2022) →
Rohan Malhotra · Enterprise Software Consultant

Rohan advises mid-market and enterprise teams on ERP, CRM and custom software, and has led delivery on dozens of business-software builds.

Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

How much does custom ghost kitchen software cost for a 4-location, 6-brand operation?
Expect $60k to $130k for a focused first release covering unified order intake, cross-channel 86 propagation, station-routed KDS and payout reconciliation, based on Digital Heroes delivery experience across 2,000-plus projects. A full platform adding per-brand costing, forecasting and a direct-order channel runs $150k to $400k phased over 6 to 12 months. At 4 locations and 6 brands you are right at the threshold where a build starts paying back, mostly through reconciliation recovery and throughput.
Should we build custom software or just use Otter or Deliverect?
Use Otter or Deliverect if you run three or fewer kitchens, four or fewer brands, and under roughly 250 orders a day. They solve menu sync and order injection well and cost a few hundred dollars a month per location. Build once you pass about eight brand-by-channel-by-location combinations, or once someone on payroll spends over a day a week reconciling payouts and updating menus.
Can custom software 86 an ingredient across all our brands and marketplaces at once?
Yes, and this is the main thing packaged middleware cannot do. Off-the-shelf tools snooze the exact SKU you name because they model items, not ingredients. A custom build maps every channel SKU to a bill of materials, so 86ing one component walks the dependency graph and pushes snooze calls to every affected listing on DoorDash, Uber Eats, Grubhub and your own site in about a second.
How long does it take to integrate DoorDash, Uber Eats and Grubhub APIs?
The engineering is a few weeks per marketplace, but partner approval and certification is calendar time you cannot buy your way through, so plan on the integrations pacing the project rather than the code. A team that has already cleared these certifications will start the approval clocks in week one. This is why realistic first-release timelines are 12 to 16 weeks rather than eight.
Do we own the code if we hire an agency to build this?
Insist on full ownership of source code, infrastructure accounts and the marketplace partner credentials, written into the contract, with the repository in your organization from the first commit. Digital Heroes ships client-owned code as standard. Be suspicious of any arrangement where the developer holds the API partner relationship, because that makes leaving them functionally impossible.
Can we migrate off Otter or Deliverect without going dark during service?
Yes, by running both in parallel and cutting over one channel at a time, usually starting with your lowest-volume marketplace on one location. Menus and SKU mappings export cleanly enough to seed the new system, and a divergence checker that compares your source of truth against what is live on each channel catches drift during the overlap. Budget three to five weeks of parallel running and cut over during a slow daypart, never at 11:30am.
Will AI actually help our ghost kitchen or is it a sales pitch?
It helps in three specific places: forecasting prep pars per component per daypart from your own ticket history, extracting line items from inconsistent vendor invoices so per-brand food cost is real instead of allocated, and drafting payout dispute filings from matched order evidence. It does not help with routing decisions, which are deterministic constraint problems better solved with plain scheduling logic. Anyone pitching AI for order routing is decorating.
What compliance issues apply to ghost kitchens that software has to handle?
The recurring ones are HACCP temperature logging tied to equipment, allergen data propagating accurately onto every channel listing since a wrong allergen tag is a real liability, per-brand DBA registration and delivery-only permits where your jurisdiction requires them, and PCI scope if you run a direct-order channel. Keeping card data entirely inside a payment provider's hosted fields keeps your PCI scope minimal. Get the allergen data model right early, because retrofitting it across dozens of live listings is painful.
How do we calculate real profit per virtual brand instead of per location?
You need three data flows joined: vendor invoice line items attached to ingredient components, a bill of materials mapping every channel SKU to those components, and labor attributed by station-seconds rather than revenue share. Then commission, promo spend and error charges pull from each marketplace report API and attach to the specific order. Restaurant365 and MarginEdge cannot do this because they reconcile to a location, and Otter cannot because it never sees your invoices.
Should I hire a freelancer or an agency for my software project?
A skilled freelancer is the right call for a single-discipline scope under roughly $15,000, like a website, a plugin, or one integration. Above that, projects need design, backend, testing, and project management at once, and a solo builder becomes the single point of failure: if they get sick or take a bigger client, your project simply stops. Agencies bill 20-40% more per hour but carry continuity, code review, and someone to escalate to, which is what you are actually buying.
Can a custom POS beat Square's 2.6% plus 10 cents processing rate?
Yes, because a custom POS lets you choose interchange-plus processing instead of flat-rate pricing, which in the client migrations Digital Heroes has run commonly lands near 2 percent all-in on card-present volume for established businesses. On $1.5 million of annual card volume, each half point saved is worth $7,500 a year before you count software fees. Below about $250,000 in annual card volume the savings rarely justify the build, so run the math on your processing statements first.
How do I calculate the payback period on a custom POS?
Add up what you pay per year today: subscription fees per terminal, add-on modules, and the gap between your effective processing rate and an interchange-plus rate, then divide the build cost by that total. A retail group paying $60,000 a year in fees and processing markup against a $150,000 build pays back in 2.5 years, before counting labor saved by workflows designed for your operation. Digital Heroes models 2 to 4 year payback for most multi-location operators and advises against building when the model shows longer.
Should we launch a POS MVP first or wait for the complete system?
Launch an MVP in one location first, covering checkout, payments, receipts, basic catalog, and end-of-day reporting, which Digital Heroes typically delivers in 12 to 16 weeks at 30 to 40 percent of full project cost. Running it live for a month surfaces workflow problems, like how staff actually handle voids and returns, that no spec review catches. Loyalty, advanced analytics, and multi-location features then land in phase two, shaped by real transactions.
What should I prepare before contacting a software development agency?
A one-page brief beats a 40-page requirements document: the business problem in plain words, who will use the system, the 5 to 10 workflows it must handle, the tools it must connect to, and your budget range and deadline driver. You do not need wireframes, a specification, or technical vocabulary; producing those is the agency's job during discovery. Stating a budget range up front is the single best move, because it gets you honest scoping instead of a quote engineered to win the meeting.
Does it matter which tech stack the agency wants to use?
Yes, but not in the way most buyers expect: the goal is boring, popular technology such as React, Node.js or Python, and PostgreSQL, because any future team can maintain it and hiring a replacement developer takes days, not months. The red flag is an agency-proprietary framework or an unusual language, which welds you to that one vendor no matter what your contract says about code ownership. A useful test: could you find three freelancers fluent in this stack within a week? If not, push back.
How do I vet a development agency for a POS project specifically?
Ask to see a live POS or payments product they built, then ask exactly how they handled offline mode, receipt printing, and PCI scope, because those three areas expose anyone who has only built ordinary web apps. A competent agency will name the payment SDKs they used, such as Stripe Terminal or Adyen, and describe their terminal certification process without checking notes. If the portfolio is all marketing sites and dashboards, keep looking.
Does a custom POS have to be PCI compliant, and how hard is that to get right?
Any system that touches card payments falls under PCI DSS, but the practical burden depends entirely on architecture. If your POS uses certified terminals from Stripe, Adyen, or a similar processor so card data never reaches your servers, most of the compliance scope shifts to the processor and you typically complete only a short self-assessment questionnaire. Building your own card capture puts you in full PCI DSS audit territory, which is why Digital Heroes has never recommended it in a POS engagement.
Should I use a freelancer or an agency to build my POS system?
A POS build needs backend, client app, payments integration, and hardware testing skills running at the same time, which is more surface area than one freelancer reliably covers. Freelancers make sense for narrow additions, like a reporting module on an existing system, at typical rates of $30 to $90 per hour. For a ground-up build, an agency with a dedicated QA function is the safer choice because a register failure stops your revenue at the counter in real time.
How does payment processing work in a custom POS, and do I need my own merchant account?
Your POS software handles the order, then hands the charge to a payment provider; you never build card processing yourself. The two common routes are an aggregator like Stripe, live in days at a published in-person rate of 2.7 percent plus 5 cents, or a dedicated merchant account with interchange-plus pricing, which takes 1 to 3 weeks of underwriting but costs less at volume. Most Digital Heroes POS builds launch on Stripe Terminal and renegotiate processing once volume justifies it.
Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?