RestaurantBrain feasibility study

#R01 — POS Hardware & Peripherals

Scope: terminals, receipt/kitchen printing, counter peripherals, in-restaurant networking, build-vs-resell hardware, and a certified v1 matrix. Date: 2026-08-18. Prices are single-unit EU reseller, ex-VAT, unless stated. Labels: [verified] = checked this session with a URL, [known] = confident from training data, [estimate] = reasoned guess.

Bottom line: the hardware is not the hard part — buying it is easy, driving it is not. The real cost centres are (1) the printing stack, which is 8–10 engineer-months of genuinely nasty work and produces ~60% of your support tickets forever; (2) fiscalization hardware in Poland/Romania, which invalidates the "just print ESC/POS" assumption and is a market-entry gate, not a feature; (3) the fact that a browser cannot open a TCP socket, which forces an architectural decision (native app vs. pull-based cloud printing) in week one. Reselling commodity hardware is correct and the legal argument for it is stronger than the cost argument.


#1. Terminal options

#1.1 The four archetypes

ArchetypeExamplesPrice/station (ex VAT)Where it winsWhere it dies
Consumer tablet + standiPad 11" (A16, 2025) + Heckler WindFall / Bouncepad CounterEUR 400–460 tablet + EUR 120–230 stand = EUR 520–690Beautiful, fast, guests trust it, staff already know it, huge App Store distribution, 5–6 yr OS supportNo sealed bezel, no swappable battery, no built-in printer/NFC/scanner, USB-C peripheral support is limited, theft target, Apple's 15–30% IAP rules if you ever bill in-app
Android all-in-one POSSunmi D3 Mini / D3 Pro / T3 Pro, iMin D4, Elo I-Series 4EUR 465–945 (Sunmi) [verified], EUR ~1,150–1,300 (Elo 15") [verified/est]Built-in printer + NFC + cash-drawer port + customer display in one box, one power cable, commercial 3–5 yr lifecycle, mounts on any counterAndroid version rot, GMS/EDLA licensing trap (§1.3), mediocre panels (250–400 nits), vendor SDK quality varies, 1-yr warranty is standard
Payment-terminal-as-POSPAX A920Pro, PAX A77, Sunmi V3 Mix, Nexgo N86EUR 380–600 [verified] for Sunmi V3 Mix EUR 575One device for order + payment; acquirer often subsidizes it to EUR 0–15/moUsually estate-locked by the acquirer. You cannot sideload on a PAX A920Pro in most European estates without the acquirer's key + PAXSTORE tenancy. Assume you don't control the device
Legacy Windows terminalHP Engage One Pro, Toshiba TCx 800, Advantech UTC-5-seriesEUR 900–1,800 [estimate]Sunk cost at existing sites; drives every legacy serial peripheral; the only realistic host for Polish fiscal printer DLLsWindows licensing + patching + antivirus + your support burden; nobody buys these new for a 1-site café

#1.2 Concrete price anchors (checked 2026-08-18)

Source: shopnfc.com EU catalogue, single-unit prices [verified].

SKUSpecPrice EUR
Sunmi D3 Mini (no GMS)10.1" desktop AIO, 58mm printer, Android 13465
Sunmi D3 Pro (no GMS)15.6" desktop AIO605
Sunmi D3 Pro (GMS)15.6", Google-certified639
Sunmi T3 POS 15.6" (Android 13)15.6", no integrated printer688.97
Sunmi T3 POS 15.6" (GMS EDLA)Google-certified variant945
Sunmi CPad 14" (GMS EDLA)14" tablet-style735
Sunmi V3 Mixhandheld/counter hybrid, printer + 2D scanner + NFC + battery575
Sunmi V3 (GMS EDLA)handheld + printer384–447
Sunmi L2s Pro (Zebra scan engine)rugged handheld, IP67595
Sunmi L2s Pro (Sunmi scan engine)rugged handheld535
Sunmi L3 (dual NFC)rugged handheld495
Sunmi M3rugged terminal385
Elo I-Series 4, 15.6" Android (E392786, RK3399)15.6" AIO, no printer~USD 1,303 → EUR ~1,150 [verified USD]

Distributor reality: these are retail. As a registered reseller with a distributor (Jarltech, Logiscenter, ITG Store, Concept Data, Sunmi's regional distributors) expect 28–40% off list at 50+ units/yr [estimate], and Sunmi will quote directly at 100+ units. Budget your hardware GM at 15–25% after freight, spares, and DOA.

#1.3 The GMS / EDLA trap — read this before choosing Android

Google requires an EDLA (Enterprise Device Licensing Agreement) for GMS on dedicated/purpose-built devices; that is why the Sunmi catalogue splits into "no GMS" and "GMS EDLA" SKUs at a EUR 30–260 delta [verified from price table]. Consequences on a non-GMS device:

  • No Firebase Cloud Messaging. Your push channel for "new online order arrived" must be your own persistent MQTT/WebSocket connection with your own reconnect/backoff/doze handling. Budget 1.0 eng-month for a reliable foreground-service transport, plus battery/thermal testing.
  • No Play Store distribution → you ship APKs by MDM/OTA yourself, plus your own update rollout, staged rollback, and signing infrastructure.
  • No Google Sign-In / Maps / Play Integrity / SafetyNet.
  • WebView and Chrome are frozen at the ROM's version unless the vendor ships an update. On a 2023 Sunmi ROM you can be stuck on a WebView with no ResizeObserver edge cases fixed, no Intl.Segmenter, etc. If your POS UI is a WebView, this is a genuine product risk.

Recommendation: buy GMS/EDLA SKUs even at +EUR 100–250/unit for anything running your app. Non-GMS is acceptable only for KDS and customer-facing displays.

#1.4 Environmental reality: spills, heat, glare, gloves

FactorNumberPractical rule
Screen brightnessConsumer iPad ~500 nits; typical Android POS 250–400 nits [known]Anything under ~600 nits is unreadable on a sunlit terrace. A terrace-heavy Mediterranean site needs an iPad or a high-bright Elo (1,000+ nits models exist, ~2× price)
IngressSunmi/Elo desktop AIOs are not IP-rated on the front glass; Sunmi L2s Pro/L3 handhelds are IP67, 1.2–1.5 m drop [known]Assume every counter terminal will meet a spilled Coke. Specify a counter unit with a flush glass front and no top-facing vents; forbid mounting under a shelf where steam collects
HeatPassive-cooled AIOs throttle above ~40 °C ambient; a pass window above a grill hits 45–55 °C [estimate]Never put the terminal or KDS in the hot line. KDS goes on the cold side of the pass, 1.5 m minimum from a fryer, screen tilted down to shed grease
Gloves / wet handsPCAP touch fails with nitrile gloves + water film [known]Kitchen-side input = bump bar (physical keys) or IR-touch monitor, not PCAP. This single decision saves you dozens of "the KDS doesn't respond" tickets
Grease filmBuilds visible haze in 2–4 weeks over a pass [estimate]Ship a cleaning protocol and a spare screen protector as a consumable

#1.5 Lifespan and warranty

ItemRealistic service lifeStandard warrantyNotes
iPad5–6 yr hardware, OS support ~6–7 yr1 yr (AppleCare+ ~EUR 79–99 for 2 yr) [estimate]Battery swelling at 3–4 yr in always-charging kiosk mode is the actual failure mode. Use a stand that lets you charge-limit or a powered stand with a charge controller
Sunmi AIO4–6 yr12 months [known]Extended warranty available via distributor. Thermal printhead in the D-series is the wear part
Elo I-Series5–7 yr3 years standard [known]Best warranty in the category; part of why Elo costs 2× Sunmi
Thermal printer (Epson/Star)5–8 yr; printhead rated ~100–150 km / 1.5–2 M cuts [known]1–3 yr depending on model/region; Epson CoverPlus adds on-site/exchangeAutocutter is the failure part, not the head, in high-volume bars
Impact printer (TM-U220II)7–10 yr1–2 yrRibbon is a consumable, ~EUR 4–8, changed every 1–3 months

Refresh planning: assume you re-certify your hardware matrix every 18 months because SKUs go EOL. Budget 0.25 eng-months/quarter forever for matrix maintenance.


#2. Receipt and kitchen printing (the hard part)

#2.1 Protocol landscape

LayerReality
ESC/POSEpson's de-facto command set. ESC @ init, ESC a n align, GS ! n size, GS v 0 raster image, GS V m cut, ESC p m t1 t2 drawer kick, DLE EOT n real-time status. Every clone implements ~80% of it, differently. [known]
StarPRNT / Star Line ModeStar's native set. Star printers can be switched to ESC/POS emulation via config, but cutting, logos, and status differ. Do not assume; detect and branch. [known]
Code pagesThis is where CEE bleeds. Polish diacritics need CP852 or CP1250; Romanian ș/ț need CP852/CP1250 + the printer's font actually containing them; Ukrainian/Russian need CP866 or CP1251. You must emit ESC t n per printer per language and maintain a per-model code-page capability table. Fallback: render the whole ticket as a raster bitmap (GS v 0) — universal, ~3–5× slower, ~2× paper feed latency, but it always works and it lets you use real fonts. [known]
Raster-first strategyStrongly recommended for v1: one rendering path (HTML/Canvas → 1-bit bitmap → GS v 0), plus a text fast-path only for high-volume bars where speed matters. Halves your per-model bug surface.
ModelTypeInterfacesPrice EUR ex VATNotes
Epson TM-m30III (C31CK50152)58/80 mm thermal, 203 dpiUSB-B, USB-C, Ethernet, Bluetooth, Wi-Fi — all in one SKU314.87 [verified, Jarltech]The default front-of-house printer. All-interface SKU removes the "wrong variant ordered" support class entirely. Worth the premium
Epson TM-m30III-HSame + 4× powered USB hubUSB/LAN/BT/WLAN~EUR 360–400 [estimate]Use where the printer is the USB hub for scanner + CFD on an iPad build
Epson TM-T88VII80 mm thermal, 180 dpi, 500 mm/sUSB + Ethernet (variants)~EUR 400–480 [estimate]High-volume QSR/bar. 500 mm/s [verified from listing]. Overkill for a 40-cover bistro
Epson TM-U220II76 mm impact, 2-colour, up to 6 lpsUSB, Ethernet, Wi-Fi~EUR 280–340 [estimate]Announced 2024-07-11, replaces the EOL TM-U220 [verified]. The kitchen printer. Thermal paper fades to black near heat/steam; impact does not. Two-colour = red for allergens/86'd items
Star TSP143IV / TSP100IV80 mm thermalEthernet + USB-C/USB-A; CloudPRNT built in~EUR 230–280 [estimate]Best price/feature for a cloud-pull architecture [verified: CloudPRNT supported]
Star mC-Print380 mm thermal, compactUSB/LAN/BT/(WLAN), CloudPRNT~EUR 260–310 [estimate]Direct TM-m30III competitor; has USB host ports for peripherals
Star SP742 HI X76 mm impact, CloudPRNTEthernet~EUR 300–360 [estimate]The Star kitchen printer; CloudPRNT-capable impact is rare and useful [verified]
Star mC-Label3 / TSP100IVSKLinerless labelLAN, CloudPRNT~EUR 320–420 [estimate]Takeaway bag labels, prep labels
Bixolon SRP-Q300 / SRP-330III80 mm thermalUSB/LAN/Serial~EUR 150–210 [estimate]30% cheaper, SDK/docs noticeably worse, no cloud-pull equivalent. Support it, don't lead with it
Xprinter / Rongta / generic80 mm thermalUSB/LAN/BTEUR 55–95 [estimate]You will encounter these constantly in UA/PL/RO. Raw port 9100 ESC/POS usually works. No status reporting worth trusting, no warranty, cut mechanism dies in 12–18 months. Support "best effort, unsupported" mode — refusing them loses deals

#2.3 Interface decision matrix

InterfaceLatencyReliabilityMulti-clientVerdict
Ethernet, raw TCP 910020–80 msHighestYes (one at a time; no locking — you must serialize)Default for every fixed printer. Requires a native app or a local agent
Ethernet + ePOS-Print / CloudPRNT0.2–10 s (poll)HighestYesDefault when your client is a browser (§2.4)
USB<20 msHighNo (single host)Fine when the printer sits under the terminal and the host is Android/Windows. Impossible from iOS (§2.5)
Bluetooth Classic SPP50–300 msMedium; pairing drops, 8-device limitsNoOnly for mobile/handheld printing. On iOS the printer must be MFi-certified — Epson and Star sell MFi variants; generic BT printers cannot be reached from an iOS app at all
Wi-Fi (printer on WLAN)30 ms–3 s, spikyWorstYesAvoid. Every "the printer is offline" ticket originates here. Accept only where cabling is physically impossible, and then insist on a dedicated AP within line of sight
RS-232 serial<10 msHighNoLegacy fiscal printers, scales, some kitchen printers. Needs a USB-serial bridge (FTDI FT232R, ~EUR 12) or a Windows host

#2.4 Cloud-pull printing: Epson Server Direct Print vs Star CloudPRNT

Both invert the connection: the printer polls your HTTPS server for jobs. This is the only clean way to print from a browser-based or cloud-only POS.

Epson Server Direct PrintStar CloudPRNT / CloudPRNT Next
ModelsTM-m30III, TM-T88VII, TM-U220II, TM-i series [verified feature exists on m30III]TSP100IV, TSP654II/743II/847II HI X, mC-Print2/3, mC-Label3, SP742 HI X [verified]
TransportPrinter HTTP POSTs to your URL at a configured interval; you respond with ePOS-Print XMLPrinter polls your URL (HTTP/HTTPS JSON API); optionally MQTT on supported models [verified]
PayloadePOS-Print XML (<text>, <image>, <cut>, <pulse>)Star markup, ESC/POS passthrough, PNG, or Star Document Markup
Status backPrinter reports status in the poll (paper, cover, error)Same, plus job-level ack
LatencyPoll interval, typically 3–15 s; can go to ~1 s at network cost [estimate]Same; MQTT variant is sub-second [verified feature]
Licence costNone disclosed; built into the printerNone disclosed on the product page [verified]; StarPrinter.Online is a separate managed service

Architectural consequence: if you go browser-first, a 3–10 s delay on the guest's receipt at the counter is a UX wart your competitors (native apps + port 9100) don't have. Kitchen tickets don't care. Recommended hybrid: native app → raw 9100 for the receipt printer at the till; CloudPRNT/SDP for every remote kitchen/bar printer and for the "print from the back office in the browser" case.

#2.5 What is genuinely impossible from iOS and from a browser

CapabilitySafari/iOS WebViewChrome (Android/desktop)Native iOS appNative Android app
Raw TCP socket to port 9100No (no API exists in any browser)NoYes (NWConnection)Yes (Socket)
WebUSBNoYesn/an/a
Web BluetoothNo (Apple has not shipped it)YesYes, MFi-only for Classic SPP; BLE printers via CoreBluetoothYes
Web SerialNoYes (desktop)n/aYes via USB-serial
mDNS/Bonjour discoveryNoNoYes — requires the com.apple.developer.networking.multicast entitlement, which Apple grants by application only [known]Yes (NsdManager)
Local network accessn/an/aRequires NSLocalNetworkUsageDescription + user consent prompt (iOS 14+)Normal
Epson ePOS-Print from JSYes only if the page is HTTP, or the printer serves a trusted HTTPS cert — an HTTPS page calling http://192.168.1.50/cgi-bin/epos/service.cgi is blocked as mixed content [known]Same problemn/an/a

Three land mines here, each of which has killed a POS roadmap:

  1. Mixed content. Your PWA is on HTTPS. The printer speaks HTTP on a RFC1918 address. Browsers block it, and you cannot get a public CA cert for 192.168.1.50. Workarounds: (a) a local agent on localhost with a real cert for a wildcard *.local.yourdomain.com resolving to 127.0.0.1 — this is what several vendors do and it costs you an installer per OS; (b) cloud-pull printing; (c) ship a native app. There is no fourth option.
  2. iOS multicast entitlement. Discovery of printers by Bonjour from an iOS app needs an Apple-approved entitlement. Application turnaround is weeks and can be refused. Plan a manual-IP-entry fallback from day one.
  3. Chrome's Private Network Access restrictions have been tightening; a public HTTPS page reaching a private IP is on a deprecation path [known — verify current Chrome policy before committing].

#2.6 Discovery and addressing

MechanismDetail
mDNS/Bonjour_printer._tcp (LPR), _pdl-datastream._tcp (port 9100), _ipp._tcp. Not all POS printers advertise; Epson TM-m30III does advertise _printer._tcp when networked [estimate — verify per firmware]
Epson proprietary discoveryUDP broadcast on port 3289 (used by EpsonNet Config / Epson Device Admin) [known]. Your discovery should send this alongside mDNS
Star discoveryStar's SDK ships a discovery API over UDP broadcast; also mDNS on newer models [known]
Brute-force ARP sweepScan the /24, TCP-connect port 9100, read the DLE EOT status response, match MAC OUI (00:26:AB Epson, 00:15:C7/Star OUIs) to identify vendor. Ugly, slow (2–15 s for a /24), and the only thing that works behind a switch with mDNS snooping. Ship it anyway.
Addressing policyDo not rely on DHCP. At install: assign a static IP outside the DHCP pool (e.g. .240–.250), record the MAC, and physically label the printer with its IP and role ("KITCHEN — 192.168.1.241"). Store MAC as the durable key so you can re-find the printer after an ISP swaps the router

#2.7 Routing rules (item → station)

Minimum viable model that survives contact with a real kitchen:

PrintStation  { id, name, printer_ids[], fallback_station_id, language, layout_template }
RoutingRule   { menu_category_id | menu_item_id | modifier_group_id, station_id, priority }
Ticket policy { consolidate_by: station|course|seat, fire_mode: on_send|on_course_fire, reprint_marks }

Requirements that always come up and that you must not defer:

  • Course firing. Starters print now; mains print when the waiter fires course 2. Without it you cannot sell to any table-service restaurant above a bistro.
  • Multi-station items. A burger prints to Grill; its side salad prints to Cold; the expo/pass gets the whole order. One item → N printers.
  • Modifier inheritance. "No onion" must reach the same station as the burger, in bold/red.
  • Kitchen language ≠ guest language. In PL/CZ/DE the kitchen brigade is frequently Ukrainian-speaking. Per-station language on menu item names is a genuine differentiator in this beachhead and costs you a translation column, not an architecture.
  • Void/modify tickets. A cancelled item must print a clearly marked VOID slip at the station that got the original, or the kitchen makes it anyway.
  • Reprint with a marker. Every ticket carries a short job ID; reprints are stamped ** REPRINT **.

#2.8 Failover, deduplication and paper-out

Detection. For raw 9100: DLE EOT 1..4 returns Automatic Status Back bytes — printer status, offline cause, error, and paper sensor (paper near-end vs paper-end) [known]. Poll every 20–30 s per printer. For CloudPRNT/SDP, status arrives free in every poll — a strictly better health signal.

Failure taxonomy and response:

ConditionDetect viaResponse
Paper near-endASB roll sensorNon-blocking toast to manager: "Kitchen printer paper low"
Paper outASBBlock? No. Route to fallback station, alert loudly, keep the job queued for reprint
Cover openASBSame as paper out; auto-recovers
Cutter jamASB error byte; needs ESC @ or power cycle to clear [known]Alert + instructions; some models auto-recover after cover open/close
Head overheatASBBack off 30 s, retry; common in a hot pass with a heavy raster job
TCP connect refused / timeoutSocketMark offline after 2 consecutive failures (~60 s), fail over, alert
Printer powered offSameSame. This is 40%+ of real incidents [estimate]

Fallback chain (configurable per station): primary printer → secondary printer at same station → expo printer → KDS screen → manager tablet push notification. The last two rungs are what actually saves service.

Duplicate suppression is the hard bit. With raw 9100 you get no job-level ack: the printer may have printed the ticket and then lost power before your socket flushed. You will either double-print or lose tickets. Mitigations that work in practice:

  • Assign a monotonically increasing per-station job number, print it on the ticket, and let staff resolve visually ("we already have #412").
  • After a socket error, do not auto-retry silently. Surface "Ticket #412 may not have printed — Reprint?" to the person who sent it.
  • With CloudPRNT/SDP, the printer acknowledges the job ID after printing — genuine at-least-once with dedupe. Another argument for the pull model on kitchen printers.

#3. Peripherals

#3.1 Cash drawer

  • Driven from the printer's DK port (RJ11/RJ12, 6P6C) with ESC p m t1 t2 (m=0 → pin 2, m=1 → pin 5). No separate driver, no separate cable to the PC. [known]
  • Voltage mismatch is the classic destroyed-hardware incident: Epson/Star DK ports drive 24 V solenoids; many cheap drawers are 12 V. A 12 V drawer on a 24 V port burns out; a 24 V drawer on a 12 V port simply doesn't open. Specify the drawer with the printer, always.
  • One DK port = one drawer. Two drawers (two cashiers, one printer) needs a splitter box (~EUR 60) or a second printer. Two-drawer setups also need cash-accountability logic in software.
  • Drawer-open sense line is readable via ASB → log every drawer open with a user ID and correlate against no-sale/void events. This is a genuine loss-prevention feature that sells; it costs ~0.2 eng-months.
  • SKUs: APG Vasario 1616 (EUR 110–150), Safescan SD-4141 (EUR 70–100), Star CB-2002 (~EUR 100) [estimate].

Used for salad-by-weight, deli counters, bakeries, self-serve buffets.

  • EU: the instrument must be MID-conformant (Directive 2014/32/EU, Annex NAWI) / OIML R76 class III, with CE + M marking and a metrology verification. US: NTEP CoC + NIST Handbook 44.
  • The trap: if your software takes the raw weight and computes the price shown to the customer, the price-computing function may fall inside the legally-relevant software and you inherit WELMEC 7.2 software requirements (checksum-protected legally relevant code, audit trail of legally relevant parameters, separation of legally relevant and non-relevant software, documented version identification) [known — verify with a notified body before scoping]. That is a notified-body engagement, not a sprint.
  • v1 rule: only integrate scales that are themselves price-computing and legal-for-trade with their own display (Dibal, Bizerba, CAS PD-II, Mettler Toledo Ariva). The POS receives a completed line item (weight + unit price + total), never computes it. That keeps you out of the legal metrology scope.
  • Protocols: mostly RS-232 ASCII (Toledo/8213-style, CAS, Dibal proprietary), a few USB-HID scales using HID Point of Sale Usage Page 0x8D — those are readable from Chrome via WebHID, which is a pleasant surprise for a browser back office [known].
  • Cost: EUR 400–1,500/scale, plus a periodic re-verification obligation (typically annual/biennial, per member state).

#3.3 Barcode scanners

  • HID keyboard-wedge is the whole answer for v1. Zero integration, works on iPad (Bluetooth HID), Android, Windows. Configure a CR suffix, optionally an STX prefix, via the manufacturer's config-barcode sheet.
  • App-side detection: buffer keystrokes and treat a burst with <30 ms inter-key gaps ending in Enter as a scan, not typing. Handle focus stealing — the most common bug is scanning into whatever field happens to be focused.
  • SKUs: Zebra DS2208 (EUR 90–130), Honeywell Voyager 1450g 2D (EUR 100–140), Datalogic QuickScan QD2430 (EUR 90–120) [estimate].
  • Also plan camera scanning on tablets/handhelds for loyalty QR and e-receipt codes — Sunmi V3 Mix / L2s Pro ship a real 2D engine, which beats camera scanning by ~3× in speed.

#3.4 Prep and label printers

ModelLanguagePrice EURUse
Brother QL-820NWBESC/P raster; Brother Print SDK (iOS/Android), b-PAC (Windows)250–320 [estimate]HACCP prep labels (use-by/date-marked), allergen labels. Uses DK die-cut/continuous rolls
Brother TD-4550DNWBZPL/EPL emulation + Brother450–550 [estimate]Higher-volume label; ZPL emulation means one code path with Zebra
Zebra ZD421dZPL II over raw 9100380–520 [estimate]Easiest label integration in existence: send ZPL text over a socket, done. ~1 eng-week
Star mC-Label3 / TSP100IVSKStar markup + CloudPRNT320–420 [estimate]Linerless takeaway bag labels; CloudPRNT keeps it in the same code path as receipts

Practical: target ZPL for anything serious (Zebra + Brother TD emulation), and add Brother QL only when a customer needs the small DK label form factor. HACCP date-labelling is a real EU obligation for prepped food and a low-effort upsell (~EUR 8–15/site/month).

#3.5 KDS and bump bars

OptionCost/stationNotes
Elo I-Series 4, 15"/22" Android, wall-mountedEUR 1,150–1,700 [verified/est]Sealed front, 3-yr warranty, correct for a hot line
Sunmi D3 Pro / T3 as KDSEUR 605–690 [verified]Cheapest credible; 1-yr warranty
Android TV box / Chromebox + commercial 24–32" monitorEUR 120 box + EUR 200–400 monitorCheapest big-screen; monitor must be commercial-grade (16/7 or 24/7 duty) or it dies in a year
iPad + wall mountEUR 520–690Only for cold prep / bar

Bump bar — do not skip:

  • Logic Controls KB1700 (USB HID, programmable, spill-resistant): EUR 250–350 [estimate]. Industry standard.
  • Budget alternative: a EUR 15 USB numeric keypad with printed key caps. Works. Looks amateur. Sells anyway to a 1-site café.
  • Foot pedal or a large physical "BUMP" button for the fryer station.
  • Implementation is trivial (HID key events → actions) but you must support key remapping per site and lock the KDS app so the keypad can't nav away.

KDS software requirements that surprise people: order age colour thresholds, all-day counts, recall of bumped orders, split-by-station vs. expo view, prep-time prediction, and screen-off/on scheduling so a 22" panel doesn't burn in with a static header.

#3.6 Customer-facing displays, kiosks, handhelds, pagers, caller-ID

DeviceRecommendation
CFDPrefer the dual-screen variants of the Android AIO (Sunmi D3 Pro dual-screen, +EUR 80–150) over a separate device. Second-best: a EUR 150 Android tablet in kiosk mode on a pole mount. Content: line items, total, loyalty prompt, tip prompt, QR for e-receipt
Self-order kioskElo 22" I-Series + floor/counter stand: EUR 1,800–2,600 [estimate]; Sunmi K2 Mini: EUR 1,200–1,800 [estimate]. Defer to v2 — the blocker isn't the screen, it's the unattended payment terminal (PAX IM30, Worldline/Nexi unattended units), which is a different PCI PTS approval class and a separate acquirer certification. Kiosks are a 6–9 month project of their own
HandheldsSunmi V3 Mix EUR 575 / L2s Pro EUR 535–595 [verified], or Zebra TC22/TC27 EUR 800–1,100 [estimate]. Realities: waiters drop them (specify IP67 + 1.2 m drop), batteries do not survive a double shift (specify swappable, buy 1.5 batteries/device), and they get taken home. Cheapest credible alternative is a mid-range Android phone in a rugged case at EUR 200
PagersRetekess/LRS coaster pagers, EUR 350–600 for a 10–20 pager set + charger base [estimate]. Integration is poor — most bases take a serial "call number N" command at best. Do not integrate in v1. Use SMS or WhatsApp "your order is ready", which costs EUR 0.03–0.05/message and is strictly better data for the CRM side of the product
Caller-IDPSTN is effectively dead in EU. Do not buy USB CID modems. Integrate at the SIP layer: 3CX / Asterisk AMI or ARI webhook on INVITE, or a Twilio/Vonage number → webhook → pop the guest's CRM record. ~1.5 eng-weeks and it works for VoIP, mobile, and any market

#4. In-restaurant networking — why "the printer is offline" is ticket #1

#4.1 The physics

A commercial kitchen is a worst case for 2.4 GHz: stainless steel surfaces everywhere (specular reflection + multipath), a microwave oven radiating in channels 6–11, walk-in fridges as Faraday cages, and tiled walls. A dining room 8 m away can be fine while the pass is at −85 dBm. 5 GHz has better spectrum but worse penetration through the brick/tile wall between the dining room and the kitchen.

Rule: anything that prints gets a cable. This one policy removes the largest single class of support tickets.

#4.2 Reference site network (single-site, 40–80 covers)

ComponentSKUPrice EURNotes
Router/firewallTeltonika RUT241 (4G) or UniFi Cloud Gateway130–250 [estimate]RUT241 gives you 4G and the primary link in one box for a small site
PoE switchUniFi Flex Mini 2.5G / TP-Link TL-SG1008P (8-port, 4× PoE)60–130 [estimate]PoE powers the APs, not the printers
APsUniFi U6/U7 Lite/Pro ×1–2110–200 each [estimate]One in the dining room, one near (not in) the kitchen
4G failoverBuilt into RUT241, or a separate LTE dongle+EUR 8–15/mo SIMFor card payments and cloud sync during ISP outages
UPS600–900 VA line-interactive (APC BE850G2) for router+switch+till90–150 [estimate]In Ukraine this is not optional — see §4.4
CablingCat6, 3–6 runsEUR 200–500 installed [estimate]The single biggest install-day variable. In a listed/renovated building it can be EUR 1,500+
TotalEUR 600–1,300 + cablingTypically 20–35% of the total hardware bill and the part customers didn't budget for

#4.3 VLANs and PCI scope

Minimum three VLANs: POS (terminals, printers, KDS), PAY (card terminals), GUEST (client isolation on, rate-limited, no route to POS/PAY). Segmenting the payment terminals materially reduces PCI DSS scope; PCI DSS v4.0.1 is in force with the previously future-dated requirements mandatory since 31 Mar 2025 [known — verify exact SAQ applicability with your acquirer]. With a semi-integrated / P2PE terminal, the merchant typically lands on SAQ P2PE or SAQ B-IP instead of SAQ D, which is the difference between a 30-question form and a 300-question one.

Practical caveat: 70% of your SMB sites will have an ISP-supplied all-in-one router with no VLAN support. Your two options are (a) ship your own router as part of the bundle — the right answer, EUR 130–250 — or (b) accept a flat network and design for it (device-level auth, TLS everywhere, no trust in the LAN).

#4.4 Ukraine/CEE-specific: power

Ukrainian sites experience scheduled and unscheduled outages. A POS that dies with the mains is unsellable there. Required stack:

  • Offline-first POS — orders, payments-by-cash, and printing must work with zero internet. This is an architectural requirement that reaches into every layer of the product, not a hardware item.
  • UPS on router + switch + one till + one kitchen printer (~250–400 W for 2–4 h): APC BE850G2 (EUR 120) for a short bridge, or an EcoFlow River 2 / River 3 (EUR 220–350, 256–300 Wh) for multi-hour [estimate].
  • 4G/Starlink failover.
  • Terminals with internal batteries (handhelds, Sunmi V-series, iPads) keep selling when the AIO doesn't. This is a real reason to favour tablets/handhelds in the UA beachhead.

This is a genuine competitive edge: Lightspeed/Square/SumUp do not design for a 4-hour blackout. Say so in the sales deck.

#4.5 Root-cause ranking for "the printer is offline" [estimate, from category experience]

RankCauseSharePrevention
1Printer power unplugged (staff needed the socket)~25%Labelled plug, cable clip, heartbeat alert within 60 s
2DHCP lease changed / router replaced by ISP~20%Static IPs outside the pool; MAC-keyed re-discovery
3Wi-Fi printer out of range / congested~15%Don't sell Wi-Fi printers
4Cover ajar / paper out / cutter jam~15%ASB polling + proactive alert before it blocks
5Cheap unmanaged switch or PSU failed~8%Spare switch in the van; a EUR 25 switch is a false economy
6Client isolation / guest VLAN misconfig after someone "fixed the wifi"~7%Ship the router; lock the config
7Firmware/app regression on our side~5%Staged rollout, per-model regression rig
8Actual printer hardware failure~5%Spare pool + advance-exchange warranty

Support economics: at 0.6–1.2 hardware tickets per site per month and 15 min average handling [estimate], one support FTE covers roughly 400–700 sites. Build remote diagnostics (printer status page, "send test print" button, network self-test, one-tap log upload) before you have 100 sites, or your gross margin evaporates into a phone queue.


#5. Build your own hardware? (Short answer: no. Long answer below.)

#5.1 What "build your own" actually means

Three tiers, increasing cost:

TierWhat you getMOQNRELead time
T1 — Cosmetic white labelYour logo on the boot animation, silkscreen, retail box, preloaded ROM300–1,000 units [estimate]EUR 5–20k [estimate]8–12 weeks
T2 — Custom ROM + minor mechCustom Android build, your MDM baked in, custom port layout or bezel2,000–5,000 units [estimate]EUR 50–150k [estimate]16–24 weeks
T3 — New ID / new toolingYour industrial design, injection-mould tooling, custom mainboard5,000–10,000 units [estimate]EUR 250k–1M+ [estimate] (tooling alone EUR 60–200k)9–15 months

ODM candidates: Sunmi, PAX, Centerm, iMin, Telpo, Urovo, Newland, Feitian. All will do T1; Sunmi and Telpo are the most cooperative with T2 at small volumes [estimate].

#5.2 Indicative BOM for a 15.6" Android AIO with printer [estimate]

ItemCost USD
15.6" FHD panel60–80
PCAP touch + cover glass22–35
SoC board (RK3568 / Snapdragon 6-series), 4 GB / 64 GB45–90
80 mm thermal print mech (Seiko CAPD347 / Fujitsu FTP-628 / APS) + controller25–40
NFC module, MSR (optional), speaker, Wi-Fi/BT module15–25
PSU + cabling + housing (tooling amortized)30–55
Assembly, test, packaging20–30
BOM total217–355
ODM invoice price (BOM × 1.4–1.6)310–520

Against a Sunmi D3 Pro at EUR 605 retail / ~EUR 400 at reseller price [verified retail, estimated reseller], your saving at T1 is near zero; at T2/T3 it is maybe EUR 60–120/unit — which you recover only after 3,000–8,000 units, before counting the costs below.

#5.3 The regulatory bill you inherit the moment you put your brand on it

This, not the BOM, is the argument.

ObligationTriggerCost/effort
CE marking — EMC 2014/30/EU, LVD 2014/35/EU, RED 2014/53/EU (radio)Placing under your own brandEUR 15–40k lab testing per SKU + technical file [estimate]
UKCAGB marketLargely CE-equivalent testing, additional paperwork [estimate]
FCC Part 15 B/CUS marketUSD 8–25k per radio SKU [estimate]
RoHS / REACHEUSupplier declarations + your own compliance file
WEEE producer registrationEU, per member stateRegistration + annual fees + take-back. Germany (Stiftung EAR) requires a registration and a guarantee for B2C; Poland (GIOŚ/BDO), France (eco-organisme), etc. Budget EUR 500–3,000/country/yr + admin [estimate]
EU Battery Regulation 2023/1542Any device with a batteryProducer registration, due diligence, labelling; obligations phase in through 2025–2027 [known — verify current phase-in dates]
GPSR — Regulation (EU) 2023/988, applicable since 13 Dec 2024Any consumer-facing product; private-labelling makes you the manufacturerEU responsible person, technical documentation, traceability, incident reporting [known]
Cyber Resilience Act — Regulation (EU) 2024/2847"Products with digital elements" placed on the EU market under your brand. Vulnerability-reporting obligations from ~Sep 2026; main obligations ~Dec 2027 [known — verify exact dates]SBOM, coordinated vulnerability disclosure, security updates for the support period (5 years default), conformity assessment. This is the sleeper cost — it can be several engineer-months/year forever
Packaging (PPWR), CE for the PSU, EU declarations of conformityAlwaysOngoing

If you resell under the OEM's brand, essentially all of the above stays with Sunmi/Epson/Elo. That is worth more than EUR 100/unit of margin to a 4-person company.

#5.4 Operations you also inherit

  • DOA rate 1–3%; annual failure rate 3–8% for printers and AIOs [estimate]. At 500 installed sites × 2.5 devices, that's 40–100 RMAs/year.
  • Spare pool at 5–8% of installed base, in-region. At 500 sites that's ~60 units of dead capital, ~EUR 30–45k.
  • RMA to China is 3–8 weeks door-to-door. You must ship a replacement first and eat the float, or your customer is down for a month.
  • Working capital. 300 sites × EUR 1,400 hardware = EUR 420k of inventory + in-transit. For an S1 bootstrapped team this alone ends the discussion. Even at S2 (EUR 5–10M), spending EUR 500k on inventory instead of 4 engineers and 3 salespeople is a bad trade.
  • Firmware ownership. Own hardware means owning Android security patches, bootloader, and OTA — 1.5–3 engineer-months/year, minimum.

#5.5 Who builds and why

VendorBuilds hardware?Why
Square, SumUp, Zettle, ToastYesPayments-led. The reader is the moat; they subsidize hardware against interchange revenue and have 100k+ unit volumes. Toast raised ~USD 900M+ pre-IPO to do it [known]
Lightspeed, Revel, TouchBistro, Storyous, Dotypos, poster/Syrve (CEE)No — they certify and resellSoftware-led. Hardware is a channel/support cost, not a moat

You are software-led at v1 and you are not an acquirer. Resell. Revisit only if (a) you cross ~3,000 terminals/year, and (b) you become the merchant-of-record on payments so hardware can be subsidized, and (c) you have a dedicated hardware/ops hire. All three, not any one.

One nuance where the brief is slightly wrong: don't just "certify commodity hardware" — sell a branded bundle (your box, your quick-start card, your pre-provisioned config, your SIM, your support number) of OEM-branded devices. You get the perceived integration of own hardware and none of the CE/GPSR/CRA/WEEE liability, because the device is still legally Sunmi's.


#6.1 Tiers

Tier A — "Café / bar, 1 till" (target BOM EUR 1,200–1,700)

RoleSKUPrice EURWhat breaks
TillSunmi D3 Mini (GMS if available, else D3 Pro GMS)465–639 [verified]Integrated 58 mm printer is narrow for itemised receipts; printhead is the wear part
Receipt printer (if separate)included in D3
Cash drawerSafescan SD-4141, 24 V70–100 [estimate]Voltage mismatch; runners jam with coins
Card terminalacquirer-supplied (Viva/SumUp/Nexi/Adyen)0–299Estate-locked; pairing drops
RouterTeltonika RUT241130–180 [estimate]Nothing; it's the most reliable box on the list
UPSAPC BE850G2110–140 [estimate]Battery dies at 3 yr

Tier B — "Full-service restaurant, 2 tills + kitchen" (target BOM EUR 3,500–5,500)

RoleSKUQtyPrice EUR eachWhat breaks
TillSunmi D3 Pro GMS 15.6"2639 [verified]Grease film on glass; Android version rot
Front receipt printerEpson TM-m30III (C31CK50152, all-interface)1314.87 [verified]Autocutter after ~1–1.5 M cuts; paper roll changes
Kitchen printerEpson TM-U220II (Ethernet)1–2280–340 [estimate]Ribbon every 4–10 weeks; loud; slow (6 lps) but survives steam
Bar printerStar TSP143IV LAN (CloudPRNT)1230–280 [estimate]Thermal fade near ice/condensation
KDSElo I-Series 4 15.6" Android, wall mount1~1,150 [verified USD-derived]Nothing for 3 years; that's why it costs this
Bump barLogic Controls KB17001250–350 [estimate]Keys stick with grease; wipeable membrane
HandheldSunmi V3 Mix or L2s Pro2535–595 [verified]Dropped; battery; lost
Cash drawerAPG Vasario 1616, 24 V1110–150 [estimate]Runners
ScannerZebra DS2208 (only if retail/bottle-shop)0–190–130 [estimate]Cable strain relief
NetworkRUT241 + 8-port PoE switch + 1–2 UniFi U6 Lite1 set400–650 [estimate]Cabling labour is the variable
UPSAPC BE850G2 or EcoFlow River 21110–350 [estimate]Battery at 3 yr

Tier C — "Small chain / high-volume QSR": swap the front printer for TM-T88VII (EUR 400–480), add a second KDS, add Star SP742 HI X at the expo, add a Zebra ZD421d for takeaway labels, add a managed UniFi gateway.

#6.2 The explicit "we do NOT support in v1" list

Publishing this saves more engineering time than any feature.

  • Wi-Fi-only printers (LAN or USB only; Wi-Fi is "unsupported, best effort")
  • Serial-only legacy printers without a network bridge
  • Bluetooth printers on iOS that are not MFi-certified
  • Coaster pagers (use SMS/WhatsApp)
  • USB caller-ID modems (use SIP webhooks)
  • Non-price-computing scales (legal metrology risk)
  • Self-order kiosks with unattended payment (v2)
  • Windows POS terminals as primary — except as a fiscal-printer bridge in PL

#6.3 The elephant: fiscalization changes the printer matrix per country

This is hardware policy, not just tax policy, and it must be settled before you buy anything.

MarketRegimeHardware consequence
UkrainePRRO — software fiscal registrar, receipts signed and transmitted to the ДПС API; no certified hardware device required [known]Best case for us. Any ESC/POS printer works; the fiscal receipt is generated in software. This is a real reason to beach-head in UA
PolandOnline fiscal cash registers mandatory for gastronomy; certified fiscal printers (Posnet Thermal XL2 Online, Elzab Mera Online, Novitus HD Online) with GUM homologation; plus "kasy wirtualne" (virtual/software cash registers) approved for gastronomy since ~2020–21, which require GUM certification of your software [known — must verify current GUM requirements and the approval process/timeline]Either you drive a fiscal printer over a proprietary serial/USB protocol (Posnet Thermal protocol; vendor SDKs are frequently Windows DLLs, forcing a Windows or Linux bridge box on-site, +EUR 200–350/site), or you certify a virtual cash register with GUM. Both are multi-month projects. This is the #1 gate on the Polish market
CzechiaEET repealed, effective 1 Jan 2024 [known]No fiscal hardware. Clean market
RomaniaAMEF electronic fiscal devices mandatory (Datecs, Tremol, Custom), electronic journal + periodic ANAF reporting [known]You must integrate a certified fiscal device over serial/USB with a vendor protocol. Similar cost profile to Poland
GermanyKassenSichV / TSE — every till needs a certified Technical Security Element (TSE) [known]TSE as a USB stick (EUR 60–200), microSD, or cloud TSE (fiskaly, Deutsche Fiskal, ~EUR 5–12/till/month). Cloud TSE is the sane path and is a software integration, not a device — Germany is more tractable than Poland
Austria / France / ItalyAT: RKSV signature device (smartcard/HSM or cloud). FR: NF525 / loi anti-fraude software certification. IT: telematic RT printers (Epson FP-81II RT, Custom) [known]IT is hardware-bound (RT printers); FR is a software certification; AT is a cloud-signable device
USNo fiscalizationOnly sales-tax logic. Easiest of all

Impact on this document's recommendations: the "Epson TM-m30III everywhere" plan holds in UA, CZ, DE, AT, FR, and the US. It does not hold in PL, RO, or IT, where a certified fiscal printer sits between your software and the paper. Budget 4–8 engineer-months per fiscal-hardware market on top of everything in §7.


#Build effort

Assumes S1 (founder + 2–4 engineers, AI-assisted). AI assistance helps a lot with the ESC/POS/ZPL/XML plumbing and almost not at all with device-specific quirks, which require the physical device on a desk. Budget EUR 6–10k for a device lab (one of every SKU in §6.1 plus 3–4 clones) — without it these estimates are fiction.

#Work itemEng-monthsVariance drivers
1Print rendering core: layout DSL → 1-bit raster + text fast path, code pages (CP852/1250/866/1251), logos, QR, barcodes, paper widths 58/76/80 mm2.5Raster-only halves this to ~1.5; supporting the text fast path per model doubles the model-specific bugs
2Transport drivers: raw TCP 9100, Epson ePOS-Print XML + ePOS-Device SDK, Star CloudPRNT (+MQTT), Epson Server Direct Print, Android USB, iOS MFi Bluetooth3.0Each additional transport ≈ 0.5–0.7 mo. Dropping BT/USB for LAN-only saves 1.0 mo and loses handheld printing
3Discovery & provisioning: mDNS, Epson UDP 3289, Star discovery, ARP+9100 sweep, iOS multicast entitlement, static-IP wizard, MAC-keyed re-binding, physical labelling flow1.5Apple entitlement approval is an external dependency of unknown duration; manual-IP fallback is mandatory anyway
4Routing engine: item/category/modifier → station, multi-station fan-out, course firing, consolidation modes, per-station language, void/modify tickets, reprint with job IDs2.0Course firing and multi-station fan-out are ~60% of this. Cutting them makes the product unsellable to table service
5Health, failover, dedupe, telemetry: ASB polling, offline detection, fallback chain, at-least-once semantics, "may not have printed" UX, per-printer health page, alerting2.0Getting duplicate-suppression right is the risk; the naive version ships in 0.7 mo and generates angry tickets forever
6KDS app (Android + web) + bump bar + expo view + all-day counts + recall + screen scheduling3.0A "list of tickets" ships in 1.0; a KDS a chef will actually accept is 3.0
7Cash drawer (kick + open-audit), HID scanner handling, customer-facing display1.0Low risk
8Label/prep printing: ZPL (Zebra + Brother TD), Brother QL SDK, HACCP date-label templates1.0ZPL alone is 0.4; adding Brother QL SDKs for iOS+Android is +0.6
9Scales: RS-232 protocol adapters (Toledo/CAS/Dibal), USB-HID + WebHID, price-computing-scale-only policy1.0+2.0–4.0 if you ever decide the POS computes trade prices → WELMEC 7.2 / notified body
10Device management: kiosk lockdown, OTA APK distribution, remote log pull, remote reboot, config push, own push transport for non-GMS devices2.0Using an off-the-shelf MDM (Esper, Scalefusion, Sunmi's own) cuts this to ~0.8 at EUR 2–5/device/mo
11Hardware certification lab: per-model test matrix, automated regression rig (a shelf of printers + a nightly job), documented compatibility list1.5 + 0.25/quarter foreverNumber of certified SKUs is the multiplier. 6 SKUs is manageable; 20 is a full-time job
12Installer/field tooling: site survey checklist, network self-test, one-tap provisioning, printed labels, install runbook1.0Directly reduces support cost; skipping it is a false economy
13Support tooling & docs: printer status page, "send test print", diagnostics bundle, troubleshooting decision tree0.5
Subtotal — hardware & peripherals v1≈ 22–26 (take 24)
AAdd-on: Polish fiscal printer integration (Posnet/Elzab/Novitus protocols, Windows/Linux bridge box, service-technician workflow)+4.0–6.0Windows-only vendor DLLs; homologation and authorised-service constraints
A'Alternative: Polish virtual cash register (GUM certification of our software)+6.0–10.0 + external cert cost/timeCertification body timeline is the risk, not the code
BAdd-on: Romanian AMEF integration+3.0–5.0Similar shape to PL fiscal printers
CAdd-on: German cloud TSE (fiskaly / Deutsche Fiskal)+1.5–2.5Pure API work; cheapest fiscal market to enter
DAdd-on: self-order kiosk + unattended payment terminal+5.0–8.0Unattended EMV certification with the acquirer dominates

Calendar time, S1 (3 engineers, ~1 on hardware full-time + shared): the 24 eng-months of core work is 9–12 calendar months with one dedicated hardware/integrations engineer plus part-time help — and it is genuinely parallelizable with the POS app work. S2 can compress to 5–6 months with 3 dedicated engineers plus a field/ops hire, but not below that, because device quirks are discovered serially at real sites.


#Open questions / what would change this answer

  1. Which country is the true beachhead? If it's Poland, fiscalization hardware is the first thing built and adds 4–10 eng-months plus an external certification dependency — that reorders the entire roadmap. If it's Ukraine (PRRO, software-only fiscal), the hardware plan in §6 is correct as written and you can ship in 9 months. Verify: current GUM requirements and approval timeline for kasy wirtualne in gastronomy; current ДПС PRRO API and whether the software-RRO route still requires no certified device.
  2. Browser-first or native-first? This is the single highest-leverage decision in the document. Browser-first forces cloud-pull printing (Epson SDP / Star CloudPRNT), which caps your printer matrix to those two vendors' supported models and adds 0.2–10 s receipt latency. Native-first (iOS + Android apps) unlocks raw 9100 and every clone printer, at the cost of app-store distribution and two more codebases. Verify: current Chrome Private Network Access policy and whether Apple has granted multicast entitlements for POS use recently.
  3. Do we become a payment facilitator / merchant of record? If yes, own hardware becomes defensible (subsidize the terminal against interchange, Square/SumUp model) and §5's conclusion flips at ~3,000 units/yr. If no, resell forever.
  4. Exact reseller pricing. The EUR figures in §1.2 are single-unit retail [verified]. Real distributor pricing at 50–200 units/yr is the number that decides whether hardware is a 15% or a 30% GM line. Verify: get quotes from Jarltech, Logiscenter, ITG Store, and Sunmi EU direct for a 100-unit annual commitment on D3 Pro GMS, TM-m30III, TM-U220II, TSP143IV.
  5. Cyber Resilience Act applicability. If CRA obligations extend to POS software placed on the EU market — not just branded devices — the "just resell" escape hatch shrinks and you owe SBOM + vulnerability handling + 5-year support regardless. Verify: current CRA guidance on SaaS vs. "products with digital elements," and the Sep 2026 reporting-obligation date.
  6. Legal metrology. Whether a POS that receives weight from a legal-for-trade scale and prints it on a receipt is itself in scope of WELMEC 7.2 varies by member state's interpretation. If it is in scope even for our receive-only design, weight-based selling becomes a v3 feature, not a v1 one. Verify: with a notified body (e.g. NMi, PTB) in the target market before promising a deli-counter customer anything.