Skip to content

Receipt Sync

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.

On the free tier, receipts live on the device that made the sale. PRO mirrors every receipt to Magento, which turns the register's paper trail into a central archive, and gives every receipt a public page.

The Central Archive

Every completed sale pushes its receipt to Magento: an immutable record of exactly what the customer walked out with, next to the order it produced. In the admin (POS → Receipts) you can browse and search receipts across all locations and terminals - by staff, terminal, location, customer, total, payment method and date - and open any receipt in a detail view.

Receipts are write-once, by design; they are the fiscal record. Each row in the hyva_pos_receipt table carries the lines and totals, the tax, the tender (including split payments, applied store credit, and for card payments the payment provider's transaction reference), who rang it, on which terminal, at which location - and the exact payload the device printed from, so a receipt can be reproduced byte-for-byte later. After the first sync, the only thing Magento will ever add to a receipt is the order number of the order that follows it - nothing else can be changed.

Because the archive is central, a register can also reconstruct receipts it did not create: a customer returning at store B with a receipt from store A is a lookup, not a problem.

How Receipts Reach Magento

The device pushes each receipt right after the sale completes; with no connection it queues and retries with the same back-off discipline as orders. Receipts always sync before the orders that reference them, so the fiscal trail is never behind the commercial one. A receipt that Magento refuses for a real reason (not a network blip) shows under Reports → Sync Issues on the register instead of retrying forever.

The QR Receipt Page

Each synced receipt gets its own link on your store, protected by an unguessable 64-character token (there is nothing to enumerate or guess), and shown as a QR code at the end of the sale: on the printed receipt, and on the customer display if you have one. The customer scans it and lands on a page served by your own Magento (your domain, your branding, no third-party service) where they can:

  • view the receipt exactly as printed,
  • download it as a PDF,
  • email it to themselves.

No paper needed unless they want it, and no email address spoken across the counter.

The same QR is what the hand-over screen shows the customer full-screen at the end of a sale.

The page is built for exactly one audience - the person holding the receipt. Every action on it (viewing, downloading, emailing, claiming) is rate-limited to 10 requests per 10 minutes per visitor per receipt, and the pages tell search engines to stay out. A leaked link is one receipt, not a browsable archive.

Claiming a Receipt into an Account

Register sales are often anonymous, but customers change their minds: the jacket bought in passing should have been on the account, for the warranty, the points, the history. The receipt page fixes that after the fact: from their receipt link, a customer can sign in to your store - or create an account on the spot - and claim the purchase. The order attaches to their customer record and shows up in their order history, both online and at the register.

Claiming has guardrails: a receipt can be claimed once, and only when the underlying order does not already belong to a different account - so one customer can never pull another customer's purchase into their history.

That closes the loop of unified commerce from the anonymous side: even a walk-in cash sale can become part of a customer relationship later, initiated by the customer, with the receipt as the key.

Receipt Emails with the Receipt Attached

PRO emails receipts as the actual receipt, not the standard order-confirmation email the free tier uses: Magento renders the synced receipt and sends it from your store's own sender address with a PDF of the receipt attached. What the customer receives matches what the printer would have produced.

The cashier can send it at the end of the sale or re-send it later from the sales list; the customer can trigger the same email themselves from the QR page. Because Magento does the sending, email works even when the register has already moved on to the next customer.

Configuration

Receipt sync itself has no switch - it is on for every licensed PRO terminal, because the archive is only trustworthy if it is complete.

What you do configure is the receipt content: logo, header and footer, store info, staff-name display and the QR block live under Stores → Configuration → Hyvä POS → Terminal Defaults → Receipt Defaults, with per-location overrides - see receipt layout. Any of those fields can be locked via Lock Settings → POS Field Enforcement (for example Lock Receipt Header, Lock Receipt Footer, Lock Receipt QR Code); a locked field shows as Managed by Magento on the register and cannot be edited at the register - see global settings.

What the Cashier Sees

Nothing extra to do. The QR appears on printed receipts and the hand-over screen once the receipt has synced; email is one button on the sale-complete screen and in the sales list. If a receipt has not synced yet (offline sale), the QR and email options appear as soon as it lands in Magento.