Amendments & offboarding

This guide covers employer-initiated changes to active EOR employment, including contract amendments, expense adjustments, draft contract management, termination, and employer-side resignation handling.

All endpoints require an admin-scoped API token. See Getting started for authentication and environment setup. For creating contracts, see Hiring & contracts. For worker-initiated amendment signing and resignation submission, see Worker self-service.

All amendment and termination operations are legally binding. Test every flow in the Deel sandbox environment before connecting to production data.

Contract amendments

Amendments change the terms of an active EOR contract, covering salary, job title, seniority, working hours, employment type, or other fields. After creation, an amendment enters a review and signing flow involving both the employer and the employee.

1

Check amendable fields

Before rendering an amendment form, retrieve the validation settings for the contract to understand which fields can be changed and what constraints apply.

MethodEndpointPurpose
GET/eor/contracts/{contract_id}/amendments/validation/settingsAmendable fields, allowed values, constraints, and effective date rules

Use this response to determine which fields to expose in the UI and what validation to apply client-side before submission.

2

Create an amendment

MethodEndpointPurpose
POST/eor/contracts/{contract_id}/amendmentsCreate a contract amendment

Include only the fields you want to change; all amendment fields are optional. Always include effective_date. Amendable fields include: salary, job_title, seniority_id, employment_type, work_hours_per_week, end_date, scope, fixed_adjustments, and variable_compensation.

After creation, the amendment enters review and signing. Both you and the worker must sign before it activates.

3

Track amendment status

MethodEndpointPurpose
GET/eor/contracts/{contract_id}/amendmentsList amendments and their current status

Subscribe to eor.amendment.status.updated to receive notifications as the amendment progresses through review and signing states, rather than polling this endpoint.

To cancel a pending amendment, use DELETE /eor/contracts/{contract_id}/amendments/{amendment_id}. Cancellation is only possible before all parties have signed; once fully signed, the amendment cannot be reversed through this endpoint.

Expense adjustments

Use adjustments to submit expense reimbursements on behalf of employees. Each adjustment is applied to the employee’s next payroll cycle.

MethodEndpointPurpose
POST/adjustmentsCreate an expense adjustment
GET/adjustments/{id}Check adjustment status
DELETE/adjustments/{id}Cancel a pending adjustment before processing

Adjustments cover employer-initiated expense submissions. Worker-initiated expense requests are handled separately through the worker-side API surface.

Draft contract management

Before a contract is signed, it remains in draft state and can be updated or delayed. These operations are only available before the signing phase begins.

MethodEndpointPurpose
PATCH/eor/contract/{contract_id}Update fields on a draft contract
PATCH/eor/contract/{oid}/delay-onboardingDelay the employment start date

Use the delay endpoint to push back a start date after the contract is created but before it enters the signing phase.

Offboarding

Terminations require country-specific validation before submission. Retrieve required fields and check for restricted dates before presenting the offboarding form; an incomplete or date-restricted submission returns a 422 that blocks the flow.

1

Get required information

MethodEndpointPurpose
GET/eor/contracts/{contract_id}/offboarding/required-informationCountry-specific termination fields: severance type, notice period, legal data

Use this response to render the correct form fields for the employment country before submitting the termination request.

2

Check restricted dates

MethodEndpointPurpose
GET/eor/contracts/{contract_id}/offboarding/restricted-datesDates on which termination cannot be processed

Restricted dates include payroll cutoff dates and statutory restricted periods. Validate the proposed end date against these before allowing submission.

3

Submit termination

MethodEndpointPurpose
POST/eor/{contract_id}/terminations/regularSubmit a termination request

Required fields: reason, reason_detail, desired_end_date, is_employee_notified, and used_time_off.

4

Track offboarding progress

MethodEndpointPurpose
GET/eor/contracts/{contract_id}/offboardingCurrent offboarding state, document status, and confirmed end date

Subscribe to contract.terminated and people.terminated to receive notifications when the termination is confirmed and the employee profile is updated.

Employee-initiated resignation

When the worker submits a resignation via Worker self-service, review the employee’s accrued paid time off before offboarding can proceed.

MethodEndpointPurpose
POST/eor/contracts/{contract_id}/offboarding/resignations/review-ptoReview accrued PTO for a resigning employee

This step is required before the worker can sign their resignation letter and before offboarding progresses.

Key webhook events

EventTrigger
eor.amendment.status.updatedAmendment progressed through review or signing
contract.terminatedTermination confirmed
people.terminatedEmployee profile marked as terminated

See the Webhooks guide for event payload structure and signature verification.

Next steps