Using NodeDR POS

Returns & Exchanges

Handle returns and exchanges from any past invoice at the POS screen — no separate returns page, no paper forms.

How returns work

Returns are initiated directly from the POS screen via the Return / Exchange panel. Enter an invoice number to pull up the original sale, then choose which items — and how many — to return. You can combine a return with a new sale in the same checkout to process an exchange as a single transaction.

Processing a standalone return

  1. Open the POS screen.
  2. Click Return / Exchange (or press the keyboard shortcut).
  3. Enter the invoice number (e.g. INV-2026-00047) and press Enter.
  4. The original sale lines appear. Select the items and quantities to return.
  5. The return amount is pre-filled as the amount originally paid for those items (after any line discounts). The cashier can lower the refund but not raise it above what the customer paid.
  6. Choose the refund method: Cash, UPI, Card, or Store Credit.
  7. Finalize. Returned stock is immediately added back to inventory. The invoice’s return history is updated.

Processing an exchange

An exchange is a return and a new sale in the same checkout:

  1. Follow steps 1–5 above to queue the return lines.
  2. Without finalizing, add new items to the cart as you would for a regular sale.
  3. The return value is netted against the new sale total:
    • If the new items cost more than the return value, the customer pays the difference.
    • If the return value is more than the new items, the leftover is applied as: first, paying down any outstanding customer due; then, refunded as cash/UPI/card or added as store credit.
  4. Finalize in one transaction. The return is recorded with refundMethod: BILL_OFFSET for the netted portion — no money changes hands for that amount.

Partial and repeat returns

Returning part of a line on one day and the rest on another day is fully supported. The system tracks how much of each line has already been returned by summing all existing ReturnItem rows against the original invoice line — not a running counter. This means:

  • You can return 1 of 3 units today and 2 next week — both work correctly.
  • A unit that has already been returned can never be returned again — the returnable quantity is always exact.
  • The cashier sees the remaining returnable quantity clearly on the return panel.

Stock and accounting behaviour

  • Stock is restored to inventory immediately when a return is finalized.
  • Loyalty points earned on the original sale are deducted proportionally on a return.
  • The original invoice is not modified — returns are stored as separate records linked to the invoice, preserving the full audit trail.
  • The sales dashboard excludes returned amounts from revenue totals.

Viewing return history

From Sales → History, click any invoice to see its detail view. A “Returns” section at the bottom lists every return made against that invoice — date, items, quantities, refund method, and amount — so the cashier or admin can see the complete lifecycle of any sale.