Skip to navigation

deel adjustments

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.

CommandOperationDescription
deel adjustments create --invoicePOST /adjustments/invoiceCreate a single invoice adjustment
deel adjustments create --payrollPOST /adjustments/payrollCreate a payroll adjustment
deel adjustments create-bulk --invoicePOST /adjustments/invoice/bulkCreate invoice adjustments in bulk (asynchronous)
deel adjustments create-bulk --payrollPOST /adjustments/payroll/bulkProcess bulk payroll adjustments (asynchronous)

All commands accept the 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
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).

FieldTypeRequiredDescription
typestringYesInvoice adjustment category that determines business rules and downstream invoicing behavior. Allowed values: BONUS, COMMISSION, DEDUCTION, EXPENSE, OTHER, OVERTIME, TIME_OFF, VAT.
amountnumberYesMonetary amount to apply for this invoice adjustment, expressed in the contract currency as a positive number.
group_keystringNoWhen 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_idstringYesUnique Deel contract identifier (public id) that receives this invoice adjustment line item.
descriptionstringYesDetailed human-readable explanation that appears on invoices and audit records visible to both parties.
is_recurringbooleanNoAdd this invoice adjustment as recurring.
date_submittedstringYesSubmission date in ISO-8601 short-date format (YYYY-MM-DD) used for filtering, reporting, and approvals.
is_auto_approvedbooleanNoWhen true, the created invoice adjustment skips manual approval and is approved immediately on creation.
payment_cycle_idstringNoPublic id (UUID) of the active payment cycle required when creating VAT-related invoice adjustment entries against a specific cycle.
hourly_report_preset_idstringNoIdentifier 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.

FieldTypeDescription
statusstringCurrent processing status assigned to the invoice adjustment after the create workflow finishes executing. Allowed values: approved, declined, not_payable, paid, pending, processing.
created_atstringISO-8601 timestamp recording the exact moment the invoice adjustment was created in the system.
is_createdbooleanIndicates whether the invoice adjustment record was successfully created by this request.
adjustment_idstringUnique identifier returned for the created invoice adjustment resource after persistence succeeds.

Example

deel adjustments create --invoice --env demo \
--input type=BONUS,amount=500,contract_id=con_01H8X3K9,description=Q3 performance bonus,date_submitted=2026-09-01
{
"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
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).

FieldTypeRequiredDescription
typestringYesAdjustment category name, resolved against GET /adjustments/categories for the contract type.
titlestringYesTitle of the adjustment.
amountnumberYesAdjustment amount.
vendorstringYesVendor of the adjustment.
countrystringYesISO-3166-1 alpha-2 country code; determines currency, matching existing UI behaviour.
contract_idstringYesDeel contract the adjustment applies to. Must resolve to an EOR or Global Payroll contract type.
descriptionstringYesDescription of the adjustment.
cycle_referencestringNoCycle reference of the adjustment.
date_of_adjustmentstringNoShort date in format ISO-8601 (YYYY-MM-DD).
submitter_profile_idintegerNoThe 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_cyclebooleanNoIf the adjustment can belong to another payroll cycle.

Response

The envelope data is an object with the following fields.

FieldTypeDescription
statusstringProcessing status assigned to the adjustment after creation.
created_atstringISO-8601 timestamp recording when the adjustment was created.
adjustment_idstringUnique identifier returned for the created payroll adjustment resource.
contract_typestringResolved contract type the adjustment was applied against. Allowed values: EOR, GLOBAL_PAYROLL.

Example

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
{
"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 using the job_id from the response.

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:

FieldTypeRequiredDescription
requestobjectYes—
request.typestringYesInvoice adjustment category that determines business rules and downstream invoicing behavior. Allowed values: BONUS, COMMISSION, DEDUCTION, EXPENSE, OTHER, OVERTIME, TIME_OFF, VAT.
request.amountnumberYesMonetary amount to apply for this invoice adjustment, expressed in the contract currency as a positive number.
request.group_keystringNoWhen 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_idstringYesUnique Deel contract identifier (public id) that receives this invoice adjustment line item.
request.descriptionstringYesDetailed human-readable explanation that appears on invoices and audit records visible to both parties.
request.is_recurringbooleanNoAdd this invoice adjustment as recurring.
request.date_submittedstringYesSubmission date in ISO-8601 short-date format (YYYY-MM-DD) used for filtering, reporting, and approvals.
request.is_auto_approvedbooleanNoWhen true, the created invoice adjustment skips manual approval and is approved immediately on creation.
request.payment_cycle_idstringNoPublic id (UUID) of the active payment cycle required when creating VAT-related invoice adjustment entries against a specific cycle.
request.hourly_report_preset_idstringNoIdentifier of an existing hourly report preset used to link standardized rate and scale metadata to this entry.
external_idstringYesClient-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.

FieldTypeDescription
itemsarray—
items[].statusstringInitial status when first submitted. Allowed values: PENDING, RUNNING, SUCCEEDED, FAILED.
items[].external_idstringThe client-supplied correlation id echoed back.
job_idstringIdentifier for this operation. Pass to GET /jobs/:job_id to poll the outcome of each item.

Example

deel adjustments create-bulk --invoice --env demo \
--input file://adjustments-create-bulk-invoice.json
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"
}
]
{
"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 using the job_id from the response.

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

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

FieldTypeDescription
itemsarray—
items[].statusstringInitial status when first submitted. Allowed values: PENDING, RUNNING, SUCCEEDED, FAILED.
items[].external_idstringThe client-supplied correlation id echoed back.
job_idstringIdentifier for this operation. Pass to GET /jobs/:job_id to poll the outcome of each item.

Example

deel adjustments create-bulk --payroll --env demo \
--input file://adjustments-create-bulk-payroll.json
adjustments-create-bulk-payroll.json
{
"items": []
}
{
"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.