Amendment Settings and Effective Date

Retrieve contract information for amendment

To retrieve available amendment settings, you first need the contract ID. Use the List of contracts endpoint to retrieve your contracts. You can filter and sort the list to find the correct contract_id.

Use the returned contract_id in the next step.

$curl --location -g --request GET '{{host}}/rest/contracts?limit=2&sort_by=worker_name&order_direction=desc' \
>--header 'Authorization: Bearer {{token}}'

Retrieve amendment settings

Once you have a contract ID, use it to retrieve valid amendment settings using Get Amendment validation settings endpoint. These are based on the contract and country-specific rules.

Use the contract_id path parameter to fetch available data points and rules. This returns all configurable data points and validation logic.

$curl --location -g --request GET '{{host}}/rest/eor/contracts/{{contract_id}}/amendments/validation/settings' \
>--header 'Authorization: Bearer {{token}}'

The validation settings endpoint accepts optional employment_state query parameter to provide more accurate validation rules based on intended state/region for the employee. Use this when you need to amend the employment_state and need validation rules specific to the new state. For example, hourly rate minimum wages can vary by state. If not provided, the current contract’s employment state is used for validation rules.

Example with query parameters

$curl --location -g --request GET '{{host}}/rest/eor/contracts/{{contract_id}}/amendments/validation/settings?employment_state=CA' \
>--header 'Authorization: Bearer {{token}}'

Example response

1[
2 {
3 "data_point": "notice_period_type",
4 "rules": [
5 {
6 "nullable": false,
7 "is_editable": true,
8 "possible_options": [
9 "STANDARD",
10 "CUSTOM"
11 ],
12 "requires": {
13 "employment_type": "FULL_TIME"
14 }
15 },
16 {
17 "nullable": false,
18 "is_editable": true,
19 "possible_options": [
20 "STANDARD",
21 "CUSTOM"
22 ],
23 "requires": {
24 "employment_type": "PART_TIME"
25 }
26 }
27 ]
28 }
29]

Understand how amendment settings work

The response for amendment-settings includes a list of configurable contract fields. Each field is described by a data_point object that defines how it can be changed.

Key elements:

  • Each data_point represents an attribute in the contract that may be amended.
  • The requires object defines conditions that must be met for the change to be allowed. All fields in requires must match either the current contract or the amendment request.
  • Numeric fields include min and max constraints.
  • possible_options lists the allowed values for the data point.
  • is_editable indicates if the field can be updated. If a field is not editable, the reason is not returned in the API. It may be due to country rules, amendment restrictions, or other pending amendments, for example, currency.
  • additional_details may include validation notes or business constraints.
  • Date fields can include min_date and max_date, formatted as YYYY-MM-DD, for example, 2025-06-17.

Examples of amendment rules

These examples show how the API applies rules to control when you can update specific fields.

Require a field in the contract or request

You can only apply this rule if the contract or amendment request includes contract_term: "DEFINITE".

1{
2 "nullable": false,
3 "is_editable": true,
4 "min_date": "2025-06-02",
5 "requires": {
6 "contract_term": "DEFINITE"
7 }
8}

Employment type restriction

You can set employment_type to FULL_TIME only if contract_term is INDEFINITE.

1{
2 "nullable": false,
3 "is_editable": true,
4 "possible_options": ["FULL_TIME"],
5 "requires": { "contract_term": "INDEFINITE" }
6}

Numeric constraints

This rule allows minimum and maximum values when employment_type is FULL_TIME.

1{
2 "nullable": false,
3 "is_editable": true,
4 "min": 6,
5 "max": 12,
6 "requires": { "employment_type": "FULL_TIME" }
7}

Use external validation

This rule indicates that complete validation requires calling the validate-amendment endpoint. When external_validation: true, you can either:

  • Call the validate amendment endpoint for server-side validation.

  • Skip validation entirely and let the create/update endpoints return validation errors.

    1{
    2 "nullable": false,
    3 "is_editable": true,
    4 "external_validation": true
    5}

Amendment effective date

The effective date is the date when the amendment becomes active. It defines when the changes take effect and when they appear in payroll, invoices, or other downstream processes.

Different amendment fields trigger different business logic. Based on what you are changing, Deel dynamically calculates a valid effective date range.

To support this flexibility, Deel exposes the Effective Date Limitations API that you need to call to retrieve the valid effective date limits for a specific amendment. This ensures that:

  • Your system always works with the correct date limits.
  • Deel applies the correct validations automatically based on the amendment content, helping you avoid false validations or user errors.
  • You can choose to show or disable the effective date field in your UI.
  • You can apply validation rules or pre-fill values based on internal workflows.
Amendments on contracts that are not yet active can’t have an effective date.

Fetching effective date limits

You must fetch the effective date limitations:

  • Immediately after creating or updating an amendment.
  • Before setting or submitting the effective date.
  • Before confirming the amendment, if any changes were made after fetching the last effective date.
The valid effective date range is based on the specific changes in the amendment. Always fetch the date limits only after all changes to the amendment are finalized.

Status behavior by effective date

Effective dateWhat happens
Effective date in the futureThe amendment gets an upcoming status. It won’t affect contract values immediately.
Effective date today or in the pastThe amendment becomes active as soon as it’s processed and signed.
Effective date not providedThe amendment becomes active immediately after all parties sign. Deel uses the date when all parties confirm the amendment as the effective date.
Amendments in upcoming status do not affect payroll, invoicing, or contract terms until they are activated by Deel’s internal job on the effective date.

High-level flow

The diagram below shows how the effective date influences the amendment lifecycle, from creation to activation:

UI behavior: is_hidden and is_disabled

When you fetch effective date limitations, the response includes flags that guide you in rendering the field in your UI.

FieldClient-side behavior
is_hidden(Optional) Suggests that the field may be hidden from the user interface. You may decide whether to follow this behavior.
is_disabledIf true, the field should not be editable. You must use default_effective_date.
If your use case involves applying an automatic default effective date, such as aligning it with the start of the payroll cycle, hiding the field might improve user experience.

Effective date validation rules

The validation logic for effective dates ensures that all amendments respect configuration limits, providing flexibility while preventing invalid data entry.

ScenarioRequirement
is_disabled = true and is_hidden = trueField must not be included in the request.
is_disabled = true and default date is presentField must exactly match the default effective date.
min_effective_date, max_effective_date, or default_effective_date is presentA valid effective date must be provided and must fall within range.
No limits definedField is optional. System will automatically set it to when all parties confirm the amendment.

Validation runs at two points:

  • On create or update. Runs when you send the effective date in the request payload.
  • On confirmation. The effective date is always validated when the amendment is confirmed, regardless of its draft status.
Draft amendments are validated only when you provide an effective date.