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

# Manage contracts

> Guide to managing active IC and COR contracts in Deel's Embedded model, covering amendments, invoices, timesheets, off-cycle payments, and termination.

This guide covers the ongoing management operations for active IC and COR contracts. The sections below are independent; each covers a discrete management function rather than a sequential workflow. For initial contract creation and onboarding, see [Hiring & contracts](/api/embedded/ic-create-onboard).

All employer-side endpoints require an admin-scoped token. Worker-side endpoints (timesheets, time off) require a worker-scoped token. See [Getting started](/api/embedded/getting-started) for authentication setup.

## Contract data

Read contract state and list all contracts within the organization.

<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>
        [`/contracts`](/api/embedded/ic-endpoints/contracts/get-contracts)
      </td>

      <td>
        List contracts, filterable by status, worker, and group
      </td>
    </tr>

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

      <td>
        [`/contracts/{contract_id}`](/api/embedded/ic-endpoints/contracts/get-contract)
      </td>

      <td>
        Full contract detail including terms and current status
      </td>
    </tr>
  </tbody>
</table>

Subscribe to `contract.status.updated` to receive notifications of status changes without polling.

## Amendments

Amendments change active contract terms, including rate, job title, scope, or other fields. After creation, the amendment requires worker signature before taking effect.

### Create the amendment

Submit the amendment with the fields to change and the date the changes take effect.

[`POST /contracts/{contract_id}/amendments`](/api/embedded/ic-endpoints/contractor-amendments/create-contract-amendment)

Required fields: the changed contract fields and `effective_date`. Only include the fields you want to modify.

### Track amendment progress

Retrieve all amendments for a contract, including status, changed fields, and signing state.

[`GET /contracts/{contract_id}/amendments`](/api/embedded/ic-endpoints/contractor-amendments/get-contract-amendments)

### Receive completion confirmation

Subscribe to `contract.amended` to receive a notification when all parties have signed and the amendment is active.

## Invoices and payments

Retrieve invoice and payment records for contractor billing cycles.

<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>
        [`/invoices`](/api/reference/endpoints/accounting/retrieve-invoices)
      </td>

      <td>
        List contractor invoices across all billing cycles
      </td>
    </tr>

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

      <td>
        [`/payments`](/api/reference/endpoints/accounting/retrieve-payment-receipts-v-2027-01-01-v-2026-07-06)
      </td>

      <td>
        List payment receipts
      </td>
    </tr>

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

      <td>
        [`/payouts/balances`](/api/reference/endpoints/payouts/list-contractor-balances)
      </td>

      <td>
        List contractor earned balances
      </td>
    </tr>
  </tbody>
</table>

Subscribe to `invoice.paid` and `payment.completed` rather than polling these endpoints for status changes.

## Off-cycle payments

Off-cycle payments cover one-time amounts outside the regular billing cycle, including bonuses, commissions, and reimbursements.

<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>
        [`/contracts/{contract_id}/off-cycle-payments`](/api/embedded/ic-endpoints/off-cycle/create-contract-off-cycle-payment)
      </td>

      <td>
        Create a payment with 

        `amount`

        , 

        `currency`

        , 

        `reason`

        , and 

        `payment_date`
      </td>
    </tr>

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

      <td>
        [`/contracts/{contract_id}/off-cycle-payments`](/api/embedded/ic-endpoints/off-cycle/get-contract-off-cycle-payments)
      </td>

      <td>
        Track off-cycle payment status
      </td>
    </tr>
  </tbody>
</table>

## Invoice adjustments

Invoice adjustments modify line items on an active invoice, including expenses, equipment, and additional items. Adjustments must be submitted before the invoice locks for the billing cycle.

<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>
        [`/invoice-adjustments`](/api/embedded/ic-endpoints/invoice-adjustments/create-invoice-adjustment)
      </td>

      <td>
        Create an adjustment
      </td>
    </tr>

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

      <td>
        [`/invoice-adjustments/{id}`](/api/embedded/ic-endpoints/invoice-adjustments/update-invoice-adjustment)
      </td>

      <td>
        Update a pending adjustment before the invoice locks
      </td>
    </tr>
  </tbody>
</table>

## Timesheets

Timesheet workflows apply to Pay-as-you-go contracts only. Workers submit hours each billing cycle; review and approve or reject each entry using your admin token.

### Worker submission

Workers submit timesheet entries using the worker token.

[`POST /timesheets`](/api/embedded/ic-endpoints/timesheets/create-timesheet)

Required fields: `contract_id`, `quantity` (hours), `date_submitted` (YYYY-MM-DD), `description`.

### Employer review

Retrieve and action timesheet entries using your admin token.

<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>
        [`/timesheets`](/api/embedded/ic-endpoints/timesheets/get-timesheets)
      </td>

      <td>
        List entries, filterable by contract and status
      </td>
    </tr>

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

      <td>
        [`/timesheets/{id}`](/api/embedded/ic-endpoints/timesheets/update-timesheet)
      </td>

      <td>
        Update an entry
      </td>
    </tr>

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

      <td>
        [`/timesheets/{id}/reviews`](/api/embedded/ic-endpoints/timesheets/create-timesheet-review)
      </td>

      <td>
        Approve or reject (

        `status`

        : 

        `approved`

         or 

        `rejected`

        )
      </td>
    </tr>
  </tbody>
</table>

Subscribe to `timesheet.reviewed` to notify the worker of the outcome.

## Worker time off

Workers submit and cancel time off requests using the worker token.

<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`](/api/reference/endpoints/time-off/create-time-off-request)
      </td>

      <td>
        Submit a request (

        `hris_profile_id`

        , 

        `type_id`

        , 

        `start_date`

        , 

        `end_date`

        )
      </td>
    </tr>

    <tr>
      <td>
        `DELETE`
      </td>

      <td>
        [`/time_offs/{time_off_id}`](/api/reference/endpoints/time-off/delete-time-off-request)
      </td>

      <td>
        Cancel a pending request
      </td>
    </tr>
  </tbody>
</table>

Subscribe to `time-off.reviewed` to notify the worker of the outcome.

## Termination

Terminating a contract ends the engagement on a specified date or immediately.

### Terminate the contract

Submit the termination request with the required fields.

[`POST /contracts/{contract_id}/terminations`](/api/embedded/ic-endpoints/terminations/create-contract-termination)

Required fields: `termination_type`, `completion_date` (YYYY-MM-DD), `terminate_now` (boolean; set to `true` to terminate immediately). Optional: `message`.

### Receive confirmation

Subscribe to `contract.terminated` and `people.terminated` to confirm the termination has taken effect.

To cancel a termination before it takes effect, use [`DELETE /contracts/{contract_id}/terminations`](/api/embedded/ic-endpoints/terminations/delete-contract-termination). This endpoint is only available before `completion_date` has passed.

> **Warning**
>
> Test all termination flows in the sandbox environment before connecting to production data. Termination is irreversible once the `completion_date` passes.

## Webhook events

| Event                 | Trigger                                 |
| --------------------- | --------------------------------------- |
| `contract.amended`    | Amendment signed by all parties         |
| `invoice.paid`        | Invoice settled                         |
| `payment.completed`   | Payment disbursed to contractor         |
| `timesheet.reviewed`  | Timesheet entry approved or rejected    |
| `time-off.reviewed`   | Time off request approved or rejected   |
| `contract.terminated` | Contract termination confirmed          |
| `people.terminated`   | Contractor profile marked as terminated |

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

## Next steps

#### [Hiring & contracts](/api/embedded/ic-create-onboard)

End-to-end workflow for creating IC contracts and completing onboarding.

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

Compare the EOR amendment and termination pattern.

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

Authentication, environments, token generation, and webhook setup.

#### [Webhooks](/api/webhooks/introduction)

Configure webhooks to receive real-time updates on contract events.