Adjustments allow you to add or subtract amounts from a worker’s payroll outside of their regular compensation. Use adjustments to handle bonuses, deductions, allowances, reimbursements, or any one-time payment that affects net pay.
The Adjustments API provides endpoints to create, retrieve, and manage adjustments programmatically. Each adjustment is linked to a specific contract and payroll cycle, ensuring accurate processing and compliance with local tax rules.
Adjustments are categorized by purpose. Each category determines how the adjustment is processed and reported.
Common adjustment categories include:
Use the GET /adjustments/categories endpoint to retrieve all available categories for your organization.
Adjustments move through different statuses depending on the contract type and approval workflow.
Global Payroll (GP) statuses:
OPEN: Adjustment created but not yet submittedPENDING_APPROVAL: Submitted and awaiting approvalSUCCESS: Approved and processed in payrollFAILED: Processing failed due to validation errorsOVERWRITTEN: Replaced by a newer adjustmentAI_CHECK_IN_PROGRESS: Under automated reviewEmployer of Record (EOR) statuses:
DRAFT: Adjustment created but not finalizedPENDING: Submitted for processingAPPROVED: Approved and ready for disbursementDENIED: Rejected by approverDISBURSE_SCHEDULED: Scheduled for paymentREIMBURSED: Payment completedUNDER_REVIEW: Manual review in progressERRORS_FOUND: Validation errors detectedPENDING_DEEL_REVIEW: Awaiting internal Deel reviewAdjustments are tied to specific payroll cycles. Each adjustment has:
date_of_adjustment: The date the adjustment should applycycle_reference: The payroll cycle identifieractual_start_cycle_date: Start date of the payroll cycleactual_end_cycle_date: End date of the payroll cycleIf move_next_cycle is set to true, the adjustment can be moved to the next payroll cycle if it misses the current cutoff.
Use the POST /adjustments endpoint to create a new adjustment.
A successful request returns a 201 Created status with the adjustment details:
Use GET /adjustments/{id} to fetch details of a single adjustment.
Use GET /contracts/{contract_id}/adjustments to retrieve all adjustments for a specific contract.
This endpoint returns all adjustments associated with a contract, allowing you to track the complete history of bonuses, deductions, and other modifications.
Before creating an adjustment, retrieve the available categories for your organization using GET /adjustments/categories.
Each category has a unique identifier, name, and unit type that determines how the adjustment is processed.
The API returns standard HTTP status codes and error messages to help you diagnose issues.
Always validate adjustment amounts before submission. Negative amounts represent deductions and must be prefixed with a minus sign (e.g., “-150.00”).
All adjustment endpoints require authentication using either an API token or OAuth2.
Required scopes:
adjustments:read - Read adjustment dataadjustments:write - Create and modify adjustmentsFor detailed information on authentication methods and token management, see the Authentication guide.
actual_start_cycle_date and actual_end_cycle_date to confirm timingcycle_reference matches an active payroll cycle/adjustments/categories before creating adjustmentsSubmit performance bonuses at the end of each month for eligible employees.
Reimburse employees for business expenses like travel, meals, or equipment.
Process recurring loan deductions from employee paychecks.