Amendment Lifecycle
Create a draft amendment
Create a new draft amendment by specifying the contract_id. You can include all, some, or none data points you plan to amend. This allows you to start with a basic amendment and add more details later.
OR
Update existing draft amendment
Update an existing draft amendment by including the amendment_id returned when the amendment was created. You can add additional data points, modify existing ones, or set the effective date. This endpoint allows you to build your amendment incrementally.
Amendment validation approaches
The amendment submission endpoint always validates the request, so pre-validation is optional. You’d add it when you want to give the user inline feedback before they submit, or when a field is gated by AI or country-specific rules that can’t be reproduced in the browser.
Where you validate a field depends on its external_validation flag in the amendment settings endpoint response. When external_validation: false, the field is a simple enum or numeric bound that the settings endpoint already describes, so you can validate it client-side for immediate feedback. When external_validation: true, the field goes through AI job-scope checks, job categorization, or country-specific rules that only the validate amendment endpoint can evaluate, so it requires a server-side call.
Hybrid approach (recommended)
For production integrations, combine the two: validate external_validation: false fields client-side using the rules from the amendment settings endpoint, and validate external_validation: true fields server-side by calling the validate amendment endpoint. This gives you immediate feedback for cheap validations while still running the checks that only the server can do; the server response also returns the AI job scope check and job categorization results when applicable.
Validate amendment data points
Use the validate amendment endpoint to validate amendment data points before submission.
Response format
The response includes validation results with field-specific error mapping:
Error response with field mapping
When validation fails, errors include a field parameter for easy frontend integration:
Seniority ID
To amend seniority_id:
Effective date limitations
AI job scope check and job categorization
AI review check
When you create or update a job title or scope amendment, Deel automatically runs an AI review check to confirm the new title and scope are consistent with the existing job description and responsibilities. To avoid surprises at submission time, call the validate amendment endpoint first so you can inspect the AI check status before proceeding.
A successful validation returns an ai_scope_check_public_id. Include this ID in the amendment request body so the AI check result carries over and the amendment skips manual review. You can still submit without pre-validating, but if the AI check then fails, the amendment is flagged for manual review by Deel’s internal team before it can proceed.
Job categorization with AI recommendations
Job categorization is only available for specific countries. The following table lists where it is supported and what the AI generates per country:
- Every time a job title is amended, an AI job categorization is triggered to classify the new job title into a predefined job category and code.
- You can trigger the validate amendment endpoint for the AI job categorization to be performed before creating or updating the job title amendment.
- You can submit the amendment regardless of the AI job categorization outcome, but if the AI job categorization fails, the amendment will be flagged for manual review by Deel’s internal team.
- You will get
job_categorization_log_idwhen using validate amendment endpoint if the AI job categorization succeeds, which can be used to track the review status. - You will also get
job_codeandjob_categoryalong withjob_categorization_log_idin the response if the AI job categorization succeeds. - You need to send this
job_categorization_log_idandjob_codeandjob_categoryin create or update amendment request so it won’t require any manual review.
When you trigger the validate amendment endpoint for job title amendments:
- In countries where job categorization is supported:
- Both AI check and job categorization run.
- You must send
ai_scope_check_public_idandjob_categorization_log_idtogether withjob_codeandjob_categoryin the update amendment request to avoid manual review.
- In countries where job categorization is not supported:
- Only AI check runs.
Update amendment with both ai_scope_check_public_id and job_categorization_log_id
Use this request to update an amendment with both the AI check and job categorization identifiers:
Validation errors and disabled amendments
Amendment requests can fail if validation rules are not met. In these cases, the API returns an error response that includes details about validation errors and disabled data points.
Standard error format
Error responses follow a consistent format that is easy to interpret and integrate. Every error includes a code and a message. The optional field attribute identifies which input caused the error when applicable, and an optional details object carries additional context.
Mandatory fields:
Optional fields
Common amendment error codes
Error response examples
The following examples show the different types of validation and amendment errors you may encounter.
Request validation errors
Returned when the request payload fails general validation checks.
General amendment errors
Returned when the amendment request cannot proceed due to one or more issues.
Amendment field validation errors and disabled amendments
Returned when specific fields are invalid or disabled for the requested amendment.
Amendment processing failed errors
Returned when an amendment cannot be updated or confirmed.
Confirm an amendment
To confirm a draft amendment, use the contract_id and amendment_id. Only draft amendment can be confirmed.
After confirmation, the flow depends on the amendment type. If the type is instant, the amendment becomes active immediately. If it requires signatures, Deel or the employee must approve it first.
Cancel an amendment
To cancel an amendment, use the contract_id and amendment_id. You can cancel an amendment any time before the employee signs it. After cancellation, you can delete it if needed.
Download an amendment PDF
Retrieve the download URL for the Statement of Work (Employee Agreement, EA) of a confirmed amendment. The URL is available only after the amendment is confirmed and the contract is in progress.
The download URL expires after 15 minutes.
Accept an amendment
Use this endpoint to accept an amendment submitted by a Deel admin.
After acceptance, the amendment either becomes active immediately or moves to the signature step, depending on its type.
Sign an approved amendment
An employee can sign an amendment approved by both the client and admin. After signing, the amendment becomes active.
Retrieve the list of amendments
Retrieve all amendments for a specific contract.
Retrieve a specific amendment
Retrieve details of a specific amendment