# Quote Entitlement

> For the complete machine-readable documentation index, see [llms.txt](https://apidocs.chargebee.com/llms.txt).


## Overview[](#overview)

The quote entitlement object represents the entitlement a [quote](/docs/api/quotes) holds for a [feature](/docs/api/features). A quote can have several quote entitlements, each tied to a specific feature and to an entity on the quote (such as a plan price, addon price, or charge price).

## How quote entitlements are determined[](#how-quote-entitlements-are-determined)

Quote entitlements are based on the [entitlements](/docs/api/entitlements) linked to the [item prices](/docs/api/item_prices) on the quote. If an item price lacks an entitlement record for a particular feature, Chargebee considers the entitlement (when available) of its parent [item](/docs/api/items).

You can further customize entitlements by passing `entitlement_overrides` when creating or editing item-based quotes. When an entitlement has been explicitly overridden on the quote, `is_overridden` is `true` and the entitlement takes on the override `value`.

The method used to derive entitlement levels follows the same rules determined by the feature [type](/docs/api/features/feature-object#type) as described for [subscription entitlements](/docs/api/subscription_entitlements).

Use the [List Quote Entitlements](/docs/api/quote_entitlements/list-quote-entitlements) API to retrieve the entitlements associated with a quote.

**Note** Applicable only when Chargebee CPQ and Entitlements are enabled. To request access, contact [Chargebee Support](https://www.chargebee.com/docs/billing/2.0/kb/getting-started/how-to-contact-chargebees-support-team?utm_source=docs_api&utm_medium=content&utm_campaign=support).

## Sample Quote entitlement

```json
{
  "quote_entitlement": {
    "entity_id": "basic-USD-monthly",
    "entity_type": "plan_price",
    "feature_id": "xero-integration",
    "feature_name": "Xero Integration",
    "feature_type": "switch",
    "value": "true",
    "name": "Available",
    "is_overridden": true,
    "is_enabled": true,
    "metered": false,
    "created_at": 1753867800,
    "modified_at": 1753867800,
    "object": "quote_entitlement"
  }
}
```

## Quote Entitlement attributes

## Input Parameters

- `entity_id` (required, string, max chars=100)
  The `id` of the entity on the quote whose entitlement this record represents.

- `entity_type` (required, enumerated string)
  The type of the entity on the quote for which this entitlement applies.
  Possible enum values:
    - `plan_price`
      Indicates that the entity is an `item_price` with [`item_type`](/docs/api/item_prices/item-price-object#item_type) set to `plan`.
    - `addon_price`
      Indicates that the entity is an `item_price` with [`item_type`](/docs/api/item_prices/item-price-object#item_type) set to `addon`.
    - `charge_price`
      Indicates that the entity is an `item_price` with [`item_type`](/docs/api/item_prices/item-price-object#item_type) set to `charge`.

- `feature_id` (required, string, max chars=50)
  The unique identifier of the [feature](/docs/api/features) .

- `value` (optional, string, max chars=50)
  The level of entitlement that the quote entity has towards the feature. The possible values depend on the value of `feature.type` :
  
  -   When `feature.type` is `custom`: The value can be any one of `levels[].value`.
      
  -   When `feature.type` is `switch`: This value is `true` when the feature is available; it is `false` when the feature is unavailable.
      
  -   When `feature.type` is `quantity`:
      
  -   When `levels[].is_unlimited` is not `true`: The value can be any one of `levels[].value`.
      
  -   When `levels[].is_unlimited` is `true`: The value can also be any one of `levels[].value` or it can be `unlimited` (case-insensitive), indicating unlimited entitlement.
      
  -   When `feature.type` is `range`:
      
  -   When `levels[].is_unlimited` is not `true`: The value can be any whole number between `levels[0].value` and `levels[1].value` (inclusive).
      
  -   When `levels[].is_unlimited` is `true`: The value can be any whole number equal to or greater than `levels[0].value` or it can be `unlimited` (case-insensitive), indicating unlimited entitlement.
      
  
  **See also:** [How quote entitlements are determined](/docs/api/quote_entitlements).

- `is_enabled` (required, boolean, default=true)
  Indicates whether the entitlement for the feature is enabled for the entity on the quote.

- `start_date` (optional, timestamp(UTC) in seconds)
  Start date (UTC timestamp) of this entitlement on the quote. Used with `end_date` for ramp-scoped entitlements.

- `end_date` (optional, timestamp(UTC) in seconds)
  End date (UTC timestamp) of this entitlement on the quote. Used with `start_date` for ramp-scoped entitlements.

- `created_at` (required, timestamp(UTC) in seconds)
  Timestamp indicating when this quote entitlement record was created.

- `modified_at` (required, timestamp(UTC) in seconds)
  Timestamp indicating when this quote entitlement record was last modified.

- `is_overridden` (optional, boolean)
  Indicates whether the entitlement held by the quote entity for the feature is overridden via an `entitlement_overrides` record on the quote.

- `feature_name` (optional, string, max chars=50)
  The [name of the feature](/docs/api/features/feature-object#name) .

- `feature_unit` (optional, string, max chars=50)
  [The unit of measure](/docs/api/features/feature-object#unit) for the feature when its `type` is either `quantity` or `range` .

- `feature_type` (optional, string, max chars=50)
  Specifies the [type of the feature](/docs/api/features/feature-object#type) associated with the granted quote entitlement.

- `name` (optional, string, max chars=50)
  The display name of the entitlement level that the quote entity holds for the feature. It is derived based on the `type` of feature as follows:
  
  -   When `feature.type` is `range` or `quantity`: the `name` is the space-separated concatenation of `value` and the pluralized form of `feature_unit`. For example, if `value` is `20` and `feature_unit` is `user`, then `name` becomes `20 users`.
  -   When `feature.type` is `custom`: the `name` is the same as `value`.
  -   When `feature.type` is `switch`: `name` is set to `Available` when `value` is `true`; it's set to `Not Available` when `value` is `false`.

- `metered` (optional, boolean)
  Indicates if the feature is a metered feature.

