Counter · returns

Take it back without breaking the books.

A return touches three things at once — the refund to the customer, the stock on your shelf, and any royalty or management fee that rode on the original sale. Process it from the order and all three stay in sync automatically.

1 · Start from the order

Returns are always processed against an existing order — there's no standalone “new return” button, because a refund only makes sense relative to what was sold. Open the order (Sales → click the row, or search the order number) and click Process return.

Only confirmed, ready, or delivered orders can be returned. A quote or a cancelled order can't — the form will block you and point you back to the order. The Returns page in the sidebar is the log of everything already processed; it's not where you start a new one.

2 · Pick what's coming back

The order's line items appear as a checklist. Tick only the lines being returned — a customer can bring back the frame but keep the lenses. Each ticked line opens three controls:

ControlWhat it does
QtyHow many units of that line are coming back. Capped at the original quantity — you can't return three of something they bought two of.
Unit refund (₹)Defaults to what they paid per unit. Lower it if you're refunding less than the original price (e.g. minus a worn-discount).
Restock?Yes puts the unit back into branch stock. Damaged writes it off — it leaves the order but never re-enters inventory.

Each line shows its running refund (unit × qty) so you can see the total build up as you go.

3 · Refund method, fee & reason

Below the lines, set how the money goes back and why:

FieldNotes
Refund methodCash, UPI, card, bank transfer, store credit, or Exchange only. Exchange only records the return without paying any cash back — for when they're swapping for something else.
Restocking fee (₹)Optional. A flat deduction from the refund — for opened contact-lens boxes, custom-cut lenses, etc. Subtracts from the gross to give the net refund.
ReasonFree text — “wrong frame”, “Rx changed”, “defective”. Travels onto the inventory movement note so the audit trail explains itself.
NotesOptional internal detail for the team.

A totals strip on the right shows the math live — gross refund minus restocking fee equals the net refund the customer actually receives.

4 · Confirm

Click Process return against ORD-…. The button stays disabled until you've ticked at least one line, so you can't submit an empty return. You land on the return's own page with its number (RET-2026-NNNNNN).

What the system does behind the scenes

One click, several ledgers updated — this is the part that's easy to get wrong by hand:

  • Stock restored — every line marked Restock: Yes goes back into branch inventory with an adjustment-increase movement that references the return. Lines marked Damaged are left out.
  • Refund recorded on the order — a negative payment posts against the original order, so its payment ledger (and your cash position) reflects the money going back out. Exchange-only returns skip this, because no cash moves.
  • Inter-org accruals unwound — if the original sale generated a FOFO royalty, a COFO management fee, or a FICO capital charge, the matching portion is reversed in proportion to what you refunded. Franchisees aren't charged royalty on a sale that came back.
  • Owners & managers notified, and the return surfaces back on the original order page and in the Returns log.
Because the refund posts as a negative payment on the original order, an order that's fully returned reads as net-zero in the sales reports rather than vanishing — the sale and its reversal both stay visible for the audit trail.

Next up

Recording expenses

Refunds, restocking fees, and day-to-day spend all land in the same DSR and finance reports.