# Discount program

{% hint style="info" %}
This feature is available for all plans
{% endhint %}

### What is "Discount program" feature?

The discount program allows customers to use their accumulated points to receive a discount on their purchases. Each discount becomes a unique, one-time-use coupon code that's automatically generated for your customers when they redeem their points.

### Why do you need this feature?

A points-to-discount program is a powerful tool for growing your business. When customers can easily turn their points into discounts, they're more likely to return to your store and make repeat purchases. Not only does this increase your average order value, but it also helps you stand out from competitors. We've seen merchants significantly boost their sales with this simple yet effective way to reward customer loyalty. Think of it as an investment in your customers that pays off in long-term business growth!

### How to set up this feature

{% stepper %}
{% step %}
**Get access to "Discount program"**

Choose **Reward programs** -> **Redeeming programs** -> Go to **Discount program -> Select Add more**

{% embed url="<https://app.arcade.software/share/NQ46N162RawFcsedetvm>" %}
{% endstep %}

{% step %}
**Choose your discount type**

Pick either **Discount amount,** **Discount percentage** or **Buy X Get Y** depending on your purpose and value of the item

* **Discount Amount:** a **fixed reduction** applied to the original price of a product
* **Discount Percentage**: A **percentage-based reduction** on the product price
* **Buy X Get Y (BXGY)**: A promotional offer where customers receive additional products or discounts when purchasing a certain quantity

<figure><img src="/files/SsmnaiKgAzxzPTCG2ALm" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Set up "Discount program" rules**

a. **Discount amount:** Using this type of rule, you allow customers to redeem their points and get a discount code whose value is decided by the admin

* **Setup rewards**: Enter a clear name for your program
* **Redeem value**: You can choose between 2 options
  * **Dynamic Discount**: Points-based discounts with flexible thresholds\
    → You can also set additional discount limits to control how customers redeem points:
    * **Minimum points required**: Only allow customers to redeem once they reach a specific point threshold.
    * **Maximum points per redemption**: Cap the total number of points a customer can use in a single redemption.
    * **Maximum discount percentage**: Prevent the discount from exceeding a certain percentage of the cart total.
  * **Fixed Discount**: A set amount deducted at checkout for simplicity
* **Applicable categories**: Choose where discounts can be used
* **Minimum order requirement**: Set minimum order your customers need to get discount
* **Coupon expiration date**: Set when discount codes expire

<figure><img src="/files/FpWSRllUCEIjgZPGF0Om" alt=""><figcaption></figcaption></figure>

**Condition**:

* **Combinations**: You can choose which discounts work together
* **Apply discounts to sale channel**: Choose sale channels where customers can use their point-based discounts
* **Who can use discount**: Choose whether everyone or only customer who redeemed can use your discount

**Refund points**: Manage returns and refunds automatically

**Discount code's prefix**: You can use default prefix or create custom prefix for your brand

<figure><img src="/files/lAe7fET8LSvjS0G98Ybm" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Set up "Discount percentage" rules**

**Setup rewards**: Enter a clear name for your program

**Redeem value**: Set up point conversion rate for your program

**Maximum discount amount (cap)**: Optional. Turn on the **Max amount cap** toggle to limit how much a percentage discount can take off an order. See [Maximum discount amount cap](#max-amount-cap) below for details and examples.

**Applicable categories**: Choose where discounts can be used

**Minimum order requirement**: Set minimum order your customers need to get your rewards

**Coupon expiration date**: Set when discount codes expire

<figure><img src="/files/kOeWF6D9quyBmCGnjVdR" alt=""><figcaption></figcaption></figure>

**Condition**:

* **Combinations**: You can choose which discounts work together
* **Apply discounts to sale channel**: Choose sale channels where customers can use their point-based discounts
* **Who can use discount**: Choose whether everyone or only customer who redeemed can use your discount

**Refund points**: Manage returns and refunds automatically

**Discount code's prefix**: You can use default prefix or create

<figure><img src="/files/pG5EjgtGRHeS2HdLj5fV" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Set up Buy X get Y**

Set up **program name** and **points** that customers need to redeem to exchange a discount

<figure><img src="/files/aImBJqJkoIZqnvVgoYil" alt=""><figcaption></figcaption></figure>

Set up **discount condition** for the next buy that customers can use:

<figure><img src="/files/djIFHOJYaL771BkAzUdg" alt=""><figcaption></figcaption></figure>

**Set up the condition:**

* **Combinations**: You can choose which discounts work together
* **Apply discounts to sale channel**: Choose sale channels where customers can use their point-based discounts
* **Who can use discount**: Choose whether everyone or only customer who redeemed can use your discount

**Refund points**: Manage returns and refunds automatically

**Discount code's prefix**: You can use default prefix or create

<figure><img src="/files/jfZ536rlHKv7A8PG8AY5" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Hit **Save** and press **Turn on** to activate your discount program
{% endstep %}
{% endstepper %}

### Maximum discount amount cap <a href="#max-amount-cap" id="max-amount-cap"></a>

Percentage discounts without a cap can eat into margin on large orders — for example, a $5,000 order with 20% off becomes a $1,000 discount. The **Max amount cap** lets you limit the discount's dollar value regardless of order size, while keeping the same percentage.

**Example:** `20% off (up to $100)` — a $5,000 order still receives a $100 discount instead of $1,000.

This pattern mirrors what shoppers already know from marketplaces like Shopee, Lazada, and Amazon, so it's intuitive at checkout.

**Configuration:**

<figure><img src="/files/7XH2Fe60JlMc5TdHqAkd" alt=""><figcaption></figcaption></figure>

* The cap is **off by default** — existing programs keep working as before.
* Toggle appears only when the reward type is set to **Percentage discount**.
* Available across every program that offers percentage discounts: redemption programs (this page), Place Order rewards, Milestones, Referral rewards (with a separate cap for the referrer and the referee), VIP Tier privileges, and more.

**How the cap is calculated:**

When the discount applies to specific products or collections, the cap is applied to the **total** discount across all eligible items in the cart — not per item. For example, 20% off with a $100 cap across 3 eligible products means the combined discount stops at $100, even if the percentage math would otherwise go higher.

**Storefront display:**

Once enabled, the cap appears automatically in program descriptions and widget labels, e.g. `Get 20% off (up to $100)`. You can still override the description text manually if needed.

#### **FAQs:**

**Can customers exchange their coupons back for points?**

Yes, you can convert customers' unused coupons back into points upon their request. This is merchant-only control — Customers must contact merchants for refunds.

You can revoke a coupon in the customer profile.

**Can we choose the purchase type, both or subscription, without a subscription app installed?**

No, you should not. The Shopify API does not allow us to do that. If you do not have [a subscription app](https://apps.shopify.com/search?q=subscription\&st_source=autocomplete) installed, you had better choose the One-time purchase option. If not, you may see a message like: "applies\_on\_subscription field is not permitted without the shop using subscriptions"


---

# Agent Instructions: 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:

```
GET https://help.joy.so/reward-programs/redeeming-programs/discount-program.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
