Skip to navigation

Amendment Tutorial: End-to-End Walkthrough

This guide walks you through the full lifecycle of an EOR contract amendment, from retrieving validation settings to signing.

1

Retrieve amendment settings

curl --location --request GET '{{host}}/rest/eor/contracts/{{contract_id}}/amendments/validation/settings' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{token}}' \
}'

Response:

{
"data": [
{
"data_point": "CONTRACT_TERM",
"rules": [
{
"nullable": false,
"is_editable": true,
"possible_options": [
"DEFINITE",
"INDEFINITE"
]
}
]
},
{
"data_point": "CUSTOM",
"rules": [
{
"nullable": false,
"is_editable": true,
"possible_options": [
"START_DATE",
"END_DATE",
"BENEFITS",
"PROBATION_PERIOD",
"VARIABLE_COMPENSATIONS",
"INCENTIVE_PLAN",
"SALARY",
"FIXED_ALLOWANCES",
"JOB_TITLE",
"SENIORITY_ID",
"SENIORITY_DATE",
"JOB_CODE",
"JOB_CATEGORY",
"JOB_SCOPE",
"EMPLOYMENT_TYPE",
"PERSONAL_DATA",
"OTHER"
]
}
]
},
{
"data_point": "EMPLOYMENT_TYPE",
"rules": [
{
"nullable": false,
"is_editable": true,
"possible_options": [
"FULL_TIME"
]
}
]
}
]
}
2

Create amendment

curl --location POST '{{host}}/rest/eor/contracts/{{contract_id}}/amendments/' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{token}}' \
--data '{
"data": {
}
}'

Response:

{
"data": {
"id": "993f6533-e941-47a3-962d-f871359076ff",
"effective_date": null,
"salary": "96000.0000",
"employment_type": "FULL_TIME",
"seniority_id": 1,
"job_title": "Chief Quality Liaison",
"time_off_type": "STANDARD",
"probation_period_type_for_definite": null,
"document_type": "SOW_EA",
"holidays": 25,
"probation_period": 180,
"scope": "Chief Quality Liaison",
"employee_nationality": "PH",
"employment_state": null,
"start_date": "2025-08-05T20:15:05.872Z",
"end_date": null,
"work_hours_per_week": "40.00",
"sick_leave_days": null,
"type": "OPS",
"created_at": "2025-08-29T10:31:54.514Z",
"updated_at": "2025-08-29T10:31:54.539Z",
"requested_by": 2856213,
"is_hrx_action_needed": false,
"legal_context": null,
"rejection_context": null,
"void_deadline": null,
"void_deadline_type": null,
"notice_period_type": null,
"notice_period_after_probation": "5",
"notice_period_during_probation": "1",
"notice_period_time_unit": "WEEK",
"currency": "USD",
"is_effective_date_updated": false,
"description": null,
"work_schedule_id": null,
"work_schedule_rules_version": null,
"source": "PUBLIC_API",
"job_category": null,
"job_code": null,
"seniority_date": null,
"custom_items": [],
"amendment_statuses": [
{
"name": "DRAFT",
"friendly_name": "DRAFT",
"amendment_flow_status": {
"created_at": "2025-08-29T10:31:54.552Z"
}
}
],
"items": []
}
}
3

Update the amendment (optional)

Use the id from the response to update data points if needed.

curl --location PATCH '{{host}}/rest/eor/contracts/{{contract_id}}/amendments/993f6533-e941-47a3-962d-f871359076ff' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{token}}' \
--data '{
"data": {
"probation_period": 20
}
}'

Response:

{
"data": {
"id": "993f6533-e941-47a3-962d-f871359076ff",
"effective_date": null,
"salary": "96000.0000",
"employment_type": "FULL_TIME",
"seniority_id": 1,
"job_title": "Chief Quality Liaison",
"time_off_type": "STANDARD",
"probation_period_type_for_definite": null,
"document_type": "SOW_EA",
"holidays": 25,
"probation_period": 20,
"scope": "Chief Quality Liaison",
"employee_nationality": "PH",
"employment_state": null,
"start_date": "2025-08-05T20:15:05.872Z",
"end_date": null,
"work_hours_per_week": "40.00",
"sick_leave_days": null,
"type": "AUTOMATED",
"created_at": "2025-08-29T10:31:54.514Z",
"updated_at": "2025-08-29T10:41:10.880Z",
"requested_by": 2856213,
"is_hrx_action_needed": false,
"legal_context": null,
"rejection_context": null,
"void_deadline": null,
"void_deadline_type": null,
"notice_period_type": null,
"notice_period_after_probation": "5",
"notice_period_during_probation": "1",
"notice_period_time_unit": "WEEK",
"currency": "USD",
"is_effective_date_updated": false,
"description": null,
"work_schedule_id": null,
"work_schedule_rules_version": null,
"source": "PUBLIC_API",
"job_category": null,
"job_code": null,
"seniority_date": null,
"custom_items": [],
"amendment_statuses": [
{
"name": "DRAFT",
"friendly_name": "DRAFT",
"amendment_flow_status": {
"created_at": "2025-08-29T10:31:54.552Z"
}
}
],
"items": [
{
"data_point": "PROBATION_PERIOD",
"id": "a643c866-66dc-4809-bc42-0d8b418bdc2b",
"item": "PROBATION_PERIOD_DECREASE",
"type": "AUTOMATED",
"previous_value": "180",
"new_value": "20"
}
]
}
}
4

Fetch effective date limits (optional)

Use the amendment id to retrieve the valid effective date range. If your UI includes a date picker, use the returned limits and flags to configure it.

curl --location GET '{{host}}/rest/eor/contracts/{{contract_id}}/amendments/993f6533-e941-47a3-962d-f871359076ff/effective-date-limitations' \
--header 'Authorization: Bearer {{token}}'

Response:

{
"data": {
"is_hidden": false,
"is_disabled": false,
"min_effective_date": "2025-07-01",
"max_effective_date": "2025-12-31",
"default_effective_date": "2025-08-29T00:00:00.000+00:00",
"message": "The effective date should align with the payroll cycle."
}
}
5

Set the effective date (optional)

Call the update amendment endpoint with the chosen effective date.

curl --location PATCH '{{host}}/rest/eor/contracts/{{contract_id}}/amendments/993f6533-e941-47a3-962d-f871359076ff' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{token}}' \
--data '{
"data": {
"effective_date": "2025-09-30",
"probation_period": 20
}
}'

Response:

{
"data": {
"id": "993f6533-e941-47a3-962d-f871359076ff",
"effective_date": "2025-09-30T00:00:00.000Z",
"salary": "96000.0000",
"employment_type": "FULL_TIME",
"seniority_id": 1,
"job_title": "Chief Quality Liaison",
"time_off_type": "STANDARD",
"probation_period_type_for_definite": null,
"document_type": "SOW_EA",
"holidays": 25,
"probation_period": 20,
"scope": "Chief Quality Liaison",
"employee_nationality": "PH",
"employment_state": null,
"start_date": "2025-08-05T20:15:05.872Z",
"end_date": null,
"work_hours_per_week": "40.00",
"sick_leave_days": null,
"type": "AUTOMATED",
"created_at": "2025-08-29T10:31:54.514Z",
"updated_at": "2025-08-29T10:41:10.880Z",
"requested_by": 2856213,
"is_hrx_action_needed": false,
"legal_context": null,
"rejection_context": null,
"void_deadline": null,
"void_deadline_type": null,
"notice_period_type": null,
"notice_period_after_probation": "5",
"notice_period_during_probation": "1",
"notice_period_time_unit": "WEEK",
"currency": "USD",
"is_effective_date_updated": false,
"description": null,
"work_schedule_id": null,
"work_schedule_rules_version": null,
"source": "PUBLIC_API",
"job_category": null,
"job_code": null,
"seniority_date": null,
"custom_items": [],
"amendment_statuses": [
{
"name": "DRAFT",
"friendly_name": "DRAFT",
"amendment_flow_status": {
"created_at": "2025-08-29T10:31:54.552Z"
}
}
],
"items": [
{
"data_point": "PROBATION_PERIOD",
"id": "a643c866-66dc-4809-bc42-0d8b418bdc2b",
"item": "PROBATION_PERIOD_DECREASE",
"type": "AUTOMATED",
"previous_value": "180",
"new_value": "20"
}
]
}
}
6

Confirm the amendment

curl --location --request POST '{{host}}/rest/eor/contracts/mdyyevp/amendments/993f6533-e941-47a3-962d-f871359076ff/confirm' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {{token}}'

Response:

{
"data": {
"id": "993f6533-e941-47a3-962d-f871359076ff",
"effective_date": "2025-09-30T00:00:00.000Z",
"type": "AUTOMATED",
"amendment_statuses": [
{
"name": "PREPARING_DOCUMENTS.AMENDMENT_REQUESTED.EA",
"friendly_name": "EA",
"amendment_flow_status": {
"created_at": "2025-03-25T11:32:52.963Z"
}
},
{
"name": "PREPARING_DOCUMENTS.AMENDMENT_REQUESTED.EA.PENDING_DOCUMENT_SUBMIT",
"friendly_name": "AWAITING_REVIEW",
"amendment_flow_status": {
"created_at": "2025-03-25T11:32:52.963Z"
}
},
{
"name": "PREPARING_DOCUMENTS.AMENDMENT_REQUESTED.SOW",
"friendly_name": "SOW",
"amendment_flow_status": {
"created_at": "2025-03-25T11:32:52.963Z"
}
},
{
"name": "PREPARING_DOCUMENTS.AMENDMENT_REQUESTED.SOW.PENDING_DOCUMENT_SUBMIT",
"friendly_name": "AWAITING_REVIEW",
"amendment_flow_status": {
"created_at": "2025-03-25T11:32:52.963Z"
}
},
{
"name": "PREPARING_DOCUMENTS.AMENDMENT_REQUESTED.CUSTOM_REVIEW",
"friendly_name": "CUSTOM_REVIEW",
"amendment_flow_status": {
"created_at": "2025-03-25T11:32:52.963Z"
}
},
{
"name": "PREPARING_DOCUMENTS.AMENDMENT_REQUESTED.CUSTOM_REVIEW.CUSTOM_SKIPPED",
"friendly_name": "CUSTOM_SKIPPED",
"amendment_flow_status": {
"created_at": "2025-03-25T11:32:52.963Z"
}
},
{
"name": "PREPARING_DOCUMENTS.AMENDMENT_REQUESTED",
"friendly_name": "AMENDMENT_REQUESTED",
"amendment_flow_status": {
"created_at": "2025-03-25T11:32:52.963Z"
}
},
{
"name": "PREPARING_DOCUMENTS",
"friendly_name": "PREPARING_DOCUMENTS",
"amendment_flow_status": {
"created_at": "2025-03-25T11:32:52.963Z"
}
}
],
"items": [
{
"data_point": "PROBATION_PERIOD",
"id": "a643c866-66dc-4809-bc42-0d8b418bdc2b",
"item": "PROBATION_PERIOD_DECREASE",
"type": "AUTOMATED",
"previous_value": "180",
"new_value": "20"
}
]
}
}
7

Wait for Deel review

Poll the amendment status endpoint or listen for the EOR_AMENDMENT_V2_CLIENT_ACTIVE webhook event.

curl --location GET '{{host}}/rest/eor/contracts/mdyyevp/amendments/993f6533-e941-47a3-962d-f871359076ff' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {{token}}'

Example webhook payload:

{
"data": {
"meta": {
"event_type": "eor.amendment.status.updated",
"event_type_id": "de688244-7869-46db-8ac7-00083965cc9b",
"organization_id": "9c09a153-1418-4127-8c44-e99483e7c321",
"organization_name": "20TT65OV",
"tracking_id": "d09a72b0002191b65de3a453d177f1a7"
},
"resource": {
"amendment_flow_id": "116fdec2-d8b6-4c64-82d9-089cccf92731",
"organization_id": "9c09a153-1418-4127-8c44-e99483e7c321",
"status": "EOR_AMENDMENT_V2_CLIENT_ACTIVE"
}
},
"timestamp": "2025-02-07T12:36:16.360Z"
}

To download the EA document:

curl --location GET '{{host}}/rest/eor/contracts/mdyyevp/amendments/993f6533-e941-47a3-962d-f871359076ff/pdf' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {{token}}'

Response:

{
"data": {
"url": "{{host}}/eor-experience-dev/amendment_documents/fb4a3959-0a93-4dd9-9b46-7f1af60b2bbd.pdf?AWSAccessKeyId=TEST_ACCESS_KEY&Expires=1673158576&Signature=TEST_SIGNATURE"
}
}

To cancel the amendment before it becomes active:

curl --location --request DELETE '{{host}}/rest/eor/contracts/mdyyevp/amendments/993f6533-e941-47a3-962d-f871359076ff' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {{token}}'

Response:

{
"data": {
"success": true
}
}
8

Sign the amendment (employee)

Once Deel completes its review, the employee signs the amendment.

curl --location --request POST '{{host}}/rest/eor/contracts/mdyyevp/amendments/993f6533-e941-47a3-962d-f871359076ff/sign' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {{token}}'

If the amendment requires a Deel countersignature, Deel’s internal team reviews it. Once signed, the amendment becomes active immediately or on the specified effective date.