Skip to content

POS refunds and returns

Goal

Refund sold lines (with receipt), process a blind/no-receipt return, or exchange — and restock or write off inventory.

Who it is for

Cashiers with pos.retail.return.create. Blind returns need pos.retail.return.no_receipt. Exchanges need pos.retail.exchange.create. Managers review lists with pos.view.

Preconditions

  • Open session on the terminal for register refunds.
  • Original completed sale for receipt-based refund.
  • Customer attached when refunding to store credit (especially blind returns).
  • Active refund reason codes if the tenant configured any (note/approval flags apply).

Steps — on the register

  1. Open Frontline → returns sheet.
  2. Recall the receipt (or start a no-receipt return when permitted).
  3. Select lines; set condition sellable / damaged and restock decision restock / write_off.
  4. Choose refund method: original tender path (often cash) or store credit.
  5. Provide reason code / note when required → confirm.
  6. APIs: POST /v1/pos/sales/{id}/refund, POST /v1/pos/returns/blind, exchange endpoint for swap carts.

Steps — staff list

  1. Point of Sale → POS Returns & Refunds to review refunds (GET /v1/pos/refunds).

Result

PosReturn / PosRefund records; cash refund or store-credit liability; stock restocked or written off; session refunds_total updated. Do not void gift-card/store-credit sales — refund them instead.

Hard stops

  • Missing reason_code / note when catalogue requires them.
  • Store credit without customer.
  • Insufficient permission for blind return or exchange.
  • Attempting to void a stored-value payment sale (void_unsupported_stored_value).

BlueMatrix Help — product documentation for tenants