> 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.

# Worker self-service

> Guide to the worker-side self-service flows for EOR employees, covering employment details, payslips, time off, and amendment signing.

This guide covers the worker-side self-service API surface for active EOR employees: reading employment details, accessing documents and payslips, managing time off, signing amendments, and initiating resignation.

> **Note**
>
> All endpoints in this guide use a worker-scoped token. See [Getting started](/api/embedded/getting-started) for how to generate worker tokens or magic links.

## Profile and employment details

Use these endpoints to let workers read their employment record and update personal profile information. Amendment requests are forwarded to the employer for review.

<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/{hris_profile_id}`](/api/reference/endpoints/people/get-person-by-id)
      </td>

      <td>
        View employment details including contract, salary, and benefits
      </td>
    </tr>

    <tr>
      <td>
        `PATCH`
      </td>

      <td>
        [`/eor/workers/contracts/{contract_id}/additional-information`](/api/reference/endpoints/eor-worker-information/update-eor-worker-additional-information)
      </td>

      <td>
        Update worker profile details
      </td>
    </tr>

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

      <td>
        [`/eor/contracts/{contract_id}/amendments`](/api/reference/endpoints/eor-amendments/create-contract-amendment)
      </td>

      <td>
        Request changes to employment terms; creates an amendment requiring employer review
      </td>
    </tr>
  </tbody>
</table>

Subscribe to `worker.v2.updated` to receive notifications when profile data changes.

## Documents

Use the following endpoints to give workers access to payslips, tax documents, HR letters, and their employment contract.

<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>
        [`/eor/workers/{worker_id}/payslips`](/api/reference/endpoints/eor-payslips/get-worker-payslips)
      </td>

      <td>
        List payslips
      </td>
    </tr>

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

      <td>
        [`/eor/workers/{worker_id}/payslips/{payslip_id}/download`](/api/reference/endpoints/eor-worker-payslips/get-worker-payslips-download)
      </td>

      <td>
        Download payslip PDF
      </td>
    </tr>

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

      <td>
        [`/eor/workers/tax-documents`](/api/reference/endpoints/eor-worker-information/get-eor-worker-tax-documents)
      </td>

      <td>
        List tax documents
      </td>
    </tr>

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

      <td>
        [`/eor/workers/contracts/{contract_id}/hr-documents`](/api/embedded/eor-worker-endpoints/eor-worker-documents/get-eor-worker-hr-documents)
      </td>

      <td>
        List HR verification letters and documents
      </td>
    </tr>

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

      <td>
        [`/eor/workers/contracts/{contract_id}/employee-agreement/download`](/api/reference/endpoints/eor-worker-agreements/download-worker-employee-agreement)
      </td>

      <td>
        Download the signed employment agreement
      </td>
    </tr>

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

      <td>
        [`/eor/workers/contracts/{contract_id}/offer-letter`](/api/reference/endpoints/eor-worker-agreements/download-worker-offer-letter)
      </td>

      <td>
        Download contract document
      </td>
    </tr>
  </tbody>
</table>

## Time off

Workers submit and manage their own leave requests using the worker token. The employer reviews and approves or rejects requests via [`POST /time_offs/review`](/api/reference/endpoints/time-off/review-time-off-request). See [Employment management](/api/embedded/eor-management).

### Check available balance

Retrieve the worker's current leave entitlements and remaining balance before presenting the request form.

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

### Submit a time off request

Submit the request with the required fields. `type_id` is obtained from the worker's time off policy.

[`POST /time_offs`](/api/reference/endpoints/time-off/create-time-off-request)

Required fields: `hris_profile_id`, `type_id`, `start_date`, `end_date`. Optional: `note`.

### Track request status

Poll or use webhooks to monitor the outcome after submission.

[`GET /time_offs?hris_profile_id={id}`](/api/reference/endpoints/time-off/list-time-off-requests-for-organization-v-2026-01-01)

The request waits for employer review. Subscribe to `time-off.reviewed` to receive the outcome without polling.

To cancel a pending request, use [`DELETE /time_offs/{time_off_id}`](/api/reference/endpoints/time-off/delete-time-off-request). Cancellation is only possible while the request is in `pending` status; approved or rejected requests cannot be cancelled via API.

## Amendment signing

When an amendment is created, the worker must sign it before changes take effect. Call the signing endpoint using the worker token once the amendment reaches the worker signing stage.

[`POST /workers/amendments/{amendment_id}/sign`](/api/reference/endpoints/contracts/sign-amendment-v-2026-01-01)

Subscribe to `eor.amendment.status.updated` to receive a notification when an amendment reaches the worker signing stage and action is required.

## Offboarding (resignation)

Workers can initiate a resignation from the worker side. The employer must review accrued PTO before the offboarding flow can proceed. See [Amendments and offboarding](/api/embedded/eor-amendments) for the employer-side review step.

### Submit resignation

The worker submits their resignation with a desired end date and reason. The employer is notified and must review accrued paid time off before offboarding can continue.

[`POST /eor/workers/contracts/{contract_id}/offboarding`](/api/reference/endpoints/eor-worker-offboarding/submit-eor-worker-resignation)

Required fields: `desired_end_date`, `reason`.

### Sign the resignation letter

After the employer reviews PTO, the worker signs the resignation letter to complete the offboarding initiation.

[`POST /eor/workers/contracts/{contract_id}/offboarding/resignation-letter/sign`](/api/reference/endpoints/eor-worker-offboarding/sign-employee-resignation-letter)

## Webhook events

| Event                          | Trigger                                          |
| ------------------------------ | ------------------------------------------------ |
| `eor.amendment.status.updated` | Amendment ready for worker signature             |
| `time-off.reviewed`            | Employer approved or rejected a time off request |

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

## Next steps

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

Worker-side contract signing, KYC, bank setup, and onboarding progress.

#### [Employment management](/api/embedded/eor-management)

Employer-side time off review, employee data, and onboarding tracking.

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

Employer-side amendment management and termination workflows.

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

Authentication, environments, token generation, and webhook setup.