> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plane.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Leave Policy

> Leave policies define accrual, carryover, payout, and applicability rules for a leave type

Use leave policies when you need to understand the rules that generate leave entitlements and
accrual transactions for a worker.

### Attributes

<ResponseField name="id" type="string">
  Unique identifier for the leave policy, for example `lvp_Xk9mPq2vR8tn3e`.
</ResponseField>

<ResponseField name="name" type="string">
  Human-readable policy name.
</ResponseField>

<ResponseField name="description" type="string | null">
  Plain-language explanation of the policy's legal or company basis.
</ResponseField>

<ResponseField name="type" type="string">
  Leave type the policy applies to, for example `vacation` or `sick_time_off`.
</ResponseField>

<ResponseField name="effect" type="string">
  Whether the policy sets the base entitlement or adds on top of it. One of `set` or `add`.
</ResponseField>

<ResponseField name="unit" type="string">
  Unit used for all policy quantities. One of `days` or `hours`.
</ResponseField>

<ResponseField name="status" type="string">
  Lifecycle state for the policy. One of `draft`, `active`, or `archived`.
</ResponseField>

<ResponseField name="workspace" type="string | null">
  Workspace that owns the policy. Returns `null` for platform-managed policies.
</ResponseField>

<ResponseField name="eligibility" type="string | null">
  CEL expression that determines which workers match this policy. The expression is evaluated
  against the same `worker` shape returned by the worker resource and worker GET API, so you can
  reference fields such as `worker.id`, `worker.type`, `worker.workspace`,
  `worker.employment.status`, `worker.employment.starts`,
  `worker.employment.location.address.country`, and `worker.reporting.department.name`.
  Returns `null` when the policy must be assigned manually.
</ResponseField>

<ResponseField name="period" type="object">
  Period definition used to reset the balance window.

  <Expandable title="child attributes">
    <ResponseField name="month" type="number">
      Month the leave period starts when the policy uses a fixed annual reset.
    </ResponseField>

    <ResponseField name="day" type="number">
      Day of month the leave period starts when the policy uses a fixed annual reset.
    </ResponseField>

    <ResponseField name="from" type="string">
      Worker date source used for anniversary-based periods. Currently `starts`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="accrual" type="object | null">
  Accrual rule for the policy.

  <Expandable title="child attributes">
    <ResponseField name="amount" type="number">
      Amount granted per accrual period when the policy does not use tiers.
    </ResponseField>

    <ResponseField name="per" type="string">
      Rate denominator. One of `year`, `month`, `pay_period`, or `hour`.
    </ResponseField>

    <ResponseField name="credit" type="string">
      Frequency used to create accrual transactions.
    </ResponseField>

    <ResponseField name="every" type="number">
      Hour ratio when `per` is `hour`, for example `30` for one hour per 30 hours worked.
    </ResponseField>

    <ResponseField name="after" type="object | null">
      Waiting period before accrual begins.
    </ResponseField>

    <ResponseField name="tiers" type="array | null">
      Tenure-based accrual tiers.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="carryover" type="object | null">
  Carryover rule. Returns `null` for use-it-or-lose-it policies.
</ResponseField>

<ResponseField name="balance" type="object | null">
  Minimum and maximum balance bounds for the policy.
</ResponseField>

<ResponseField name="usage" type="object | null">
  Per-period usage limits. Returns `null` when there is no additional usage cap.
</ResponseField>

<ResponseField name="payout" type="object">
  Termination payout rule for unused balance.
</ResponseField>

<ResponseField name="created" type="string">
  ISO 8601 timestamp of when the policy was created.
</ResponseField>

<ResponseField name="updated" type="string">
  ISO 8601 timestamp of the most recent update to the policy.
</ResponseField>

<ResponseExample>
  ```json Leave Policy theme={null}
  {
    "id": "lvp_Xk9mPq2vR8tn3e",
    "name": "France — Paid Vacation",
    "description": "French labor law mandates 25 business days of paid vacation per year.",
    "type": "vacation",
    "effect": "set",
    "unit": "days",
    "status": "active",
    "workspace": null,
    "eligibility": "worker.employment.location.address.country == \"FR\"",
    "period": {
      "month": 6,
      "day": 1
    },
    "accrual": {
      "amount": 25,
      "per": "year",
      "credit": "month",
      "after": null
    },
    "carryover": {
      "max": 5,
      "expires": null
    },
    "balance": {
      "min": 0,
      "max": null
    },
    "usage": null,
    "payout": {
      "termination": "required"
    },
    "created": "2026-03-01T00:00:00Z",
    "updated": "2026-03-01T00:00:00Z"
  }
  ```
</ResponseExample>
