> ## Documentation Index
> Fetch the complete documentation index at: https://docs.filexpress.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Promotions

> Automatic discounts by percentage, fixed amount, new price, or combo applied when adding products to the cart

Promotions let you define discounts that the system applies automatically in the **POS** and **New Sale** when it detects that the configured products and conditions are met — without manual intervention from the salesperson.

## Promotion types

| Type | Code | Description |
| - | - | - |
| **Percentage** | `percentage` | Reduces a % off the price or subtotal |
| **Fixed amount** | `fixed` | Reduces a fixed amount in dollars |
| **New price** | `override_price` | Replaces the price with a new one |
| **Combo** | `combo` | Sets a total price for a bundle of products |

## Create a promotion

**1. Go to Sales → Promotions → New Promotion**

**2. Complete the main fields**

| Field | Description |
| - | - |
| Name | Identifier visible in the cart (e.g. "2x1 Product A") |
| Description | Internal text, not visible to the customer |
| Discount type | See the types table above |
| Value / Combo price | Percentage, fixed amount, new price, or the combo's total price |
| Applies to | **Unit price** or **Sale subtotal** |
| Minimum quantity | Minimum units required to activate the promo |
| Validity | Optional date range (start and end) |
| Priority | Higher number = higher priority. When two promos apply to the same item, the one with higher priority wins |
| Active | Activate or pause without deleting |

**3. Add conditions**

Define **what the promo applies to**. If there are no conditions, it applies to all products.

| Condition type | Description |
| - | - |
| Specific products | List of products by name |
| Categories | All products of one or several categories |
| Brands | All products of one or several brands |

For combos: conditions of type **Specific products** are required — all of them must be in the cart for the combo to activate.

**4. Save**

The promotion is active immediately (if it is within the date range).

## How promotions are evaluated

When a product is added or modified in the cart, the system automatically checks all active, valid promotions:

### Per-item promos (apply\_on: unit\_price)

* All promos that apply to the product are evaluated.
* **Only the one with the highest priority is applied** — they do not stack.
* The discount is shown as `promo_discount` next to the product in the cart.

### Subtotal promos (apply\_on: subtotal)

* All applicable subtotal promos stack.
* The total discount is shown in the sale summary as a global promotion discount.

### Combos

* They require **all** the products in the conditions to be present in the cart.
* The discount is at the order level: `discount = sum of individual prices − combo_price`.
* If any product of the combo is removed from the cart, the discount disappears automatically.

## Prices and IVA-exempt customers

**New price** and **Combo** prices are configured as **final consumer prices (VAT (IVA) included)** for taxable products.

When the selected customer is marked as IVA-exempt (`is_exent`), the system automatically extracts the tax:

```
Precio combo consumidor: $45.00 (IVA incluido)
Para cliente exento:     $45.00 ÷ 1.13 = $39.82
```

> [!NOTE]
>
> The system performs this calculation automatically in both the POS and New Sale. There is no need to create a separate promotion for exempt customers.

## Example: percentage promotion

| Field | Value |
| - | - |
| Name | 10% OFF Beverages Category |
| Type | Percentage |
| Value | 10 |
| Applies to | Unit price |
| Condition | Category: Beverages |
| Minimum quantity | 1 |

Result in the cart:

* Product "Water 500ml" $1.50 → promo_discount $0.15 → effective price **\$1.35**

## Example: product combo

| Field | Value |
| - | - |
| Name | Lunch Combo |
| Type | Combo |
| Combo price | \$8.99 |
| Conditions | Product: Hamburger, Product: French fries, Product: Soda |

Result in the cart (if all 3 products are present):

* Hamburger $5.00 + Fries $2.50 + Soda $1.50 = $9.00 regular
* With combo → $0.01 discount applied to the total → **$8.99\*\*

## Priority and evaluation order

When there are several active promos, the system evaluates them in descending order of priority. For per-item promos, the **first one that applies wins** and the others are ignored for that product.

> [!WARNING]
>
> The same subtotal promo can be combined with per-item promos, but two "unit price" promos do not stack on the same product.

## Manage active promotions

From the promotions list you can:

* **Activate / Deactivate** with the toggle — useful for seasonal promotions.
* **Edit** all fields without affecting the history of sales already processed.
* **Delete** if the promotion is no longer needed.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.