Skip to content

Receipt Layout

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.

What prints on your receipt, and every knob that controls it. The line items, discounts, VAT breakdown and tenders are always there; this page covers the layout around them and who controls each part.

Where the Settings Live, and Which Wins

  • On the device: Settings → Receipt Layout holds every option below, plus a test print that runs the real print path.
  • In Magento (PRO): defaults for all terminals live under Stores → Configuration → Hyvä POS → General → Terminal Defaults → Receipt Defaults. Each location under Hyvä POS → Store Setup → Locations can override them, and individual terminals can override the location. Resolution is terminal over location over global; empty fields inherit from the layer below.

On the free tier the device settings are the only settings. On PRO, synced fields show a Magento Managed badge in the app, and fields the merchant marks as enforced in Magento become read-only on the device - the store decides which parts a cashier may still adjust locally (the header text, say) and which are locked (the footer's legal line). A Sync from Magento button in the same screen pulls the latest configuration on demand.

Header: Logo and Store Name

  • Logo: on the device, load it from Photos, Files or a URL. On PRO, upload it once on the location form in Magento; every terminal downloads it automatically. A device-loaded logo can still override the Magento one.
  • Logo size: small, medium or large - small for narrow paper, large where the logo is the branding.
  • Header display chooses the combination: logo and store name, logo only, or store name only. If the logo cannot load, the store name prints, so a receipt never goes out headless.
  • Header text: a free-text line under the header, for a slogan or legal line.

The Store-Info Block and Its Directives

The address block on the receipt is a template with Magento-style {{var …}} directives, so one template serves every location, each filling in its own details:

Directive Prints
{{var name}} Location / store name
{{var street}} Street (multi-line supported)
{{var city}} City
{{var region}} Region / state
{{var postcode}} Postal code
{{var country}} Country code
{{var phone}} Phone number
{{var vat_nr}} VAT / tax number

The default template prints street, postcode + city, phone and VAT number:

{{var street}}
{{var postcode}} {{var city}}
{{var phone}}
{{var vat_nr}}

The template itself is edited on the location form in Magento (PRO); the free app prints the default template. The values come from the store's address details - on PRO from the location record, on the free tier from the store address entered in the app's store settings.

Rules that keep receipts tidy: a mistyped directive renders as empty instead of leaking {{var …}} onto paper, and lines that end up empty after substitution are dropped entirely, so a location without a phone number simply prints one line less.

Columns with |

A pipe splits a template line into columns: two segments print left/right, three print left/center/right. Handy for compact blocks:

{{var name}} | {{var phone}}
{{var city}} | {{var vat_nr}}

With three segments, the middle one is centered:

{{var city}} | {{var phone}} | {{var vat_nr}}

More than three segments won't add more columns: the extras stay in the right column, joined with pipes. The column layout renders identically on every printing path - thermal text, label language and AirPrint.

Placement puts the block above the items, below the totals, or hides it entirely.

Line Items and the VAT Summary

Each line prints the product with its quantity against the line total; a per-line discount prints as its own row under the line, so the paper shows what was taken off what. Below the totals, the VAT summary prints one row per rate - the taxed base and the tax amount for each rate on the sale - the per-rate breakdown EU receipts require. A sale with mixed rates shows each rate separately; a B2B reverse-charge sale prints a "VAT Reverse Charged" row instead; and the receipt states whether prices include or exclude VAT, as German law requires. Cart-level discounts and cash rounding print as their own signed rows in the totals.

The Cashier Line and Order Number

  • Show staff name prints who rang the sale, with a format choice: full name, first name plus initial ("Willem W."), first name only, or staff ID. The staff ID is the employee code from the staff record in Magento: it reads as anonymous on the customer's copy, but the store can still trace the sale to a cashier.
  • The per-cashier formats assume a signed-in cashier, which comes with PRO staff and roles. The free tier has no cashier sign-in: when the store is connected with admin login the line falls back to that admin username (the same name on every sale), and with a token connection the line is left off.
  • Show order number prints the Magento order reference, so a customer emailing support has the number in hand.
  • Footer text: the thank-you line, return policy, or anything else. Default: "Thank you for your purchase!"
  • QR code: print a QR with your own label text and target URL on the free tier - a review page, a loyalty signup, the store site. The app previews the QR live as you type. With PRO receipt sync the QR instead points at the customer's own receipt page.
  • Auto-print the customer receipt on sale completion, or print on demand.
  • Merchant copy: optionally auto-print a second copy for the drawer.
  • Terminal slips: card payments can print the EMV terminal slip, with the merchant-only fields kept off the customer copy.

Card-terminal sales have their own auto-print switches: the customer terminal slip and the merchant terminal slip (the signature copy) print automatically or on demand, independent of the sales receipt. All three arrive as separate print tiles on the success screen, each with its own printer via long-press. On PRO, the auto-print switches are part of the location configuration, so every register at a location behaves the same.

What a Receipt Adapts To

Beyond the basics, receipts adapt to the sale: split payments print each tender with its amount; mixed fulfillment splits the receipt into what the customer takes now, what ships and what they pick up later; refund and exchange receipts show returned lines as negatives with both the original and refunded VAT breakdowns; layaway receipts show the deposit, the total paid and the balance owed; and fiscal receipts carry the signature and QR the local regulation prescribes. Reprints are faithful by design: everything is stored with the sale, so a reprint months later, on another terminal, reproduces the original receipt rather than re-deriving it.