---
title: "List Stacking Rules"
method: GET
path: "/management/v1/projects/{projectId}/stacking-rules"
tags: ["Management"]
---

# List Stacking Rules

`GET /management/v1/projects/{projectId}/stacking-rules`

Lists all stacking rules.

Returns always a list with one item.

This endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.

> 📘 Stacking Rules Documentation
>
> Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.

## Response `200`

Returns the details about the stacking rules assigned to the project. These can be either the default stacking rules or the created ones.

- ManagementProjectsStackingRulesListResponseBody — Response body schema for **GET** `/management/v1/projects/{projectId}/stacking-rules`.
  - `object` 'list', required — The type of the object represented by JSON. This object stores information about the stacking rules in a dictionary.
  - `data_ref` 'data', required — Identifies the name of the attribute that contains the array of stacking rule objects.
  - `data` ManagementProjectsStackingRules[], required — Array of only one stacking rule object.
    - `id` string — The unique identifier of the stacking rules.
    - `exclusive_categories` string[], required — Lists the IDs of exclusive categories. A redeemable from a campaign with an exclusive category is the only redeemable to be redeemed when applied with redeemables from other campaigns unless these campaigns are exclusive or joint.
    - `joint_categories` string[], required — Lists the IDs of the joint categories. A campaign with a joint category is always applied regardless of the exclusivity of other campaigns.
    - `redeemables_limit` integer, required — Defines how many redeemables can be sent in one request. Note: more redeemables means more processing time.
    - `applicable_redeemables_limit` integer, required — Defines how many redeemables can be applied in one request. The number must be less than or equal to `redeemables_limit`. For example, a user can select 30 discounts but only 5 will be applied to the order and the remaining will be `SKIPPED` according to the `redeemables_sorting_rule`.
    - `applicable_redeemables_per_category_limit` integer, nullable, required — Defines how many redeemables with the same category can be applied in one request. The number must be less than or equal to `applicable_redeemables_limit`. The ones above the limit will be `SKIPPED` according to the `redeemables_sorting_rule`.
    - `applicable_redeemables_category_limits` object, required — Lists categories by category IDs (keys) and defines their limits (values) of applicable redeemables that belong to campaigns with that category.
    - `applicable_exclusive_redeemables_limit` integer, required — Defines how many redeemables with an assigned exclusive category can be applied in one request. The ones above the limit will be `SKIPPED` according to the `redeemables_sorting_rule`.
    - `applicable_exclusive_redeemables_per_category_limit` integer, nullable, required — Defines how many redeemables with an assigned exclusive category can be applied in one request. The ones above the limit will be `SKIPPED` according to the `redeemables_sorting_rule`. The number must be less than or equal to `applicable_exclusive_redeemables_limit`.
    - `discount_calculation_mode` 'INITIAL_AMOUNT' | 'DISCOUNTED_AMOUNT', required — Defines if the discounts are applied by taking into account the initial order amount or the discounted order amount.
    - `initial_amount_mode_categories` string[], required — Lists the IDs of the categories that apply a discount based on the initial amount.
    - `discounted_amount_mode_categories` string[], required — Lists the IDs of the categories that apply a discount based on the discounted amount.
    - `redeemables_application_mode` 'ALL' | 'PARTIAL', required — Defines the application mode for redeemables. `"ALL"` means that all redeemables must be validated for the redemption to be successful. `"PARTIAL"` means that only those redeemables that can be validated will be redeemed. The redeemables that fail validaton will be skipped.
    - `redeemables_sorting_rule` 'CATEGORY_HIERARCHY' | 'REQUESTED_ORDER', required — Defines redeemables sorting rule. `CATEGORY_HIERARCHY` means that redeemables are applied oaccording to the category priority. `REQUESTED_ORDER` means that redeemables are applied in the sequence provided in the request.
    - `redeemables_products_application_mode` 'STACK' | 'ONCE', required — Defines redeemables products application mode. `STACK` means that multiple discounts can be applied to a product. `ONCE` means that only one discount can be applied to the same product.
    - `redeemables_no_effect_rule` 'REDEEM_ANYWAY' | 'SKIP', required — Defines redeemables no effect rule. `REDEEM_ANYWAY` means that the redeemable will be redeemed regardless of any restrictions or conditions in place. `SKIP` means that the redeemable will be processed only when an applicable effect is calculated.
    - `no_effect_skip_categories` string[], required — Lists category IDs. Redeemables with a given category are skipped even if the `redeemables_no_effect_rule` is set to `REDEEM_ANYWAY`. Category IDs can't overlap with the IDs in `no_effect_redeem_anyway_categories`.
    - `no_effect_redeem_anyway_categories` string[], required — Lists category IDs. Redeemables with a given category are redeemed anyway even if the `redeemables_no_effect_rule` is set to `SKIP`. Category IDs can't overlap with the IDs in `no_effect_skip_categories`.
    - `redeemables_rollback_order_mode` 'WITH_ORDER' | 'WITHOUT_ORDER', required — Defines the rollback mode for the order. `WITH_ORDER` is a default setting. The redemption is rolled back together with the data about the order, including related discount values. `WITHOUT_ORDER` allows rolling the redemption back without affecting order data, including the applied discount values.
    - `created_at` string, date-time — Timestamp representing the date and time when the stacking rules were created. The value for this parameter is shown in the ISO 8601 format.
    - `updated_at` string, date-time — Timestamp representing the date and time when the stacking rules were updated. The value for this parameter is shown in the ISO 8601 format.
  - `total` integer, required — The total number of stacking rule objects. It is always 1.

## Other responses

- `401` — Returns an error if an invalid token was provided.
- `402` — Returns an error if the current plan does not include the Management API feature.
- `404` — Returns an error when a resource could not be found.

---

[API](https://skmtc.net/voucherifyio/apis/voucherify-api-async-actions.md) · [All operations](https://skmtc.net/voucherifyio/apis/voucherify-api-async-actions/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/voucherifyio/voucherify-api-async-actions/versions/4982266e0494/schema)
