Skip to content

Register and Reports

Hyvä POS is in closed beta

Hyvä POS is currently in a closed beta (pilot phase) with a small group of merchants. It is not yet generally available: the App Store release follows the pilot, and features and configuration may still change, possibly in backwards-incompatible ways, before the general release. Want to take part? Sign up at hyva.io/pos.

Everything on this page works on the free tier, and register data lives on the device. On PRO with module 1.4.0, each closing also reaches Magento; see register reports.

The Register Home Screen

The register is a grid of tiles next to the cart. The built-in tiles cover the everyday actions: product search, all products, all categories, custom product (a one-off line item), add customer, discount, hold cart, recent orders, pickup queue, cash drawer, lock screen, switch user, return, and sync issues.

The grid can be rearranged: long-press to enter edit mode, drag tiles to reorder, hide what you don't use, and add more pages when one fills up. Portrait and landscape keep their own layouts. You can also add your own tiles:

  • Quick product: one tap adds a specific SKU to the cart; the tile shows the product's current price.
  • Quick custom item: a preset title and price for things that aren't in the catalog (a service fee, giftwrap).
  • Quick category: jumps straight into one category.

Each custom tile gets its own title, icon and color.

The Pickup Badge

The Pickup tile can show a live count of orders that are ready for collection. The count polls Magento, and polling is opt-in: turn on Check for New Pickups under Settings → Checkout and pick the interval (every 1, 2, 5 or 15 minutes; default 5). It is off by default. The badge requires PRO with a configured location, and is hidden when the count is unknown.

Opening and Closing the Register

Start the day by opening the register with a counted float, typed on a numpad or counted per denomination with bill and coin counters (the accepted denominations are configurable per currency). From that moment every cash movement is tracked: sales, refunds, cash in, cash out. With Require Open Register on (Settings → Payments), no tender is offered until the register is open.

Mid-shift movements work the same way: take excess cash to the safe or add change, each with an amount, a note, who did it and when.

How the Drawer Reconciles

The expected cash at any moment is: opening float, plus cash sales (including the cash legs of split payments), plus cash added, minus cash taken out, minus cash refunds. Closing counts the drawer, again per denomination if you like, and the difference between counted and expected is the over/short on the Z report. A cash difference never blocks closing; it is recorded and visible. Two things do hold the close: a card payment the terminal took whose order has not been created yet (listed under Unreconciled Card Payments, with Retry Sync), and a terminal payment of this session whose outcome the provider has not confirmed (listed under Card payments to check, with Check payments). The register closes once each one is resolved. A sale that is only waiting for its Magento upload does not hold the close, so a register can close offline.

Sales that do not put money in the drawer are tracked in their own buckets: card totals, pay-by-invoice receivables and layaway balances each get their own line. The reverse case, money in the drawer that is not a sale, gets a line too: layaway payments collected against orders placed earlier join the cash and card totals, and the report's incl. Layaway Payments line explains why the tenders exceed the day's sales figure. A payment collected on an earlier order's remaining Credit Due is counted the same way, on an incl. Credit Due Collections line.

X and Z Reports

  • X report mid-shift: the state of the register so far, without closing it.
  • Z report at close: the closing of the session, written to the device before the register leaves the open state. Each closing carries a number, printed with the four-character code of its numbering series: Z-Report A3F9-7 is closing 7 of series A3F9. A series belongs to one install of the app under one store connection; a reinstall, a restored backup or a new device starts a new series at 1. Reprints and exports read the same closing, so a closing is never numbered twice.

The Reports Tab

Reports live in their own tab, in seven sections:

  • Sales: a per-day table (orders, cash, card, total) for the chosen period (Day, Month, Quarter, Year, All or Custom), with Export Sales and Export Sessions.
  • Register: the session history, every open/close with its float, totals and over/short.
  • Terminal Payments: card payments whose outcome the register could not confirm, with Check, Enter payment id and Settled at the provider. A settled payment stays on the list with its resolution until you leave the report, and the Resolved filter lists it for thirty days; see terminal payments.
  • Statistics: revenue and orders against the previous period, busiest hours, payment mix, top products, and per-session figures.
  • Stock: the stock quantity log, every stock change with product, SKU, source, old and new quantity, who and when, with CSV export.
  • Sync issues: anything that failed to reach Magento (see below).
  • Errors: API, connection, sign-in and printer failures, newest first, filterable by warnings or errors, with copy, Mark all read, CSV export and Clear; the first place to look when troubleshooting a connection or permission problem.

Local Numbers vs Magento Numbers

Everything in the Reports tab is computed on the device, from that register's own sessions and logs, and is available offline. Every POS sale is also a Magento order, so cross-channel and cross-register reporting (revenue across locations, product performance, anything your BI reads from Magento) comes from Magento's own reports, which see register sales next to online sales. The two views reconcile: the same orders feed both.

Sync Issues

If an order, invoice, shipment, receipt or register closing could not reach Magento, the Sync Issues section lists it with the reason, grouped per order. Retry from the issue's detail; an issue clears when the retry succeeds. Differences between a local sale and its Magento order are shown field by field. Mark Resolved closes an issue by hand and Reopen brings it back; an issue resolved while the report is open stays on the list until you leave it, and the Resolved filter keeps resolved issues for thirty days. A closing Magento refused shows as "Closing A3F9-7 is not in Magento" and is held until it is retried; on a module older than 1.4.0 one entry, "Closings are kept on this device", names the module version that takes them.

Where It Is Configured

What On the device In Magento
Tile layout and custom tiles Long-press the register grid
Pickup polling + interval Settings → Checkout
Cash denominations The denomination editor in the register sheets
Register permissions PRO staff roles

Register sessions, reports and logs are stored on the device; they are not Magento configuration. On PRO with module 1.4.0 each closing is also stored in Magento, under Hyvä POS → Reports → Register Reports.

PRO

On the free tier the register has a single user. PRO staff and roles adds PIN login per employee, with the register actions permission-gated per role: opening and closing the register, issuing refunds, opening the drawer and viewing reports can each be restricted to managers. Reports then show who did what, and the PRO audit log covers every staff action.