---
title: How entitlements resolve and enforce
description: Plan defaults, per-subscription overrides, and how a grant is checked.
domain: entitlement
status: shipped
visibility: public
last_verified: 2026-07-11
order: 20
---
A customer's entitlements come from two places: the defaults on their plan, and any overrides on their subscription. yRecurring combines them the moment they are checked, so what a customer can do is always up to date.

## Defaults on the plan, overrides on the subscription

You attach features to a plan as its defaults. Every subscription on that plan starts with those. Then, for a single customer, you can override a feature on their subscription: give them more seats, turn a feature on early, or take one away.

```viz entitlement-resolution
```

The effective entitlement is worked out by laying the subscription's overrides on top of the plan's defaults:

- With no override, the plan default applies.
- An override replaces the default for that one subscription.
- An override can also remove a feature, so the customer does not have it even though the plan does.

This is resolved fresh every time it is checked. It is never frozen, so a change to a plan default or a subscription override takes effect right away.

## How a grant is enforced

When your customer tries to do something gated, yRecurring checks their effective entitlement:

- For a **switch**, is it on?
- For a **limit**, are they within the cap?
- For a **quota**, do they have allowance left this period?

If the check fails, the action is refused with a signal your app can turn into an upgrade prompt, so the customer sees "you have reached your plan's limit, upgrade to continue" rather than a blank error. Reading data is never blocked; only the gated action is.

## In the API

Set a plan's default entitlements through the `/v1/products/{id}/entitlements` endpoints, and override them per subscription through `/v1/subscriptions/{id}/entitlements`. Reading a subscription's effective entitlements is a plain read. See the [API reference](/reference). The features themselves are defined in the catalog covered on the [features page](/guide/entitlements/features).

## Edge cases

- **Overrides are per subscription.** Overriding one customer's entitlement does not touch anyone else on the same plan.
- **Resolution is never stored.** It is worked out at check time, so changes apply immediately.
- **Reads are never gated.** Only the action a feature guards is checked; looking at data always works.
