Sales

Return or Exchange a Completed Sale

A Posnic return starts from the original sale, preserves its commercial evidence, puts tracked quantities back into stock and records either a partial or full return; adding a replacement item turns the same workspace into an exchange.

Menu path
Home -> Sales History -> select the original sale -> Return
Verified from
Posnic demo and current POS source reviewed on 2026-09-08
Technical source evidence

demo.posnic.io Sales History with 14 current seeded sales captured on 2026-09-08, frontend/static/script/js/routes.js return route and manager-approval handoff, frontend/static/script/js/modules/js/sales.js return cart, quantity, exchange and submit behavior, api/src/controllers/sales.controller.js Sales write and refund approval enforcement, api/src/repositories/sale.repository.js quantity validation, duplicate lock, stock restoration, return ledger and partial/full status, frontend/modules/users.html and users.js refund permission and refund-cap controls

Start from Sales HistoryLocate the original bill by bill number, customer, date, item count and total before opening a return.
Review the sale actionsOpen the matching sale and choose Return only after checking the original customer, lines, payment and status.
Reconcile the returnAfter saving, confirm the return in Sales History, stock movement, register totals and the applicable sales or return report.

Before Accepting a Return

CheckWhy it mattersOperator action
Original billThe return must be tied to the sale that set price, tax, discount, customer and payment evidence.Search Sales History by the bill details; do not create a negative new sale.
Remaining quantityPosnic rejects zero, negative or already-returned quantities and prevents returning more than remains on the bill.Check earlier returns and count the quantity physically received.
Item conditionTracked stock is added back automatically even when an item is damaged or unsellable.Follow shop policy for quarantine or a later stock adjustment and write a reason.
Refund authorityThe operator needs Sales write access and either direct Refund / return authority or a manager approval.Have the approving manager present; never share an admin login or PIN.
Payment statusA credit sale with a pending balance cannot be returned until its transaction is completed.Settle or correct the customer transaction first, then reopen the original sale.
Refund methodThe customer should receive value through the approved method and the register must reconcile.Confirm cash, original tender, wallet or exchange policy before saving.

Open the Original Sale

  1. Open Home -> Sales History.
  2. Use the bill number, customer, date and time, item count, total and status to identify the original transaction.
  3. Open the sale and compare its customer, lines, quantities, prices, discounts, tax and payment details with the receipt and goods presented.
  4. Choose Return. A restricted cashier is prompted for an approving manager's PIN or card before the return workspace opens.
  5. Confirm that the return screen contains the original sale lines. Stop if the bill or branch is wrong.

Return All or Part of the Sale

  • If sellable lines remain, the original sale becomes PartialReturn.
  • If no sold lines remain, it becomes FullReturn and its active item list and item count become empty.
  • The return is appended to the original sale's return history with its own return ID, amount, item count, date and user.
  • The service rejects the same return signature twice and uses a short processing lock to stop concurrent duplicate refunds.
  1. For each item being returned, set the return quantity to the physical quantity accepted. Leave every other line at zero.
  2. Review the Return Total, returned tax and returned discount. Posnic derives return evidence from the original sale lines rather than today's catalog price.
  3. Add a clear sale or payment note with the reason and any condition decision required by shop policy.
  4. Confirm the refund payment method and amount. A pure refund is tendered as money leaving the shop.
  5. Select Return and complete manager approval if the current user cannot refund directly.
  6. Wait for the success message and return identifier. Do not press the action repeatedly while it is processing.

Exchange an Item

The return workspace can also accept newly scanned or searched items. When a new item is added while Return mode is active, Posnic marks the workflow as an exchange but still submits the return against the original sale.

  • A replacement item still follows its current stock and negative-stock rules.
  • Do not process a refund and a separate new sale when one exchange record is required for audit clarity.
  • If the replacement is not yet in the catalog, follow the missing-item workflow before completing the exchange.
  1. Set the quantity of the original item being returned.
  2. Search or scan the replacement item and add it to the sale side of the workspace.
  3. Review both sides: goods coming back, goods going out, tax, discount and the net amount.
  4. Collect any additional payment or issue the remaining refund according to shop policy.
  5. Save once, then verify the returned and replacement item quantities in Inventory Logs.

Permissions and Manager Approval

ControlCurrent behaviorImportant boundary
Sales writeThe return API rejects users without Sales write access.Sales read access alone is not enough.
Refund / returnWhen enabled for the user or role, the operator can open and submit the return without manager elevation.Owner-class admin and manager accounts pass this action check.
Manager PIN or cardA restricted operator must obtain a short-lived approval before the return screen opens; the token is sent once with the return.The approving credential is not a substitute for the cashier's own login.
Max refund amountThe employee and role forms currently store and display a cap where 0 means no limit.The audited return route does not currently enforce this amount. Treat it as informational and enforce the shop limit operationally until the product implementation changes.
Audit recordA successful refund records sale ID, return ID, amount, reason, returned items and operator context.A note improves the evidence but does not replace physical and payment checks.

What Changes After Save

AreaRecorded effectWhat to verify
Original saleStatus becomes PartialReturn or FullReturn and cumulative return totals are stored.Open the bill again and verify remaining and returned lines.
InventoryEach returned tracked quantity is added to available stock with a Return Sale stock log.Confirm opening, added quantity and closing balance; quarantine damaged goods separately.
RegisterThe linked register sale stores the changed process, remaining sale amount and return total.Check refund and net-sales values before register close.
ReportsReturn reports include PartialReturn and FullReturn records; sales/dashboard calculations use their own documented status rules.Use the return, sales and register reports rather than subtracting from a screenshot manually.
SyncDesktop returns are queued on the critical synchronization lane after the sale changes.Keep the till open until sync is healthy when operating offline.
PrintA return can request printing, and branch print-all can also set the print flag.Confirm the return receipt and printer result before handing evidence to the customer.

Reconcile Before the Customer Leaves

  1. Reopen the sale and confirm the correct return ID, item, quantity and amount.
  2. Check Inventory -> Inventory Logs for a Return Sale entry when the item tracks inventory.
  3. Confirm the customer received the approved cash, tender reversal, wallet value or replacement item.
  4. Check the active register's refund and net-sales figures when a register is in use.
  5. Print or provide the return evidence required by shop policy.
  6. Escalate immediately if payment succeeded but the return record, stock movement or receipt did not. Do not submit the same return again without checking Sales History.

Troubleshoot Returns and Exchanges

Message or symptomMeaningSafe action
A refund needs manager approvalThe current operator lacks direct Refund / return authority or the approval token is absent or expired.Ask an authorized manager to approve at the till, then reopen and review the return.
Please complete your transactionThe original credit or partial transaction still has a pending amount.Settle the customer transaction before returning the sale.
No return items providedNo positive return quantity reached the server.Reopen the original bill and enter only the accepted quantities.
Return quantity cannot exceed the remaining sale quantityThe requested amount is zero, invalid, greater than the remaining sold quantity or was already returned.Review prior returns and reduce the quantity to what remains.
Refund is already processing or already completedAnother request holds the return lock or an identical return was recorded.Wait, refresh Sales History and inspect the sale; do not submit again blindly.
Stock increased for damaged goodsTracked returns restore available stock automatically.Record an approved stock adjustment or quarantine workflow with the return reason as reference.
Refund cap did not stop a large returnThe current amount-cap field is not enforced by the audited refund route.Stop and apply the shop's manual approval policy; do not treat the configured amount as a technical control.
Exchange total looks wrongA returned quantity, replacement line, original discount or tax, or payment method may be wrong.Cancel before saving, reopen the bill and rebuild both sides from the physical goods and receipt.