View Categories

How to Add & Manage Reason Codes

How to Add & Manage Reason Codes – WinSale POS
01

What Are Reason Codes?

When reason codes are enabled for a transaction type, WinSale pauses the sale and asks the cashier to pick a reason from a list you define. That reason is saved alongside the transaction and available for reporting.

There are four transaction types that support reason codes:

Type # Transaction When the prompt appears
3 Sales Refund Each time an item is returned or a full sale is reversed
2 Discount When a discount is applied to the transaction total
4 Layaway Forfeit When a customer forfeits (cancels) an existing layaway
6 Defective Return When a returned item is marked as defective merchandise
ℹ️
Defective returns are always tracked Even if the Refund Reason checkbox is not ticked, WinSale will still ask “Is this item Defective?” during any refund. If the cashier answers Yes, the defective reason prompt appears regardless of other settings. This ensures defective merchandise is always tracked separately.
02

Enable Reason Code Prompting

Reason code prompting is controlled per transaction type in POS Options. You must enable a type before cashiers will be asked to select a reason during that type of transaction.

To open POS Options

  1. From the main WinSale screen, click the Tools menu in the menu bar.
  2. Click POS Options.
  3. Locate the Reason Codes section.

Checkboxes and what they control

Checkbox labelWhat it enables
Prompt for Refund Reason Cashier is asked to pick a reason on every sales refund or item return
Prompt for Discount Reason Cashier is asked to pick a reason whenever a discount is applied
Prompt for Layaway Forfeit Reason Cashier is asked to pick a reason when forfeiting a layaway
Prompt for Defective Reason Cashier is asked to pick a reason when a returned item is marked defective
Changes take effect immediately You do not need to restart WinSale or log out. POS Options changes apply to all terminals in the store as soon as you save them.
03

Adding a New Reason Code

Reason codes are added from inside WinSale — no files need to be edited. The easiest method is to trigger the reason picker during a test transaction and add the code on the spot.

Step-by-step

  1. Start a transaction of the type you want to add a code for (e.g. begin a Sales Refund).
  2. When the reason code picker dialog appears, you will see the current list of reasons.
  3. Press Insert on your keyboard, or click the Add button if visible.
  4. A small input box will appear asking you to type the new reason description.
  5. Type your description in capital letters — for example: CHANGED MIND or PRICE MATCH — then press Enter or click OK.
  6. The new reason is saved immediately and will appear in the list from this point on for all transactions of that type.
  7. Select your new reason and complete the transaction normally, or press Esc to cancel if you were only managing codes.
ℹ️
Reason codes are stored per transaction type A code added under Refund Reason will only appear for refund transactions. It will not show up in the Discount or Layaway Forfeit picker. If you need the same wording under multiple types, add it separately to each one.
🔢
Codes are numbered automatically The first code you add gets number 01, the second gets 02, and so on. You cannot choose the number — it is assigned sequentially. Code 09 is reserved as the default “OTHER” fallback.
04

Deleting a Reason Code

If a reason is no longer relevant, you can remove it so it no longer appears in the picker. Deleting a reason code does not affect any past transactions that already used it.

Step-by-step

  1. Start a transaction of the type whose codes you want to manage.
  2. When the reason code picker appears, click the reason you want to remove to highlight it.
  3. Press Delete on your keyboard, or click the Remove button if shown.
  4. A confirmation prompt will appear. Click Yes to permanently delete the code.
  5. The code disappears from the list immediately.
  6. Press Esc to cancel out of the transaction if you do not want to complete a sale.
⚠️
Deletion cannot be undone There is no undo for deleting a reason code. If you remove a code accidentally, you will need to add it again manually using the Insert method above. Code numbers are not reused, so the replacement will receive the next available number.
05

What the Cashier Sees

When a reason code is required, WinSale displays the reason picker and the cashier cannot proceed until a reason is selected. The dialog title shows which type of reason is being collected.

Refund Reason
(01) CHANGED MIND
(02) WRONG SIZE
(03) WRONG ITEM ORDERED
(04) PRICE MATCH
(09) OTHER

The cashier can select a reason by clicking it in the list, using the arrow keys to navigate, or typing the code number directly into the Code field. Double-clicking a reason also confirms it immediately.

06

Keyboard Shortcuts in the Reason Picker

Key
Action
Insert
Add a new reason code to the current list
Delete
Remove the currently highlighted reason code
/
Move up or down through the reason list
Enter
Confirm the selected reason and close the dialog
Type a number
Jump directly to that reason code number in the Code field
Double-click
Select a reason and confirm in one action
07

Tips & Best Practices

  • ✏️
    Keep descriptions short and consistent. All-caps works best — WinSale converts entries to uppercase automatically. Aim for 2–4 words: CHANGED MIND, PRICE MATCH, DUPLICATE ORDER.
  • Always include an “OTHER” code. WinSale automatically falls back to code 09 — OTHER in some scenarios. Having it in your list ensures it displays with the correct label. Add it to every type you configure.
  • 🔒
    Check POS Options first if prompts are not appearing. If the reason picker is not showing up for a transaction type you expect, verify the corresponding checkbox is ticked under Tools → POS Options → Reason Codes.
  • 🌐
    Changes are store-wide and immediate. Any reason code you add or remove is available on every terminal in the store straight away — there is no per-terminal setting and no restart required.
  • 📋
    Reason codes are separate per transaction type. The list under Refund is completely independent from the list under Discount. Plan your codes for each type individually before adding them.