Returns and Exchanges
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 customer comes back with a shirt that has a stain. On the free tier you can take the product in, refund the money, or swap it for something else - in one transaction at the register, with no extra returns setup on the Magento side.
Returns at the Register
Look up the original sale (or Magento order), select the lines and quantities coming back, and refund. Technically every refund is a regular Magento credit memo against the original order, created through the standard sales API, so your books, your ERP and your refund reporting see in-store returns exactly like online ones. Each refund also posts an audit comment on the order: memo number, amount, and the terminal refund ID when a card terminal was involved.
The refund form speaks the same vocabulary as the Magento admin:
- Refund Shipping - appears when the order charged shipping. The amount rides the credit memo's own shipping field, so Magento reverses the shipping tax and the order's shipping-refunded bookkeeping stays correct.
- Adjustment Refund and Adjustment Fee - compensate a customer without returning items, or hold back a restocking fee. An adjustment-only refund with no lines selected works too.
- Email Credit Memo to Customer - a per-refund toggle, off by default, that sends Magento's own credit-memo email - the same one the admin checkbox sends. No blanket setting to remember; the cashier decides per refund.
- Comment - lands on the credit memo and in the order history.
Refund Online or In Store
Every refund picks one of two channels. The default follows the order's origin - register sales prefer in-store, web orders prefer online - and the cashier can override either way.
Refund In Store routes the refund through checkout, so the cashier physically hands cash back from the drawer or processes the terminal refund with the customer present. The credit memo is created only after settlement - the same moment an order is created for a new sale - so the books never show a memo for money that never left the drawer.
Refund Online creates the credit memo directly:
- A terminal-paid sale refunds through the terminal provider's API first (Mollie today); the memo is then marked settled so Magento does not refund a second time. A retried refund cannot double-charge - the provider call is idempotent per attempt.
- Any other card sale refunds through the online memo, which the payment provider's Magento module returns to the customer's card automatically.
- Sales recorded with a manual reference are reversed on the standalone terminal by hand, as usual.
An interrupted refund is recoverable: if the cashier abandons the flow midway, the order detail offers Finish Refund and Abort Refund, so nothing hangs half-done and no memo fires for an unsettled refund.
Exchanges in One Transaction
Returns and new items share one cart: the returned lines count negative, the new items positive, and the customer pays or receives only the difference. No separate refund-then-sell dance at the counter, and the receipt shows the whole exchange as the customer experienced it.
The Refund Math Is Exact
Refund amounts are computed from the original order, per item and per VAT rate, after discounts - the same way Magento computed the sale:
- A partial return of two items from a mixed-VAT order produces a credit memo whose tax breakdown matches those two items exactly, so the refund receipt, the credit memo and your VAT return all agree.
- A line that carried an allocated cart discount refunds what the customer actually paid, not the pre-discount price.
- Split-tender originals are reconstructed leg by leg - from the local sale record when it exists, from the order's payment metadata otherwise - so even a sale rung on another device refunds to the right tenders.
What the Cashier Sees
- Open the sale from Receipts, or the order from Orders, and tap Refund.
- Tick the lines and quantities coming back; add shipping or an adjustment when it applies.
- Pick the channel - Refund In Store or Refund Online - and optionally flip Email Credit Memo to Customer.
- In-store: settle in checkout (cash from the drawer or terminal refund), receipt prints, memo lands in Magento. Online: the memo and the gateway refund fire directly.
Where PRO Takes Over
The free tier handles the shirt with the stain. PRO handles returns as a process:
- Staged RMA - request, receive and credit as separate steps, for returns that arrive by post or need inspection before money moves. At the counter the wizard collapses the steps into one, because the customer and the product are standing in front of you.
- A returns queue - open RMAs per location, oldest first, with statuses your whole team can see in Magento.
- Refund to store credit - keep the money in the store, including via provider bridges (Aheadworks, Amasty and others).
- Receipt reconstruction - refund a sale rung on another terminal or long since gone from this device, looked up from the central receipt store.
- Automatic closure - an RMA resolves itself the moment its resolution order is placed.
Merchants who run an external RMA module as their main returns system can hide the free tier's standalone refund tile from global settings, so cashiers have exactly one way to do the job.
PRO
PRO returns route through the full RMA workflow, refund to store credit, and reconstruct receipts for sales made on other terminals.