> For the complete documentation index, see [llms.txt](https://docs.limio.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.limio.com/product/pricing/discounts-and-promo-codes.md).

# Discounts & Promo Codes (Beta)

Discounts & Promo Codes are a new way to run promotions in Limio, built on two catalog objects that separate the deal from how customers claim it:

* A **Discount** is the deal: "20% off for 3 months", or "£10 off the basket", applied to everything or just specific items.
* A **Promo Code** is how customers claim it: the code they type at checkout, like SUMMER20, with its own redemption limit, start date and expiry date.

One Discount can power any number of Promo Codes, so changing the deal is one edit — not one edit per code. Both objects work like the rest of your catalog: templates, filtering, bulk actions and API access.

{% hint style="info" %}
**Beta**: Discounts & Promo Codes are in beta and currently work with **Stripe Billing only**. Support for Zuora, and for redeeming these promo codes through Limio for Salesforce, is planned for a future release.
{% endhint %}

**Which promo codes should I use?**

| Your setup     | Use                                                                                                              |
| -------------- | ---------------------------------------------------------------------------------------------------------------- |
| Stripe Billing | This page — Discounts & Promo Codes                                                                              |
| Zuora Billing  | [Promo Codes v2](/product/pricing/how-to-configure-and-implement-promo-codes.md) (unchanged and fully supported) |

{% hint style="info" %}
**Note**: A Discount is a separate concept from the [Cancel/Save Discount](/product/pricing/what-are-offers-and-how-to-configure-them/cancel-save-discount.md) offer type, which remains specific to cancel/save journeys.
{% endhint %}

***

## Enable the beta

Go to **Settings > Beta** and turn on **"Use Limio Discounts"**. Two new entries appear in the Limio Catalog side panel: **Discounts** and **Promo Codes**.

Enabling the beta does not change how your existing Promo Codes v2 behave — codes of both versions can be redeemed side by side (see [Redemption at checkout](#redemption-at-checkout)).

## Create a Discount

In the catalog, go to **Discounts** and click **Create**. The following attributes define the deal:

| Attribute               | Details                                                                                                                                                                                  |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Display name**        | The discount name shown to the customer when it is applied                                                                                                                               |
| **Display description** | Rich text description shown when the discount is applied                                                                                                                                 |
| **Applies to**          | **Basket** applies the discount to every item in the basket. **Line items** applies it only to offers carrying the label you select in the **Attached offers label** field that appears. |
| **Discount**            | **Percentage discount** with a percentage value, or **Amount discount** with a currency and amount                                                                                       |
| **Duration**            | How long the discount is applied for: a length and a type (months or years)                                                                                                              |
| **Label**               | Optional label for organising your discounts                                                                                                                                             |
| **Stripe coupon**       | The linked Stripe coupon — created for you with the **Create Coupon** button (see below)                                                                                                 |

Discounts behave like other catalog items: you can manage attribute sets with templates (**Config > Templates**), filter and export the table view, edit in-line, and bulk update, copy or delete.

## Create the Stripe coupon and publish

Stripe applies discounts through **coupons**, and a Stripe coupon cannot be changed once created. Limio manages this for you:

1. Configure your Discount and click **Create Coupon**. Limio creates a matching coupon in Stripe and links it to the Discount.
2. Click **Publish**. Publishing requires a linked, in-sync Stripe coupon — if the Discount has no coupon, or you changed the Discount after creating the coupon, the publish fails and tells you to click **Create Coupon** first.

If you click **Create Coupon** when the linked coupon already matches the Discount, nothing is created and Limio confirms the coupon is in sync. If the Discount has changed, Limio creates a **new** Stripe coupon and re-links it — the old coupon is left behind in Stripe but no longer used.

{% hint style="warning" %}
Orders always use the coupon that was linked **at the time of the last publish**. If you change a Discount, remember to **Create Coupon** and **Publish** again for the change to take effect in your shop.
{% endhint %}

## Create Promo Codes

In the catalog, go to **Promo Codes** and click **Create**:

| Attribute              | Details                                                                 |
| ---------------------- | ----------------------------------------------------------------------- |
| **Promo code**         | The code customers type at checkout. Matching is case-insensitive.      |
| **Status**             | Active or inactive. Inactive codes cannot be redeemed.                  |
| **Available quantity** | How many times the code can be redeemed. Leave empty for unlimited.     |
| **Description**        | Internal description                                                    |
| **Start date**         | The date the code becomes redeemable. Leave empty to start immediately. |
| **Expiry date**        | The date the code stops working. Leave empty for no expiry.             |
| **Limio discount**     | The Discount this code redeems                                          |

The Promo Codes table also shows the **redeemed quantity** for each code, so you can track uptake of a campaign at a glance.

## Redemption at checkout

Customers redeem codes through the same **Promo Code Redeem** component you may already use today — no page changes are required.

When a customer applies a code and the beta is enabled, Limio first looks for a matching new-style Promo Code; if none exists it falls back to Promo Codes v2, so existing campaigns keep working during the transition.

A new-style code is applied when all of these checks pass — otherwise the customer sees the component's invalid-code message:

* The code is **active**
* The current date is within the **start and expiry dates**
* There is **available quantity** remaining
* The linked Discount exists and is **published**
* For **amount discounts**: the basket currency matches the discount currency
* For **line items** discounts: the basket contains at least one offer with the attached offers label

When the discount is applied, the basket totals update to show the saving — for line-item discounts on the matching items only, for basket discounts across the whole order. Line item totals never go below zero. Customers can remove an applied code and enter a different one.

## What happens on the order

When the customer places the order, the subscription created in Stripe carries the Stripe coupon linked to the Discount, so Stripe bills the discounted amount for the configured duration. The Limio subscription records the Discount that was applied.

Redemption counting is only committed on success: the code's redeemed quantity increases by one when the order completes, and is restored if order processing fails — abandoned or failed orders never consume codes.

## API access

Both objects are available through the Limio API:

* [Promo Codes API](https://docs.limio.com/api/catalog-api/promo-codes) — create and manage promo codes, including the linked discount reference
* [Catalog API](https://docs.limio.com/api/catalog-api/catalog) — query discounts with `record_type=discount` (published only, or all versions via the catalog items endpoint)

## Current limitations and roadmap

* Discounts work with **Stripe Billing only** in this release. Zuora support is planned as a later phase of the same initiative.
* Redeeming these promo codes through **Limio for Salesforce** is not yet supported and is planned for a future release.
* Existing discount offers, discount add-ons and Promo Codes v2 are unchanged — nothing is removed or migrated by enabling the beta.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.limio.com/product/pricing/discounts-and-promo-codes.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
