# Promotion rules

Commerce Layer provides a promotional engine built on top of two main resources: [promotions](/core-api-reference/promotions.md) and promotion rules.

At the moment the following promotion rules are available (more to come):

* [Coupon code](/core-api-reference/coupon_codes_promotion_rules.md)
* [Order amount](/core-api-reference/order_amount_promotion_rules.md)
* [SKU list](/core-api-reference/sku_list_promotion_rules.md)
* [Custom](/core-api-reference/custom_promotion_rules.md)

{% hint style="info" %}
The number of promotions associated with a [coupon code promotion rule](/core-api-reference/coupon_codes_promotion_rules.md) is **unlimited**. The number of promotions associated with any other promotion is subject to limitations: by default, only **a maximum of 10 active promotions per organization** is allowed, regardless of their type (this limit may vary depending on your plan). Please note that you can create and enable as many promotions as you want but, if more than 10 promotions are active at the same time, only the 10 that have higher [priority](/core-api-reference/promotions.md#priority-and-order-of-application) will be applied.
{% endhint %}

With the exception of [flex promotions](/core-api-reference/flex_promotions.md) (for which you're not required to define any promotion rule, set a currency code, or associate a specific market, but just provide a rule with specific conditions and actions), if one or more promotion rules are defined, the promotion is triggered only when it matches all of them. Otherwise, if no promotion rule is associated with an active promotion, the related discount is applied to:

* All the orders, if the promotion is not restricted to a specific currency or market (only possible for [buy X pay Y](/core-api-reference/buy_x_pay_y_promotions.md), [free gift](/core-api-reference/free_gift_promotions.md), [free shipping](/core-api-reference/free_shipping_promotions.md), of [percentage discount](/core-api-reference/percentage_discount_promotions.md) promotion types).
* All the orders in the specified currency, if a currency code is specified but the promotion is not restricted to a specific market.
* All the orders of the market in scope, if the promotion is attached to a market.

{% hint style="info" %}
This is an **immutable API**, meaning that create, update, and delete operations are not allowed on this endpoint. You can only fetch a list of promotion rules or a single promotion rule object. For the full set of available CRUD actions to the specific promotion rule type endpoints.
{% endhint %}


---

# 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://docs.commercelayer.io/core-api-reference/promotion_rules.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.
