---
title: "Offers, Coupons & Promotions"
space: "X POS"
url: "https://docs.kodlyft.com/xpos/offers-coupons-promotions"
updated: "2026-05-29"
---

X POS includes a comprehensive promotional system with POS Offers, Coupon Codes, Gift Cards, and integration with ERPNext's Promotional Scheme.

---

## POS Offers

POS Offers are the primary promotional mechanism in X POS. They define automatic or coupon-based discounts and free product rules.

### Creating a POS Offer

Navigate to **POS Offer** in your ERPNext instance and click **+ Add POS Offer**.

![](/files/imageeb1e60.png)

### POS Offer Fields


| Field           | Type       | Description                                                   |
| --------------- | ---------- | ------------------------------------------------------------- |
| **Title**       | Data       | Unique name for this offer                                    |
| **Description** | Small Text | Description shown to cashiers                                 |
| **Disable**     | Check      | Temporarily disable the offer                                 |
| **Company**     | Link       | Company this offer applies to                                 |
| **POS Profile** | Link       | Specific POS Profile (optional, leave blank for all profiles) |
| **Warehouse**   | Link       | Specific warehouse (optional)                                 |


### Apply On — What Triggers the Offer


| Apply On        | Description                                             |
| --------------- | ------------------------------------------------------- |
| **Item Code**   | Offer applies when a specific item is in the cart       |
| **Item Group**  | Offer applies when any item from a group is in the cart |
| **Brand**       | Offer applies when any item from a brand is in the cart |
| **Transaction** | Offer applies based on the overall transaction amount   |


### Offer Type — What the Customer Gets


| Offer Type        | Description                                             |
| ----------------- | ------------------------------------------------------- |
| **Item Price**    | Discount on the item price (percentage or fixed amount) |
| **Give Product**  | Free product/item added to the cart                     |
| **Grand Total**   | Discount on the overall invoice total                   |
| **Loyalty Point** | Bonus loyalty points awarded                            |


### Conditions


| Field                       | Description                                                 |
| --------------------------- | ----------------------------------------------------------- |
| **Min Qty / Max Qty**       | Quantity range for the offer to apply (e.g., buy 3 or more) |
| **Min Amount / Max Amount** | Amount range for the offer to apply                         |
| **Valid From / Valid UpTo** | Date range for offer validity                               |


### Discount Configuration

For price/total discount offers:


| Field                   | Description                                 |
| ----------------------- | ------------------------------------------- |
| **Discount Type**       | "Percentage" or "Amount"                    |
| **Rate**                | Fixed price to set (for "Item Price" offer) |
| **Discount Percentage** | Percentage off                              |
| **Discount Amount**     | Fixed amount off                            |


### Auto vs. Coupon-Based


| Field            | Description                                                 |
| ---------------- | ----------------------------------------------------------- |
| **Auto**         | Default: Yes. Automatically applied when conditions are met |
| **Coupon Based** | If checked, the offer requires a coupon code to activate    |


### Give Product Configuration (For "Give Product" Offers)

When the offer type is "Give Product":


| Field          | Description                                     |
| -------------- | ----------------------------------------------- |
| **Given Item** | The free item to add                            |
| **Given Qty**  | Quantity of the free item                       |
| **Replace**    | Whether the free item replaces the trigger item |


![](/files/image37de71.png)

---

## POS Coupons

Coupons are codes that customers can present to activate coupon-based offers.

### Creating a POS Coupon

Navigate to **POS Coupon** in your ERPNext instance.

![](/files/imagea852b8.png)

### Coupon Fields


| Field                       | Type   | Description                                                       |
| --------------------------- | ------ | ----------------------------------------------------------------- |
| **Coupon Name**             | Data   | Human-readable name (also used as auto-name)                      |
| **Coupon Type**             | Select | "Promotional" or "Gift Card"                                      |
| **Coupon Code**             | Data   | Unique code the customer enters (auto-generated if left blank)    |
| **Company**                 | Link   | Company this coupon belongs to                                    |
| **POS Offer**               | Link   | The POS Offer this coupon activates (must be coupon-based)        |
| **Campaign**                | Link   | Marketing campaign (optional)                                     |
| **Valid From / Valid UpTo** | Date   | Validity period                                                   |
| **Maximum Use**             | Int    | Maximum number of times the coupon can be used (Promotional only) |
| **Used**                    | Int    | Current usage count (auto-incremented)                            |
| **One Use**                 | Check  | Limit to one use per customer                                     |


### Promotional Coupons

- Can be used by any customer
- Usage limited by `Maximum Use` count
- Ideal for marketing campaigns and promotions

### Gift Card Coupons

- Tied to a specific customer
- Customer's name, mobile, and email are fetched automatically
- Used count tracks redemption
- Ideal for store credit and gift cards

### Coupon Validation Logic

When a coupon is entered in X POS, the backend validates:

1. Coupon exists with matching company
2. Coupon is not fully used up (`Used < Maximum Use` for Promotional)
3. Current date is within `Valid From` and `Valid Up-to`
4. For Gift Cards: customer matches the coupon's customer
5. For one-use coupons: customer hasn't already used it (checks submitted invoices)

If any check fails, an error message is returned to the POS.

---

## Applying Coupons in X POS

### Manual Coupon Entry

1. In the Cart Summary, click the **Coupon** button (ticket icon)
2. Enter the coupon code in the input field
3. Click **Apply**
4. If valid: the coupon and its linked offer are applied; a success message shows
5. If invalid: an error message explains why (expired, used up, wrong customer, etc.)

### Auto-Fetch Gift Coupons

If **"Auto Fetch Coupons/Gifts"** is enabled in POS Profile, the system automatically checks for available gift card coupons for the selected customer and can apply them.

### Coupon in Invoice

When a coupon is applied:

- It's stored in the `Coupon Detail` child table of the invoice
- On invoice submission, the coupon's `Used` count is incremented
- On invoice cancellation, the `Used` count is decremented
- The coupon code appears in the order details view

---

## Promotional Scheme Integration

X POS also integrates with ERPNext's built-in **Promotional Scheme** feature. When fetching offers, the system:

1. Loads all direct POS Offers
2. Also loads applicable Promotional Schemes and converts them to the POS Offer format
3. Product discount rules become "Give Product" offers
4. Price discount rules become "Item Price" or "Grand Total" offers
5. All converted offers are auto-applied

This means existing ERPNext Promotional Schemes work seamlessly in X POS.

---

## Offer Evaluation Logic

When offers are active, the cart automatically evaluates them whenever items change:

### Item-Level Offers

For each offer that applies to specific items (Item Code, Item Group, Brand):

1. Check if the triggering conditions are met (min qty, min amount, date range)
2. For **Item Price** offers: Calculate and apply the discount to matching items
3. For **Give Product** offers: Add the free item to the cart with a special `Is Offer` flag
4. For **Loyalty Point** offers: Track bonus points for award after submission

### Transaction-Level Offers

For offers that apply to the entire transaction:

1. Check if the transaction total meets the minimum amount
2. For **Grand Total** offers: Apply the discount percentage to the invoice total
3. The discount appears in the Cart Summary as "Offer Grand Total Discount"

### Free Item Sync

When offers add free items to the cart:

- Free items are marked with `Is Offer = true`
- When offers are re-evaluated (after item changes), old free items are removed and new ones added
- Free items cannot be manually edited or removed (they're managed by the offer engine)
- When an offer is removed, its associated free items are also removed

---

## Delivery Charges

X POS supports configurable delivery charges that can be added to transactions.

### Setup

Delivery charges are configured as a child table on the POS Profile:


| Field                | Description                                         |
| -------------------- | --------------------------------------------------- |
| **Label**            | Display name (e.g., "Standard Delivery", "Express") |
| **Default Rate**     | Standard delivery rate                              |
| **Rate**             | Actual rate to charge                               |
| **Shipping Account** | Account for the delivery charge                     |
| **Cost Center**      | Cost center for reporting                           |


### Using Delivery Charges

1. Click the **Delivery** button in the Cart Summary
2. Available delivery charges are loaded and displayed
3. Click a charge to apply it — the amount is added to the grand total
4. Click the same charge again to remove it
5. Delivery charges are not available in Return Mode
6. If **"Auto Set Delivery Charges"** is enabled, the default charge is automatically applied

![](/files/imagee3bf3a.png)

