Skip to content

Locations

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.

A location is a physical store. It owns the address, the stock, the receipt branding, the payment configuration and the staff of that store, and pushes all of it to every register there.

Creating a Location

  1. Open Hyvä POS → Store Setup → Locations and add a new location.
  2. Fill in General: a display Name, a unique Code (lowercase letters, numbers and hyphens only; it cannot change easily later, so pick something stable like amsterdam-01), and Active.
  3. Work through the fieldsets below, then save.

Address

Either tick Use Store View Configuration to pull the address from the website's active store view (Stores → Configuration → General → Store Information), or untick it and fill in the Location Address block that appears: street, city, country, region, postcode and phone. Region/State is a list of the country's regions where Magento has one, and a text field otherwise. The address prints on receipts (via the store-info template) and identifies the store.

VAT Number optionally overrides the store view's VAT number for this location, relevant when each branch has its own registration. Leave empty to inherit.

Magento Integration: the MSI Source Mapping

  • Website: which Magento website the location's orders belong to.
  • Inventory Source: the MSI source this store sells from and, if you use in-store pickup, the source pickups draw down. Best practice is a separate source per store, so warehouse stock and shelf stock stay separate. Everything stock-related on the register (quantities shown, low-stock warnings, the pickup queue's ready / awaiting-stock classification) is computed against this source.
  • Allowed Store Views: restrict which store views the registers at this location may switch to. Empty allows every store view in the selected website.

Receipt Configuration

Header, footer, logo, store-info template and placement, logo size, header display, staff-name display and format, order-number display, and the QR text and URL: the same fields as the global receipt defaults, but per location.

Every field has a Use Default Value checkbox: ticked means the location inherits the global default (including future changes to it); unticked means this location's own value wins. This is the inheritance pattern the whole form uses: override the fields that differ per store, inherit the rest.

The Checkout Auto-Print switches (customer receipt, customer terminal slip, merchant terminal slip) override the same way, each independently.

Show Receipt Number on Receipt and Show Sale Reference on Receipt control the two identifiers in the header, and the print only: both are recorded on every sale and synced whatever these say. See what a receipt stores for what the two numbers are.

Customer Validators (module 1.2.0) is the one setting a location can take further than the global default. The location either uses the default, runs every installed validator, runs a selection of its own, or runs no optional validators at all; required fields and email uniqueness always run whatever it says. This is how a store with counters in several countries keeps a VAT lookup on the European ones and off the others. It says which validators are available at that counter, not which customers they apply to: a counter in one country can serve a customer from another, and each validator still decides for itself whether it applies to the data in front of it.

POS Configuration

  • Payment Methods: which tenders are available at this location's registers: Cash, Card / Terminal, Pay by Invoice. Empty allows all.
  • Allow Store Credit: whether this location's registers offer store credit in the Discounts panel. With a store credit provider configured that is the customer's balance; without one the cashier enters a credit or voucher by hand.
  • Cash Method: the Magento payment method a cash sale at this location books under. The register sends the same value for every location; the module applies this one when the order is saved.
  • Manual Card Method: the Magento payment method a card sale the cashier confirmed by hand books under at this location. A card a supported terminal took keeps its provider's method.
  • Counter Sale Shipping Method: the shipping method a sale the customer walks out with books under at this location. In-store pickup is not offered here: the pickup queue selects on that code, and a counter sale is not waiting to be collected.
  • Fetch Missing Promotion Attributes: whether terminals at this location ask Magento for a product's attributes when their cache has no value for a cart price rule's condition, one product request per unknown SKU, kept for the shift. Off spares the store; the rule then applies from the cached attributes only.
  • Fetch Customer Prices: when PRO terminals at this location resolve per-customer prices for carts with a customer attached. "While browsing the catalog" also prefetches every product tile on screen, one resolver request per catalog page.
  • Allow Guest Checkout: whether registers at this location may take payment without a registered customer on the sale. With this off the cashier attaches or creates a Magento customer first, and the walk-in customer defaults do not count.
  • Online Refund Validity (days): days after payment during which the original payment method is assumed refundable through its payment provider. Once passed, terminals at this location show a hint on the "Original Payment" and "Terminal" refund options and do not block them. 0 turns the hint off.
  • All Categories / POS Navigation Categories: with All Categories on, every active top-level category appears as a tile on the register landing page. Turn it off to pick a subset, so a store that only carries part of the catalog shows only its part. Lockable chain-wide via Lock POS Navigation Categories.
  • Low Stock Threshold: at or below this quantity the register warns before selling.
  • Use Multi-Source Inventory: whether registers at this location read and write stock per source through Magento Inventory: source-specific stock badges, the source picker, per-source stock edits, and shipments that name a source. With this off the register uses Magento's plain stock figures and never calls the Inventory routes.

Layaway, Walk-in, Pickup and Returns

Each of these overrides its global default per location, with the same Use Default pattern:

  • Layaway Configuration: minimum deposit, expiry days, cancellation fee.
  • Walk-in Customer Defaults: the customer identity booked on anonymous sales at this store, and the customer group they are priced and booked under.
  • Pickup Configuration: auto-ready for backorder and online pickups, and the post-pickup order status.
  • Returns Configuration: the Damaged-Stock MSI Source damaged-condition returns at this location are booked into. When no source is set here or in the global default, damaged returns go back to the location's main source with a stock comment.

Card Payments

  • Mode: Manual (cashier confirms the transaction), Mollie (payments routed through a physical Mollie terminal) or PAY. (payments routed through a PAY. terminal or a PAY.POS phone). The Mode decides which provider's fields the form shows: Mollie's under Mollie, PAY.'s under PAY., neither under Manual.
  • Mollie (shown when the Mode is Mollie): the Organisation ID, live and test API keys and test mode, each with its own Use Default. A payment terminal can be shared between the location's registers. See Mollie.
  • PAY. (shown when the Mode is PAY.): the Token Code and API Token, the Sales Location and Test Mode, each with its own Use Default; the token is stored encrypted and shows masked. A location with a different sales location than the store keeps the store's token and overrides only the Sales Location.
  • Live API Key and Test API Key: stored encrypted and shown as ****** once set, whether the key is the location's own or the global one it inherits. Saving the form with the masked value keeps the stored key; type a new key to replace it, or clear the field to remove it.

Tax Configuration

The tax address drives the register's tax calculation and syncs to the registers, so a device cannot use a different one:

  • Use Store Location on: the tax country, region and postcode are read from the Address fieldset above.
  • Use Store Location off: the Tax Location block appears with its own country, region and postcode, for the case where the tax registration differs from the physical address. Region/State behaves as in the Address fieldset.

Get the tax country right before the first sale: it determines which Magento tax rules the registers apply. Where the country's rate table keys on a region or a postcode (a US state, a ZIP range, the Canary Islands), set that field too. Until it is there the register cannot determine the rate for the products those rates cover: the affected lines say so, the sale refuses to complete with them, and this screen and the register's settings name the missing field.

Staff at the Location

Assign staff members to the location under Hyvä POS → Staff; their PINs and roles then work on the location's registers. Staff flagged for all locations work everywhere. See staff and roles.

Held Carts Across the Location

With shared held carts enabled, a sale parked on one register can be recalled on any register at the same location.

Troubleshooting

  • The register shows the wrong stock numbers: the location points at the wrong Inventory Source, or the store's stock is booked on a shared source. Check the source assignment first: every quantity the register shows comes from that source.
  • Receipts print the wrong address: Use Store View Configuration is on and the store view's Store Information is stale, or the store-info template references fields you have not filled in. Empty template lines drop out silently.
  • Tax comes out wrong at the register: the tax country / region on the location does not match a Magento tax rule. Fix the Tax Configuration fieldset; the registers pick it up on their next heartbeat.
  • A location edit does not reach the registers: same heartbeat rules as every setting; see global settings.