Hold & Recall

Park a cart to serve the next customer, then bring it back — on this device or any other terminal in the branch.

5 min read · Updated 10 Sep 2026

On this page

Holding parks a cart so you can serve someone else and come back to it. It is the answer to "I forgot my wallet, I'll be right back" and to a queue building up behind one indecisive customer.

Holding a cart

Tap Hold in the cart header. The cart empties, and you are ready for the next customer.

Hold is greyed out on an empty cart — "Add items before holding." It is hidden altogether once a table's order has been sent to the kitchen: at that point the order lives on the table, so use Send Order or Checkout instead.

What happens next depends on your connection, and the toast tells you which:

Toast Meaning
"Cart held — visible on all terminals." Parked on the server. Any terminal in the branch can pick it up.
"Cart held on this device." The server hold failed. Only this device can pick it up.
"Cart held (offline) — syncs to other terminals when back online." Parked locally. It becomes a branch-wide hold when the device reconnects.

Bringing one back

Tap Held. The list is titled Held Transactions (4) and counts both the holds on this device and the holds on the server.

Each row shows the number of items, the time it was held, and the total. Holds parked on this device are badged LOCAL. Server holds also show up to two item names, then "+2 more".

Tap the row to bring it back. There is no separate button — one tap loads the cart and the order is taken off the list.

An empty list says "No held transactions" / "Tap Hold in the cart to park a transaction."

A few things to expect:

  • You cannot recall onto a cart that already has items in it. You get "Cart in progress" — "There's already a cart in progress. Hold or clear it before resuming."
  • If another terminal got there first you get "Already taken" — "Another terminal already picked up this order." The list refreshes on its own.
  • A server hold needs a connection to recall. You can see it in the list while offline, because the list is cached, but tapping it fails. Holds badged LOCAL always work.
  • Server holds do not show the customer's name or table number in the list — only items, time and total. Those details come back with the cart.

Recalling does not re-apply the discount

A recalled order's discount is applied exactly once. When a held order comes back, Kassly rebuilds each line at its full undiscounted price and then works the discount out once, from scratch. The discounted figures stored against the held order are never used as the starting point, so nothing can be discounted a second time.

For a senior citizen or PWD discount, Kassly also works out which lines the discount originally covered, by looking at which of them carried a discount, and keeps that selection. So a discount you applied to three of six items comes back covering those same three.

If a recalled order's total is not what you remember, the recalled figure is the one to collect. It is priced from the current catalogue and the discount is recalculated, so it is the amount the sale will actually be recorded at. Collect what the screen says now.

Two related notes:

  • Holding, recalling, holding again and recalling again is safe. Each round trip re-prices from the full price, so the discount cannot creep.
  • A hold parked on the device does not remember a partial senior/PWD selection. If the discount only covered some of the items, a local hold brings it back covering all of them. Check the basket selection at checkout before you take payment. Server-side holds keep the selection correctly.

Everything about how those discounts are calculated is in Discounts.

Discarding a held cart

Long-press a LOCAL row and confirm — "Discard held cart?" / "3 items · ₱450.00 will be lost."

A server hold cannot be discarded from the app. The only way to clear it is to recall it and then use Clear on the cart. This is deliberate: sales records are kept for ten years and are never deleted, so recalling an order marks it as picked up rather than removing it.

How long a hold lasts

Holds never expire. There is no timer, no nightly cleanup, and no "stale" warning. A cart held on Friday is still in the list on Monday.

Local holds survive closing the app and even signing out. They are cleared only if the device is switched to a different business.

Because nothing expires, it is worth glancing at the Held list at the end of a shift and clearing anything abandoned. Otherwise it accumulates.

Held orders are not the same as pending orders

If you run a second device as an order pad, orders it sends appear on a different screen: Pending Orders.

Held Transactions Pending Orders
Where it came from A cashier tapped Hold An order-taking device sent it
What tapping it does Loads a fresh cart you can edit Opens checkout to settle that order
Shows its age No Yes — badged STALE after 30 minutes
Search No By number, name, or table

Pending Orders can be searched — "Search by #number, name, or table" — which is how a cashier matches a customer's paper ticket to their unpaid order. An empty list says "No pending orders" / "Orders sent from an order-taking device appear here".

A dine-in tab is a third thing again: it lives on the table, not on either list. See Table management.