> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.deel.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.deel.com/_mcp/server.

# Employment management

> Guide to tracking onboarding, managing employees, and handling time off in Deel's Embedded model.

This guide covers employer-side management of active EOR employment: reading employee profiles, tracking onboarding progress, and managing time off.

All endpoints require an admin-scoped API token. See [Getting started](/api/embedded/getting-started) for authentication and environment setup. For contract creation, see [Hiring & contracts](/api/embedded/eor-hiring). For amendments and terminations, see [Amendments & offboarding](/api/embedded/eor-amendments).

## Employee data

The people endpoints are the primary source of employee profile data across the Embedded surface. The `hris_profile_id` returned here is the key identifier used across time off, onboarding tracking, and adjustment operations.

<table>
  <colgroup>
    <col />

    <col />

    <col />
  </colgroup>

  <thead>
    <tr>
      <th>
        Method
      </th>

      <th>
        Endpoint
      </th>

      <th>
        Purpose
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `GET`
      </td>

      <td>
        [`/people`](/api/reference/endpoints/people/get-people)
      </td>

      <td>
        List all employees; filter by group or status
      </td>
    </tr>

    <tr>
      <td>
        `GET`
      </td>

      <td>
        [`/people/{hris_profile_id}`](/api/reference/endpoints/people/get-person-by-id)
      </td>

      <td>
        Retrieve a single employee profile
      </td>
    </tr>
  </tbody>
</table>

Use the `group` query parameter on `GET /people` to scope results to a specific client company. Subscribe to `employee.created.eor` to capture new profiles as contracts activate, and `worker.v2.updated` to receive notifications when profile data changes.

## Onboarding tracking

After both you and the worker have signed the contract, the worker begins onboarding. Track their progress to surface checklist status in your platform or trigger downstream logic when onboarding completes.

<table>
  <colgroup>
    <col />

    <col />

    <col />
  </colgroup>

  <thead>
    <tr>
      <th>
        Method
      </th>

      <th>
        Endpoint
      </th>

      <th>
        Purpose
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `GET`
      </td>

      <td>
        [`/onboarding/tracker/hris_profile/{hris_profile_id}`](/api/reference/endpoints/onboarding/get-onboarding-details-by-employee-hris-profile-id-v-2026-01-01)
      </td>

      <td>
        Retrieve onboarding progress for an employee
      </td>
    </tr>
  </tbody>
</table>

The response includes `summary.status` for the overall onboarding state, `progress` as a completion percentage, and `checklist` with the status of individual steps. Mandatory training items (actionable journeys) are also tracked here.

> **Tip**
>
> Subscribe to `onboarding.status.updated` rather than polling this endpoint. The webhook fires on each step completion and on overall status transitions.

## Time off management

Deel manages statutory leave entitlements per employment country. Use these endpoints to retrieve policies, query balances, validate requests, and review time off submissions from workers.

### Retrieve policies and balances

<table>
  <colgroup>
    <col />

    <col />

    <col />
  </colgroup>

  <thead>
    <tr>
      <th>
        Method
      </th>

      <th>
        Endpoint
      </th>

      <th>
        Purpose
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `GET`
      </td>

      <td>
        [`/time_offs/profile/{hris_profile_id}/policies`](/api/reference/endpoints/time-off/get-time-off-policies)
      </td>

      <td>
        Time off policies applicable to an employee
      </td>
    </tr>

    <tr>
      <td>
        `GET`
      </td>

      <td>
        [`/time_offs/profile/{hris_profile_id}/entitlements`](/api/reference/endpoints/time-off/get-time-off-entitlements)
      </td>

      <td>
        Current leave balances
      </td>
    </tr>

    <tr>
      <td>
        `GET`
      </td>

      <td>
        [`/time_offs/policy-validation-templates`](/api/reference/endpoints/time-off/get-time-off-policy-validation-templates)
      </td>

      <td>
        Validation templates for a specific policy
      </td>
    </tr>
  </tbody>
</table>

Retrieve policies and balances when rendering the time off management view. Validation templates define the rules a time off request must satisfy for a given policy; use them to validate inputs before submission.

### Review time off requests

<table>
  <colgroup>
    <col />

    <col />

    <col />
  </colgroup>

  <thead>
    <tr>
      <th>
        Method
      </th>

      <th>
        Endpoint
      </th>

      <th>
        Purpose
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `POST`
      </td>

      <td>
        [`/time_offs/review`](/api/reference/endpoints/time-off/review-time-off-request)
      </td>

      <td>
        Approve or reject a pending time off request
      </td>
    </tr>
  </tbody>
</table>

Workers submit time off requests via the worker-scoped API; see [Worker self-service](/api/embedded/eor-worker-self-service). Review and respond to those requests via this endpoint using your admin token.

> **Tip**
>
> For public holidays and country-specific work schedules, use [`GET /time_offs/dailies`](/api/reference/endpoints/time-off/get-time-off-dailies) to retrieve the applicable schedule before displaying a time off calendar.

## Key webhook events

| Event                       | Trigger                                     |
| --------------------------- | ------------------------------------------- |
| `employee.created.eor`      | New EOR employee profile created            |
| `worker.v2.updated`         | Employee profile data changed               |
| `onboarding.status.updated` | Onboarding step completed or status changed |
| `time-off.created`          | Employee submitted a time off request       |
| `time-off.reviewed`         | Time off approved or rejected               |
| `time-off.updated`          | Time off request modified                   |
| `time-off.deleted`          | Time off request cancelled                  |

See the [Webhooks guide](/api/webhooks/introduction) for event payload structure and signature verification.

## Next steps

#### [Hiring & contracts](/api/embedded/eor-hiring)

Group setup, cost estimation, and EOR contract creation.

#### [Amendments & offboarding](/api/embedded/eor-amendments)

Amend active contracts and process terminations.

#### [Worker self-service](/api/embedded/eor-worker-self-service)

Worker-side time off requests, payslips, and amendment signing.

#### [Getting started](/api/embedded/getting-started)

Authentication, environments, and webhook setup.