Restaurant Merchant

v1.0.0-alpha.183 · Refund handling · ~42 MB

Download APK

What's new in alpha.183 · Refund handling

Refunds on some marketplace-billed orders now go through as a full refund. For orders paid through certain platform billing setups, a refund is issued for the whole order rather than a partial amount. Everyday orders are unchanged — you can still refund any amount.

From alpha.182 · Quieter when you're closed

The app uses less data and battery outside your opening hours. It used to check the server for new orders every 15 seconds around the clock — including overnight, with the shop shut and nothing able to come in. It now checks less often once you're closed, and goes straight back to full speed the moment you reopen.

Orders still arrive the same way. New orders are sent to your tablet the instant they're placed rather than waited for, so nothing is slower. If one arrives while the app has eased off, it wakes up immediately.

Nothing on screen has changed in this update.

From alpha.181 · Filters & clearer orders

Quick filters above the order list. Tap In Kitchen or Ready to see just that part of the queue, with a count on each so you know what's waiting before you tap. Tap again to go back to everything.

Filter by service. If your store does more than one, you'll also get Pickup, Delivery and Dine-in filters — only the ones you actually offer.

You can always see which filter is on. Previously a filter could quietly shorten your list with nothing on screen explaining why. Now it shows as a badge you can tap to clear.

Scheduled orders show their time when you open them. The order list showed it but the order itself didn't — now there's a band at the top saying exactly when it's due, alongside the paid/unpaid one.

The new-order screen is much easier to read. The item list is now dark text on white instead of white on green, and the items are noticeably bigger on phones. Removed ingredients (like "no onion") now stand out in red, since those are often allergies.

From alpha.178 · A tighter order screen

Order cards are a third shorter. The same information, packed into far less space — six orders now fit on screen where four did before, so you can see your whole queue without scrolling.

Orders are grouped by what they need. The list is split into Needs action, In the kitchen and Ready, so the ones waiting on you sit at the top instead of being mixed in with everything else.

Paid or unpaid is now obvious. Opening an order shows a clear band at the top — green when it's been paid, solid red with the amount to collect when it hasn't. It's the only solid block of colour in the app, so an unpaid order can't be mistaken for a paid one at the counter.

The print button has moved away from the main button. On every order card and inside the order itself, printing now sits well clear of Mark ready and Complete, so a thumb reaching for one can't land on the other.

On a tablet in landscape, tapping an order opens it beside the list instead of covering it — the queue stays visible while you read an order.

Test orders no longer count towards your takings. Orders sent from Settings to check a printer were being added to today's order count and revenue. They're now left out of every figure, though they still appear in the list marked TEST.

Auto-confirmed orders print on startup. If the server accepted an order while the app was closed, it now prints when the app comes back up instead of being missed.

From alpha.177 · A new look

The app has been redesigned. Every screen has been rebuilt to be calmer and easier to read at a glance — especially on a tablet in landscape, where the old layout left half the screen empty.

The top bar is no longer a big block of colour. Your store's status now sits in a single tap-to-change pill (Open / Paused / Closed / Outside hours), and on a tablet today's orders, takings and pace are shown right there in the header instead of being hidden behind an icon.

Order cards tell you more at a glance. Each card now shows where the order came from (your website, Uber Eats, DoorDash), its number, and its current stage along the top. The timer is a ring, so you can see how much time is left without reading the numbers, and a coloured stripe down the side of the card tells you the order's stage from across the kitchen.

Nothing flashes or pulses any more. The old breathing animations have been removed — they were distracting on a screen you watch all shift, and they slowed down older tablets.

Easier to read. Prices and timers no longer jiggle as they count, text has been checked for contrast so nothing is washed out, and buttons are bigger and easier to hit with a thumb.

Your settings screen is unchanged.

From alpha.176 · USB printers, scheduled orders & a freeze fix

USB printers are now supported. If your terminal has a USB port, you can plug a thermal printer straight in — choose USB printer when adding a printer and it'll appear in the list. (The option only shows on devices that can take a USB printer.)

Scheduled orders move to the kitchen on their own again. The "Time to prepare" screen — the reminder that pops up when a scheduled order is due to be cooked — had been switched off after it caused a problem on one store. The underlying cause is fixed, so it's back on, with a safety net that quietly steps aside for a single order rather than ever holding up the whole app.

Scheduled orders no longer print twice. If the app was closed or restarted between accepting a scheduled order and its cooking time, the ticket could print a second time. It now remembers what it has already printed, even across a restart.

Fixed a freeze when printing. On slower terminals the app could lock up and be closed by Android while fetching a receipt to print. Receipt fetching and image processing now happen in the background, so the screen stays responsive.

The new-order screen uses the whole tablet. In landscape, order details now sit on the left with the item list in its own column at a much larger size — readable across the kitchen. The screen no longer pulses.

Includes everything from alpha.169–175 — Star printer support, live order updates, and the reliability work below.

From alpha.175 · Star printers auto-detected

Star Micronics Bluetooth printers work automatically. Star's TSP-series heads speak their own language instead of the standard one, so they would connect but print nothing. The app now recognises a Star printer by its hardware and prints receipts, kitchen tickets, end-of-day reports and prep dockets through Star's own driver — including from the Test Print button. (There's also a Star Micronics printer switch when adding a Bluetooth printer, but you no longer have to find it.)

From alpha.168 · Nothing fails silently

A failed accept or reject now tells you — and never loses the order. If accepting or rejecting an order didn't go through (a dropped connection, say), the order used to just disappear from the screen with no receipt and no warning. Now it stays put, a clear message explains what happened, and you can try again. A reject that doesn't go through says so plainly — the order was not cancelled and the customer was not refunded — so it's never missed.

Changing an order's status shows a Retry if it fails. Marking an order Ready / Preparing / etc. no longer just silently snaps back when the connection hiccups — you get a message with a one-tap Retry.

The app recovers instead of crashing. A run of rare edge cases — a printing hiccup mid-accept, an unusually long menu, a background alert that Android blocks — could close the app. These now fail softly and keep you working. Crash reporting was added underneath so any that remain get spotted and fixed quickly.

Removed from the dashboard? The app returns to pairing on its own. If this device is unpaired from the Dashboard, the app now goes back to the pairing screen automatically instead of sitting on errors. And unpairing from Settings now works even when offline.

From alpha.162 · Choose your receipt template

Adding a printer now always asks which receipt template to use. Previously, if nobody had opened the receipt editor in the Dashboard, the setup screen showed no template choice at all. You'll now always see a Default (built-in) option alongside any templates you've created.

Bluetooth setup guidance. When you add a Bluetooth printer, the wizard now recommends turning on Built-in text receipt — the reliable option for Bluetooth, where designed image receipts can print garbled.

From alpha.161 · Easier-to-tap order cards

The reprint button is no longer next to the action button. On the order cards, the printer icon sat right beside Mark Ready / Start Preparing, which made it easy to hit the wrong one in a rush. Actions now sit on their own row with the printer at the far left and the main button at the far right — and the customer's name is no longer cut short.

The order total is easier to read. Bigger and bolder on every card, instead of being tucked into the small grey line.

From alpha.160 · Scheduled orders, quiet after hours

Pre-orders no longer ring after hours. A scheduled order placed while you're closed now waits silently — no alarm, no notification — and appears as one accept/reject list when you open.

Accepting always prints. Accepting an order from its details screen (and accepting a scheduled order) now prints the receipt and kitchen docket, which it previously skipped in some cases.

Order screen fixes. The action buttons no longer sit under the Android navigation bar, the item list and the customer's note now show on the new-order screen, and a scheduled order arriving while you're open looks and behaves like any normal order.

From alpha.158 · Reliable Bluetooth printing & a clearer order screen

Bluetooth receipts that don't garble. Each printer now has a Built-in text receipt option (Settings → Printers) — recommended for Bluetooth printers. It prints a fast, plain-text receipt that stays readable, instead of the designed image that can come out as garbled characters over Bluetooth. Bluetooth connections are also more reliable underneath. Your Sunmi built-in printer and Wi-Fi printers are unchanged.

A clearer new-order screen. When an order comes in, the type — Pickup, Delivery or Dine-in — is now big and obvious at a glance. The item list scrolls inside its own panel so Accept and Reject never get pushed off screen, the customer's note stands out in a banner, and the auto-accept countdown now runs inside the Accept button itself.

Scheduled orders, brought in line with normal orders. Pre-orders placed while you're closed now wait quietly — no alarm, no printing — and appear as one clear accept/reject list the moment you open. Accepting prints the kitchen docket straight away, anything already past its time is flagged LATE, and you can review an order's items before deciding.

Prep time always on the receipt. Fixed a case where accepting an order from its details screen could print a receipt with no prep time on it.

From alpha.153 · A layout made for tablets

Turn your tablet sideways for a whole new view. In landscape, the app now uses the full screen — a side menu on the left, your orders in the middle, and the selected order's details on the right, all at once. Tap an order to see its items without leaving the list. Phones and upright tablets keep the layout you already know.

Settings, tidied up. Each settings section is now a card you tap to expand, so it's no longer one long scroll. The end-of-day report stays visible with its print options tucked away until you need them, and each store now shows only the order services it actually offers — with a Refresh to pick up any you switch on from the dashboard.

Test an order from any screen. A new Test order button in the top bar sends a test order through the whole flow — the alarm, the new-order screen, and printing — so you can check your setup end to end. It's clearly marked as a test and never counts as a real order.

From alpha.152 · Live courier tracking

Follow the driver without leaving the order. For deliveries handled by a courier service, the order screen now shows the driver's progress as it happens — dispatched, driver assigned, on the way, delivered — with the driver's name, one-tap calling, and the live tracking map right there in the order. Delivered orders collapse to a tidy one-line summary.

The app no longer asks you to do the courier's job. When a courier is handling the delivery, your part finishes at Mark Ready. The "Out for delivery" and "Complete" buttons now disappear for those orders, because the courier reports those steps themselves — previously tapping them just failed. If you ever need to close one of these orders yourself, use Override status in the order's menu.

Quieter driver updates. Driver progress now arrives as a silent notification, so it never rings like a new order. If an automatic dispatch fails, you'll see a clear message and a Retry dispatch button.

From alpha.151 · Your prep times, everywhere they matter

The prep time buttons now match what you set up. The new-order screen used to show a fixed set of prep time buttons that ignored the prep times configured for your store — so changing them had no effect on the terminal. It now shows your prep times, per service, and your default is pre-selected and highlighted. Pickup, delivery and dine-in each use their own list and their own default; previously delivery and dine-in orders were shown the pickup default by mistake.

From alpha.150 · Text receipts on the built-in printer

Text templates now print as text on Sunmi terminals. If you chose a text-style receipt template, the built-in printer on Sunmi devices still printed the image-style receipt instead. It now prints the text version you selected — which is also noticeably faster. Image templates are unchanged.

From alpha.149 · Order alerts on every screen

New orders now ring and print no matter which screen you're on. The new-order alert only existed on the Home screen, so if staff were viewing an order or in Settings when an order came in, there was no sound and no docket — silently. The alert now sits above the whole app and works everywhere.

Orders confirmed automatically now print too. If your store confirms orders automatically on a timer, the server could confirm an order before anyone tapped Accept — and the kitchen docket never printed. Those orders are now picked up and printed. (For security, the alert still doesn't appear on the PIN lock screen — those play a sound instead.)

From alpha.148 · More reliable order alerts

Stop missing orders when the app is in the background. Some terminals (especially Sunmi) on "Optimised" battery mode let Android throttle or kill the app in the background, so new orders could arrive with no ring and no print until someone opened the app. The app now asks — with a clear explanation first — to be exempted from battery optimisation, so it stays awake to receive orders. There's also a Battery optimization status row in Settings → Diagnostics showing whether the exemption is active, with a one-tap fix.

From alpha.147 · Live delivery tracking

Follow your delivery orders in real time. When a delivery order is auto-dispatched to a courier, its details now show a live tracking card: a status timeline (dispatched → driver assigned → on the way → delivered), the courier's name with one-tap calling, and a Live tracking button that opens the courier's live map. Once delivered, it collapses to a tidy summary. Only appears for stores set up for automatic courier dispatch.

From alpha.146 · Faster, reliable Bluetooth receipts

Image receipts print faster. Designed (image-mode) receipts used to download a large image and process it on the device before printing — slow, especially on Bluetooth printers. The app now fetches the receipt already prepared for the printer from the server and streams it straight through, so it starts printing sooner. It looks exactly the same as before — the same design from your dashboard template.

No more garbled Bluetooth receipts. The app now sends to Bluetooth printers at a steady speed matched to how fast the printer can actually print, so the printer's buffer can't be flooded — the cause of the jumbled text on long receipts. There's a Bluetooth print speed setting (Safe / Default / Fast / Max); Default just works on most printers, and Max uses the printer's own flow control for top speed if it supports it.

From alpha.140 · Pause individual add-ons

Run out of one topping? Pause just that add-on. You can now pause a single add-on or choice — like extra cheese or a gluten-free base — instead of the whole item. A new Add-ons tab on the Menu screen lists every choice; pause one there and it's marked sold out on every item that offers it, so you only do it once. Pauses can run for a few hours, the rest of today, until tomorrow, or a custom date and time you pick — and they lift automatically. Custom times now work when pausing items and sizes too.

From alpha.139 · A distinct chime for customer messages & an in-app update prompt

Customer messages now have their own bell. A new customer message used to play the same sound as a new order and chimed just once, so the two were easy to confuse. It now has a dedicated "Message Tone" — a different bell that keeps ringing until you open the chat and read every message, so you won't miss one during a busy service. (It's sound-only; it won't vibrate, and it never rings over a new-order alert.)

Know when an update is ready. When a newer build is available on the Play Store, a banner now appears at the top of the app. Tap Update to download it in the background, then Restart to install — no need to go hunting in the Play Store. (Side-loaded builds from this page are unaffected — the banner simply doesn't show.)

From alpha.138 · Background chat push notifications

Customer messages now reach you even when the app is closed. When a customer messages about their order, the device now gets a push notification on a dedicated "Customer Messages" alert — even if the app is backgrounded or shut. Tap it to jump straight to that order's chat. While the app is open, the in-app bubble and chime now appear within about a second instead of waiting for the next refresh.

Note: requires the matching server update to be live. Allow notifications when prompted so background alerts can show.

From alpha.137 · Live customer chat alerts & meal deal pricing

Chat bubble + chime when customers message you. When a customer sends a message from their order tracking page, a notification bubble now pops up above the bottom tab bar showing their name, order number, and message preview, and a chime plays so you don't miss it. Tap it to go straight to that order with the chat already open — or dismiss it with the ✕. (This is checked every 15 seconds while the app is open. A background push when the app is closed is still coming.)

Meal deal pricing is now clear. Meal deals show the full deal price on the "Meal Deal" header, and each item underneath shows "Incl." (covered by the deal) or "+$X" for any paid extras — in the order screen, the new-order popup, and on the kitchen prep ticket. No more confusing per-item prices that didn't add up.

From alpha.136 · Meal deal grouping

Meal deal items grouped in the app. Meal deal items now appear as a group in both the order detail screen and the new order takeover, with a "Meal Deal" header instead of showing as separate flat items.

From alpha.135 · EOD breakdown, meal deal dockets & smarter scheduled orders

EOD full breakdown. The End-of-Day section now shows payment breakdown (Cash / Card / Online) and service breakdown (Pickup / Delivery / Dine in), plus a revenue detail section with subtotal, fees, discounts, tips, and tax. After 1 minute without refreshing, the section dims and shows a large "Refresh data" button so you always know whether you're looking at live figures.

Meal deals print as one docket. Items in a meal deal now group onto a single prep ticket (labelled MEAL DEAL) instead of printing as separate individual tickets. Each item in the deal is still listed clearly on the combined slip.

Scheduled orders respect business hours. Scheduled order takeover screens no longer appear outside your operating hours — they queue silently and surface when the store opens, so the tablet isn't interrupted overnight.

From alpha.134 · Business hours & resume-all

Knows when you're closed. Outside your opening hours the header now shows "Outside hours" (slate) instead of a green Open, and the Pause option is disabled — there's nothing to pause when you're already closed.

Resume everything at once. When items are paused, the Menu shows a "Resume all" banner that lists exactly what will come back, then resumes it in one tap.

From alpha.130 · New look — rolling UI redesign (build 1)

New navigation. The bottom tabs are now a cleaner floating bar, kept centred so it stays tidy on larger countertop terminals as well as handhelds. This is the first of several UI refresh builds — more screens get the new look in upcoming builds. Everything else works exactly as before.

Preview build — please test on your device and tell us if anything looks off.

From alpha.128 · Server-side receipt rendering

Receipts now print exactly what you designed in the dashboard — always. The app no longer generates receipt layout on-device. Instead it asks the server to render each receipt and streams the result straight to the printer. For image-mode templates (the default) this is unchanged. For text-mode templates the server now produces the ESC/POS bytes directly, so the printed receipt matches the live preview in your dashboard pixel-for-pixel, regardless of which device or printer is being used. The in-app Receipt Designer and the per-printer Image/Text format switch have been removed — receipt format is now controlled entirely from the dashboard template's render mode.

From alpha.127 · Pause timing, clearer prep tickets & a safer unpair

Pause all items, for how long you choose. Pausing a whole category used to silently pause for 1 hour. Now it opens the same time picker as pausing a single item — Rest of today, 2 hours, 4 hours, or Tomorrow.

Hide sizes on prep tickets. A new per-printer option in Settings → Printers (under prep tickets) lets the kitchen slip leave off the size/variant line when you don't need it called out. Half-and-half splits and required choices still print.

Store name on every prep ticket. Each prep ticket now prints your store's name in a bold banner across the top, so a slip is easy to place at a glance.

Bigger scheduled-order times. On the scheduled-order alert screens the time is now much larger and brighter, so it's easy to read at a distance.

Safer unpair. Unpairing a device now requires a valid staff PIN — a wrong code is properly rejected instead of sometimes being accepted.

From alpha.123 · Bluetooth printing fix — no more garbled receipts

Fixes Bluetooth printing on a real printer. Receipts were printing in slow stop-start bursts, and a full order could come out as gibberish on a long roll of paper. The app was sending the whole receipt to the printer in one burst, which overran the printer's small memory buffer and corrupted the print. It now sends the receipt in small, paced pieces so the printer keeps up — receipts print cleanly and steadily.

From alpha.122 · Print to Bluetooth printers

You can now print to a paired Bluetooth thermal printer. Before, picking a Bluetooth printer let you add it but nothing actually printed — the app only knew how to talk to network (WiFi) and the Sunmi built-in printer. Now receipts, kitchen prep tickets, the End-of-Day report and the test print all go out over Bluetooth too. Pair the printer once in your device's Bluetooth settings, then add it in Settings → Printers → Bluetooth, send a test print to confirm it's the right one, and save. Auto-print on accept works the same as it does for WiFi printers.

If a Bluetooth print fails, check the printer is on, in range, and still paired in your Bluetooth settings.

From alpha.121 · Orders print when you accept — with the right times

Tickets now print the moment you accept an order, not the moment it arrives — so the kitchen ticket and customer receipt always show the confirmed prep/ready time and full order details, never a blank or too-early time. Orders you reject no longer waste paper. Scheduled orders are handled too: acknowledging one prints a receipt right away as your record, and the kitchen prep ticket prints later, when it's time to start cooking.

From alpha.120 · Required picks first, optional last, blank lines between

Prep tickets now group an item's lines so the cook reads them in the order the kitchen needs them. Size (variant) and required modifiers — the meat option, the must-pick choice — print at the top right under the item name. Then a blank line, then the base ingredients, then a blank line, then optional add-ons and "No <ingredient>" requests. Notes still print last. Each section is separated by a blank line for breathing room.

Required vs optional is detected heuristically — a modifier with no extra price and not a "No X" line counts as required. The API doesn't expose a required flag yet, so this works best in stores where mandatory choices are included in the base price.

From alpha.119 · Cleaner prep tickets when an ingredient is removed

When a customer removes an ingredient, the prep ticket now just leaves it off the list instead of printing a "NO <ingredient>" line. The cook sees only what should actually be on the plate — no extra noise to read past. (Only applies when the item is flagged "Print ingredients on kitchen ticket" in the Dashboard; items not flagged still show "NO <ingredient>" as their only signal that something changed.)

From alpha.118 · Bigger, more readable prep tickets

Prep tickets now print at a size the kitchen can read from across the room. The item name is double-width and double-height, and every line underneath it — variant, ingredients, modifiers, removed items, notes, plus the order number, type and customer name in the header — is double-height. No more squinting at the build line.

From alpha.117 · Per-product ingredient printing

Choose per menu item whether its description prints as an ingredient list on the kitchen prep ticket. The previous device-wide toggle is gone — flag items individually in the Dashboard (Menu → product editor → "Print ingredients on kitchen ticket"). Items not flagged print no ingredients, so descriptions that are choices or options (e.g. a snack pack) stop printing as nonsense.

From alpha.116 · List each item's ingredients on prep tickets

From alpha.114 · Choose what each printer prints

From alpha.113 · A separate kitchen ticket for every item

From alpha.112 · Cleaner order alarm

From alpha.111 · New-order screen pops in time with the alarm

From alpha.110 · Scheduled orders stand out in the list

From alpha.109 · Scheduled orders always get a heads-up

From alpha.108 · Scheduled orders, reworked

From alpha.107 · Customise what prints on the EOD report

From alpha.106 · No more double order sound

From alpha.105 · Scheduled-order alarm fix + alarm failsafe

From alpha.104 · View End-of-Day report for any day + print fix

From alpha.103 · Auto-accept timer picker no longer snaps back

From alpha.102 · Auto-accept timer fix + per-service auto-accept

From alpha.100 · Language selector + auto-detect

From alpha.98 · Sunmi EOD print fix

From alpha.97 · EU pairing + German locale deep pass

From alpha.95 · Demo pairing + driver map

From alpha.92 · Compact UI redesign

From alpha.90 · Deep i18n completion

From alpha.89 · Map label fix

From alpha.88 · ViewModel + network layer i18n

From alpha.87 · Deep i18n audit

From alpha.86 · EOD German label fix

From alpha.85 · Unpair fix + currency + status labels

From alpha.84 · Deep i18n sweep + EOD tax breakdown

From alpha.83 · Full i18n + translated receipts

From alpha.81 · Brand leak audit (white-label safety)

From alpha.80 · Orders toolbar slimmed down

From alpha.79 · Sunmi prints via sendRAWData (same fast path as network ESC-POS)

From alpha.78 · Sunmi printer feature parity + paper-size detection

From alpha.77 · Skip cutPaper on V3 (tear-bar hardware)

From alpha.76 · Skip printerInit on V3

From alpha.75 · Sunmi op-level diagnostics

From alpha.74 · Sunmi AIDL ordering fix

From alpha.73 · Sunmi diagnostics

From alpha.72 · Sunmi built-in printer support

From alpha.71 · Sprint 11 (Training — Tip of the day)

From alpha.70 · Sprint 10 (Ops intelligence)

From alpha.69 · Sprint 9 (Print resilience)

From alpha.68 · Sprint 8 (Kitchen mode + Undo toasts)

From alpha.67 · Sprint 7 (Map polish)

From alpha.66 · Sprint 6 Part 2 (Auto-promote + Settings)

From alpha.65 · Sprint 6 Part 1 (Scheduled redesign — Upcoming strip)

From alpha.64 · Sprint 5 (Bulk + Takeover polish)

From alpha.63 · Sprint 4 (Auth + Order Detail)

From alpha.62 · Sprint 3 (Menu bulk actions)

From alpha.61 · Sprint 2 (Settings rework)

From alpha.60 · Sprint 1

First ship of the design-audit rollout. Four tactical Orders-screen + header wins. All use the existing app palette — no new colours or component patterns introduced.

From alpha.59

From alpha.58

From alpha.57

From alpha.56

From alpha.55

From alpha.54

From alpha.53

From alpha.52

From alpha.51

From alpha.50

From alpha.49

From alpha.48

From alpha.47

From alpha.46

From alpha.45

From alpha.44

From alpha.43

From alpha.42

From alpha.41

From alpha.40

From alpha.39

From alpha.38

From alpha.37

From alpha.36

From alpha.35

From alpha.34

From alpha.33

From alpha.32

In this build

Requires Android 8.0+ · Works on Sunmi terminals & generic tablets
Enable "Install from unknown sources" before installing