---
title: "Returns & Refunds"
space: "X POS"
url: "https://docs.kodlyft.com/xpos/returns-refunds"
updated: "2026-05-29"
---

X POS supports a complete return and refund workflow. Returns create credit notes (negative invoices) linked to the original sale, ensuring proper accounting and inventory management.

---

## Prerequisites

Before using returns, ensure these settings are configured in your POS Profile:


| Setting                          | Required Value | Description                                                                  |
| -------------------------------- | -------------- | ---------------------------------------------------------------------------- |
| **Allow Return**                 | Enabled        | Master switch for the return feature                                         |
| **Allow Return Without Invoice** | Optional       | If enabled, returns can be processed without referencing an original invoice |
| **Enable Return Validity**       | Optional       | Enforce a time limit for returns                                             |
| **Return Validity Days**         | e.g., 30       | Number of days after purchase within which returns are accepted              |
| **Allow Free Batch Return**      | Optional       | Allow returns without matching the original batch number                     |


---

## Starting a Return

There are three ways to initiate a return:

### Method 1: From the Navbar (Ctrl + R)

1. Click the **Return** button (amber colored) in the Navbar, or press **Ctrl + R**
2. The **Return Invoice Dialog** opens
3. Search for the original invoice by invoice number or customer name
4. Select the invoice from the results
5. Choose items and quantities to return
6. Click **"Process Return"**

![](/files/image32b749.png)

### Method 2: From the Orders View

1. Navigate to **Orders** (Alt+2 or via sidebar)
2. Find the original invoice
3. Click the invoice to view its details
4. Click the **"Return"** button in the order detail modal
5. The system automatically:
  - Clears the current cart
  - Enters return mode with the original invoice reference
  - Populates the cart with returnable items (with remaining returnable quantities)
  - Redirects to the POS interface

### Method 3: Via Command Search

1. Press **Ctrl + K** to open Command Search
2. Type "Return Invoice"
3. Select the action from results

---

## Return Invoice Dialog — Step by Step

The Return Dialog operates in two phases:

### Phase 1: Invoice Selection

1. **Search Input** — Type at least 2 characters to search
2. The system searches by invoice name or customer name via API
3. **Invoice Cards** appear showing:
  - Invoice name/number
  - Customer name
  - Posting date
  - Grand total amount
4. Click an invoice to select it

![](/files/imagedc3f8a.png)

### Phase 2: Return Item Selection

After selecting an invoice, the dialog shows the items from that invoice:

1. **Header** — Shows the selected invoice name and customer
2. **Back Button** — Return to invoice search
3. **Items Table** with columns:
  - **Item** — Item name and code
  - **Sold Qty** — Original quantity sold
  - **Return Qty** — Editable numeric input for quantity to return
  - **Amount** — Line amount for the return
4. Each item's return quantity is pre-filled with the **maximum returnable quantity** (original qty minus any previously returned qty)
5. Adjust the return quantities as needed (0 to max returnable)
6. Click **"Process Return"** — only enabled when at least one item has return qty > 0

![](/files/imagef1f8ce.png)

---

## Return Mode in POS

When a return is initiated, the POS interface enters **Return Mode**:

### Visual Indicators

- **Amber Return Banner** — A yellow/amber alert strip appears at the top of the cart showing "Return Mode" with the original invoice reference
- **Amber Grand Total** — The total displays in amber instead of the usual color
- **Negative Quantities** — All items show negative quantities
- **Locked Customer** — The customer section is locked and cannot be changed

### Restrictions in Return Mode

- Cannot change the customer
- Cannot add new items that weren't in the original invoice (when returning against a specific invoice)
- Cannot apply delivery charges
- Cannot redeem loyalty points
- Cannot apply write-off amounts
- Coupon and offer inputs are hidden

### Exiting Return Mode

- Click the **"Exit Return"** button on the amber banner
- This clears the cart and restores normal sale mode

---

## Processing the Return Payment

When you click **Pay** in return mode:

1. The Payment Dialog opens in **Return Mode** (amber styling)
2. The amount shows as **negative** (e.g., -$150.00)
3. Select the refund payment method
4. Enter the refund amount
5. All payment amounts are automatically negated
6. Click **"Save & Print"** or **"Save Only"**

The system validates that:

- All item quantities are negative
- The grand total is negative
- A "Return Against" invoice is set

---

## Return Validity

If **"Enable Return Validity"** is enabled with a configured number of days:

- The system checks the posting date of the original invoice
- If the return is attempted after the validity period, it will be rejected
- Example: If Return Validity Days = 30, an invoice from January 1st cannot be returned after January 31st

---

## Partial Returns

X POS supports partial returns:

- You can return fewer items than were originally sold
- Adjust the return quantity for each item individually (0 to max returnable)
- Items with return qty = 0 are excluded from the return
- The **remaining returnable quantity** is calculated as: `Original Qty - Previously Returned Qty`
- Multiple partial returns can be made against the same invoice until all quantities are exhausted

---

## Returns Without Invoice

If **"Allow Return Without Invoice"** is enabled:

- Returns can be processed without searching for or selecting an original invoice
- The cashier manually adds items and sets negative quantities
- This is useful for scenarios where the original receipt is unavailable
- The return invoice will not have a return against reference

> **Note:** This should be used with caution as it bypasses the normal validation of returnable quantities.

