> This page is for CLI.

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

# deel adjustments

> Command reference for the adjustments group of the Deel CLI

The **Operation** column shows the Deel API operation each command calls; the command requires the same token scopes as that operation. Request fields are validated before a request is sent.

| Command                                                                           | Operation                        | Description                                       |
| --------------------------------------------------------------------------------- | -------------------------------- | ------------------------------------------------- |
| [`deel adjustments create --invoice`](#deel-adjustments-create-invoice)           | `POST /adjustments/invoice`      | Create a single invoice adjustment                |
| [`deel adjustments create --payroll`](#deel-adjustments-create-payroll)           | `POST /adjustments/payroll`      | Create a payroll adjustment                       |
| [`deel adjustments create-bulk --invoice`](#deel-adjustments-create-bulk-invoice) | `POST /adjustments/invoice/bulk` | Create invoice adjustments in bulk (asynchronous) |
| [`deel adjustments create-bulk --payroll`](#deel-adjustments-create-bulk-payroll) | `POST /adjustments/payroll/bulk` | Process bulk payroll adjustments (asynchronous)   |

All commands accept the [global options](/cli/reference/global-options). Run `deel <command> --help --json` to output the contract as JSON.

## deel adjustments create

Select the operation with one of `--invoice`, `--payroll`.

### deel adjustments create --invoice

Create a single invoice adjustment.

Calls `POST /adjustments/invoice`.

**`Usage`**

```bash title="Usage"
deel adjustments create --invoice [GLOBAL OPTIONS] [--input <body>]
```

#### Request body

Pass the request body with `--input`. It's required: omitting it exits with `usage.body` (the usage line above brackets it only to match `deel --help`).

| Field                     | Type    | Required | Description                                                                                                                                                                                          |
| ------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `type`                    | string  | Yes      | Invoice adjustment category that determines business rules and downstream invoicing behavior. Allowed values: `BONUS`, `COMMISSION`, `DEDUCTION`, `EXPENSE`, `OTHER`, `OVERTIME`, `TIME_OFF`, `VAT`. |
| `amount`                  | number  | Yes      | Monetary amount to apply for this invoice adjustment, expressed in the contract currency as a positive number.                                                                                       |
| `group_key`               | string  | No       | When provided, invoice adjustments sharing the same group\_key within the same payment cycle are merged into a single aggregated line item on the invoice. Requires is\_auto\_approved to be true.   |
| `contract_id`             | string  | Yes      | Unique Deel contract identifier (public id) that receives this invoice adjustment line item.                                                                                                         |
| `description`             | string  | Yes      | Detailed human-readable explanation that appears on invoices and audit records visible to both parties.                                                                                              |
| `is_recurring`            | boolean | No       | Add this invoice adjustment as recurring.                                                                                                                                                            |
| `date_submitted`          | string  | Yes      | Submission date in ISO-8601 short-date format (YYYY-MM-DD) used for filtering, reporting, and approvals.                                                                                             |
| `is_auto_approved`        | boolean | No       | When true, the created invoice adjustment skips manual approval and is approved immediately on creation.                                                                                             |
| `payment_cycle_id`        | string  | No       | Public id (UUID) of the active payment cycle required when creating VAT-related invoice adjustment entries against a specific cycle.                                                                 |
| `hourly_report_preset_id` | string  | No       | Identifier of an existing hourly report preset used to link standardized rate and scale metadata to this entry.                                                                                      |

#### Response

The envelope `data` is an object with the following fields.

| Field           | Type    | Description                                                                                                                                                                                        |
| --------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status`        | string  | Current processing status assigned to the invoice adjustment after the create workflow finishes executing. Allowed values: `approved`, `declined`, `not_payable`, `paid`, `pending`, `processing`. |
| `created_at`    | string  | ISO-8601 timestamp recording the exact moment the invoice adjustment was created in the system.                                                                                                    |
| `is_created`    | boolean | Indicates whether the invoice adjustment record was successfully created by this request.                                                                                                          |
| `adjustment_id` | string  | Unique identifier returned for the created invoice adjustment resource after persistence succeeds.                                                                                                 |

#### Example

```bash
deel adjustments create --invoice --env demo \
  --input type=BONUS,amount=500,contract_id=con_01H8X3K9,description=Q3 performance bonus,date_submitted=2026-09-01
```

#### Example output

```json
{
  "data": {
    "status": "pending",
    "created_at": "2026-09-01",
    "is_created": true,
    "adjustment_id": "adj_01H8X4M2"
  },
  "meta": {
    "request_id": "3f1c9a52-7b04-4e1a-9a8c-2d5f8e1b0c77"
  }
}
```

Run `deel adjustments create --invoice --generate-input` for a skeleton that includes every field.

### deel adjustments create --payroll

Create a payroll adjustment.

Calls `POST /adjustments/payroll`.

**`Usage`**

```bash title="Usage"
deel adjustments create --payroll [GLOBAL OPTIONS] [--input <body>]
```

#### Request body

Pass the request body with `--input`. It's required: omitting it exits with `usage.body` (the usage line above brackets it only to match `deel --help`).

| Field                       | Type    | Required | Description                                                                                                                                       |
| --------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `type`                      | string  | Yes      | Adjustment category name, resolved against GET /adjustments/categories for the contract type.                                                     |
| `title`                     | string  | Yes      | Title of the adjustment.                                                                                                                          |
| `amount`                    | number  | Yes      | Adjustment amount.                                                                                                                                |
| `vendor`                    | string  | Yes      | Vendor of the adjustment.                                                                                                                         |
| `country`                   | string  | Yes      | ISO-3166-1 alpha-2 country code; determines currency, matching existing UI behaviour.                                                             |
| `contract_id`               | string  | Yes      | Deel contract the adjustment applies to. Must resolve to an EOR or Global Payroll contract type.                                                  |
| `description`               | string  | Yes      | Description of the adjustment.                                                                                                                    |
| `cycle_reference`           | string  | No       | Cycle reference of the adjustment.                                                                                                                |
| `date_of_adjustment`        | string  | No       | Short date in format ISO-8601 (YYYY-MM-DD).                                                                                                       |
| `submitter_profile_id`      | integer | No       | The identifier of the profile that submits the adjustment. When omitted, the adjustment is attributed to the profile resolved from the API token. |
| `should_move_to_next_cycle` | boolean | No       | If the adjustment can belong to another payroll cycle.                                                                                            |

#### Response

The envelope `data` is an object with the following fields.

| Field           | Type   | Description                                                                                         |
| --------------- | ------ | --------------------------------------------------------------------------------------------------- |
| `status`        | string | Processing status assigned to the adjustment after creation.                                        |
| `created_at`    | string | ISO-8601 timestamp recording when the adjustment was created.                                       |
| `adjustment_id` | string | Unique identifier returned for the created payroll adjustment resource.                             |
| `contract_type` | string | Resolved contract type the adjustment was applied against. Allowed values: `EOR`, `GLOBAL_PAYROLL`. |

#### Example

```bash
deel adjustments create --payroll --env demo \
  --input type=Bonus,title=September bonus,amount=500,vendor=Acme Ltd,country=DE,contract_id=con_01H8X3K9,description=Q3 performance bonus
```

#### Example output

```json
{
  "data": {
    "status": "pending",
    "created_at": "2026-09-01",
    "adjustment_id": "adj_01H8X4M2",
    "contract_type": "EOR"
  },
  "meta": {
    "request_id": "3f1c9a52-7b04-4e1a-9a8c-2d5f8e1b0c77"
  }
}
```

Run `deel adjustments create --payroll --generate-input` for a skeleton that includes every field.

## deel adjustments create-bulk

Select the operation with one of `--invoice`, `--payroll`.

### deel adjustments create-bulk --invoice

Create invoice adjustments in bulk.

Calls `POST /adjustments/invoice/bulk`. The operation is asynchronous: follow it with [`deel job status`](/cli/reference/job#deel-job-status) using the `job_id` from the response.

**`Usage`**

```bash title="Usage"
deel adjustments create-bulk --invoice [GLOBAL OPTIONS] [--input <body>]
```

#### Request body

Pass the request body with `--input` as a JSON array of at most 50 items, where each item is shaped as follows:

| Field                             | Type    | Required | Description                                                                                                                                                                                          |
| --------------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `request`                         | object  | Yes      | —                                                                                                                                                                                                    |
| `request.type`                    | string  | Yes      | Invoice adjustment category that determines business rules and downstream invoicing behavior. Allowed values: `BONUS`, `COMMISSION`, `DEDUCTION`, `EXPENSE`, `OTHER`, `OVERTIME`, `TIME_OFF`, `VAT`. |
| `request.amount`                  | number  | Yes      | Monetary amount to apply for this invoice adjustment, expressed in the contract currency as a positive number.                                                                                       |
| `request.group_key`               | string  | No       | When provided, invoice adjustments sharing the same group\_key within the same payment cycle are merged into a single aggregated line item on the invoice. Requires is\_auto\_approved to be true.   |
| `request.contract_id`             | string  | Yes      | Unique Deel contract identifier (public id) that receives this invoice adjustment line item.                                                                                                         |
| `request.description`             | string  | Yes      | Detailed human-readable explanation that appears on invoices and audit records visible to both parties.                                                                                              |
| `request.is_recurring`            | boolean | No       | Add this invoice adjustment as recurring.                                                                                                                                                            |
| `request.date_submitted`          | string  | Yes      | Submission date in ISO-8601 short-date format (YYYY-MM-DD) used for filtering, reporting, and approvals.                                                                                             |
| `request.is_auto_approved`        | boolean | No       | When true, the created invoice adjustment skips manual approval and is approved immediately on creation.                                                                                             |
| `request.payment_cycle_id`        | string  | No       | Public id (UUID) of the active payment cycle required when creating VAT-related invoice adjustment entries against a specific cycle.                                                                 |
| `request.hourly_report_preset_id` | string  | No       | Identifier of an existing hourly report preset used to link standardized rate and scale metadata to this entry.                                                                                      |
| `external_id`                     | string  | Yes      | Client-generated correlation id for an adjustment item. Reuse the same external\_id on a later request to link back to the same logical adjustment. This should be provided by client.               |

#### Response

The envelope `data` is an object with the following fields.

| Field                 | Type   | Description                                                                                       |
| --------------------- | ------ | ------------------------------------------------------------------------------------------------- |
| `items`               | array  | —                                                                                                 |
| `items[].status`      | string | Initial status when first submitted. Allowed values: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`. |
| `items[].external_id` | string | The client-supplied correlation id echoed back.                                                   |
| `job_id`              | string | Identifier for this operation. Pass to GET /jobs/:job\_id to poll the outcome of each item.       |

#### Example

```bash
deel adjustments create-bulk --invoice --env demo \
  --input file://adjustments-create-bulk-invoice.json
```

**`adjustments-create-bulk-invoice.json`**

```json title="adjustments-create-bulk-invoice.json"
[
  {
    "request": {
      "type": "BONUS",
      "amount": 500,
      "contract_id": "con_01H8X3K9",
      "description": "Q3 performance bonus",
      "date_submitted": "2026-09-01"
    },
    "external_id": "payroll-2026-09-0001"
  }
]
```

#### Example output

```json
{
  "data": {
    "items": [
      {
        "status": "PENDING",
        "external_id": "payroll-2026-09-0001"
      }
    ],
    "job_id": "7f3c9b1e-2d84-4a51-9c07-1b5e8a0f3d62"
  },
  "meta": {
    "request_id": "3f1c9a52-7b04-4e1a-9a8c-2d5f8e1b0c77"
  }
}
```

Run `deel adjustments create-bulk --invoice --generate-input` for a skeleton that includes every field.

### deel adjustments create-bulk --payroll

Process bulk payroll adjustments.

Calls `POST /adjustments/payroll/bulk`. The operation is asynchronous: follow it with [`deel job status`](/cli/reference/job#deel-job-status) using the `job_id` from the response.

**`Usage`**

```bash title="Usage"
deel adjustments create-bulk --payroll [GLOBAL OPTIONS] [--input <body>]
```

#### Request body

Pass the request body with `--input`. It's required: omitting it exits with `usage.body` (the usage line above brackets it only to match `deel --help`).

| Field   | Type  | Required | Description                                                                                                       |
| ------- | ----- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| `items` | array | Yes      | Up to 50 adjustments to submit as one batch; each external\_id must be unique within the batch. At most 50 items. |

#### Response

The envelope `data` is an object with the following fields.

| Field                 | Type   | Description                                                                                       |
| --------------------- | ------ | ------------------------------------------------------------------------------------------------- |
| `items`               | array  | —                                                                                                 |
| `items[].status`      | string | Initial status when first submitted. Allowed values: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`. |
| `items[].external_id` | string | The client-supplied correlation id echoed back.                                                   |
| `job_id`              | string | Identifier for this operation. Pass to GET /jobs/:job\_id to poll the outcome of each item.       |

#### Example

```bash
deel adjustments create-bulk --payroll --env demo \
  --input file://adjustments-create-bulk-payroll.json
```

**`adjustments-create-bulk-payroll.json`**

```json title="adjustments-create-bulk-payroll.json"
{
  "items": []
}
```

#### Example output

```json
{
  "data": {
    "items": [
      {
        "status": "PENDING",
        "external_id": "payroll-2026-09-0001"
      }
    ],
    "job_id": "7f3c9b1e-2d84-4a51-9c07-1b5e8a0f3d62"
  },
  "meta": {
    "request_id": "3f1c9a52-7b04-4e1a-9a8c-2d5f8e1b0c77"
  }
}
```

Run `deel adjustments create-bulk --payroll --generate-input` for a skeleton that includes every field.