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 |
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
- From the main WinSale screen, click the Tools menu in the menu bar.
- Click POS Options.
- Locate the Reason Codes section.
Checkboxes and what they control
| Checkbox label | What 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 |
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
- Start a transaction of the type you want to add a code for (e.g. begin a Sales Refund).
- When the reason code picker dialog appears, you will see the current list of reasons.
- Press Insert on your keyboard, or click the Add button if visible.
- A small input box will appear asking you to type the new reason description.
- Type your description in capital letters — for example:
CHANGED MINDorPRICE MATCH— then press Enter or click OK. - The new reason is saved immediately and will appear in the list from this point on for all transactions of that type.
- Select your new reason and complete the transaction normally, or press Esc to cancel if you were only managing codes.
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
- Start a transaction of the type whose codes you want to manage.
- When the reason code picker appears, click the reason you want to remove to highlight it.
- Press Delete on your keyboard, or click the Remove button if shown.
- A confirmation prompt will appear. Click Yes to permanently delete the code.
- The code disappears from the list immediately.
- Press Esc to cancel out of the transaction if you do not want to complete a sale.
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.
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.
Keyboard Shortcuts in the Reason Picker
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.