Deel REST API

Global payroll and HR platform

developer.deel.com ↗
Version
1.25.0
OpenAPI
3.0.1
Endpoints
153
Schemas
508
81
Quality
Updated
3 days ago
Hr hr payroll hiring
Use this API in your AI agent

Query structured spec data via REST or MCP. Get exactly what your agent needs.

Get API Key

Server URLs

https://api.letsdeel.com/rest/v2
https://api-staging.letsdeel.com/rest/v2

Endpoints

Accounting 5 endpoints

GET /invoices

Retrieve a list of paid invoices for your workforce.

operationId: Accounting_getPaidInvoices

Parameters

Name In Required Type Description
issued_from_date query optional string

to get records created after given issue date

issued_to_date query optional string

to get records created before given issued date

limit query optional number

Return a page of results with given number of records; NOTE: technically ALL query parameters are strings or array of strings

offset query optional number

Return a page of results after given index of row; NOTE: technically ALL query parameters are strings or array of strings

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /invoices
GET /invoices/deel

Retrieve a list of invoices related to Deel fees.

operationId: Accounting_getDeelInvoices

Parameters

Name In Required Type Description
limit query optional number

Return a page of results with given number of records; NOTE: technically ALL query parameters are strings or array of strings

offset query optional number

Return a page of results after given index of row; NOTE: technically ALL query parameters are strings or array of strings

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /invoices/deel
GET /invoices/{invoice_id}/download

Get link to download the invoice PDF.

operationId: Accounting_getInvoicePdfDownloadLink

Parameters

Name In Required Type Description
invoice_id path optional string

ID of an existing invoice

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /invoices/{invoice_id}/download
GET /payments

Retrieve a list of payments made to Deel.

operationId: Accounting_getPaymentReceipts

Parameters

Name In Required Type Description
date_from query optional

Filtered results will include records created on or after the provided date.

date_to query optional

Filtered results will include records created before the provided date.

currencies query optional

Currency codes of contracts to filter.

entities query optional

Filter by legal entity type; company, or individual

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /payments
GET /payments/{payment_id}/breakdown

Get a full breakdown of a payment made to Deel. Breakdown will include individual invoices and Deel fee as line items.

operationId: Accounting_getPaymentBreakdown

Parameters

Name In Required Type Description
payment_id path required string

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

GET /payments/{payment_id}/breakdown

Adjustments 6 endpoints

POST /adjustments

Create a new adjustment.

operationId: Adjustments_createNewAdjustment

Request Body

Creation data for a new adjustment

multipart/form-data
schema AdjustmentToCreateContainer
Property Type Required
data object required
file string required
title string required
amount object required
vendor string required
country string required
contract_id string required
description string required
cycle_reference string optional
move_next_cycle boolean optional
date_of_adjustment string optional
adjustment_category_id string required

Responses

201

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /adjustments
GET /adjustments/categories

Get all categories for your organization.

operationId: Adjustments_getCategories

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /adjustments/categories
DELETE /adjustments/{adjustment_id}

Delete an adjustment.

operationId: Adjustments_removeAdjustment

Parameters

Name In Required Type Description
adjustment_id path optional string

Adjustment id.

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

DELETE /adjustments/{adjustment_id}
GET /adjustments/{adjustment_id}

Retrieve an adjustment.

operationId: Adjustments_getById

Parameters

Name In Required Type Description
adjustment_id path optional string

Adjustment id.

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /adjustments/{adjustment_id}
PATCH /adjustments/{adjustment_id}

Update an adjustment.

operationId: Adjustments_updateAdjustment

Parameters

Name In Required Type Description
adjustment_id path optional string

Adjustment id.

Request Body

Adjustment object that needs to be updated

application/json
schema AdjustmentToUpdateContainer
Property Type Required
data object required
file string optional
title string optional
amount object optional
description string optional

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

PATCH /adjustments/{adjustment_id}
GET /contracts/{contract_id}/adjustments

Get all adjustments for the specific contract.

operationId: Adjustments_getAll

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

from query optional string

Filter adjustments by start date.

to query optional string

Filter adjustments by end date.

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /contracts/{contract_id}/adjustments

Attachments 1 endpoints

POST /attachments

Upload file to Deel storage to use the file attachment feature for other endpoints.

operationId: Attachments_uploadDeelFile

Request Body

File info object that needs to be created.

application/json
schema InputToCreateFileRef
Property Type Required
data object required
content_type string required

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /attachments

Candidates 2 endpoints

POST /candidates

Add a candidate to Deel.

operationId: Candidates_addCandidateToDeel

Request Body

Add a candidate to Deel

application/json
schema CandidateToCreateContainer
Property Type Required
data object required
id string required
link string required
email string optional
state string optional
status string required
country string optional
job_title string optional
last_name string required
first_name string required
start_date string required
nationality string optional

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /candidates
PATCH /candidates/{candidate_id}

Update an existed candidate.

operationId: Candidates_updateCandidateById

Parameters

Name In Required Type Description
candidate_id path optional string

Candidate id.

Request Body

Update an existed candidate

application/json
schema CandidateToPatchContainer
Property Type Required
data object required
link string optional
email string optional
state string optional
status string required
country string optional
job_title string optional
last_name string optional
first_name string optional
start_date string optional
nationality string optional

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

PATCH /candidates/{candidate_id}

Contractors 10 endpoints

POST /contracts

Create a new Deel contract.

operationId: Contractors_createNewDeelContract

Request Body

Contract object that needs to be created

application/json
schema ContractToCreateContainer
Property Type Required
data object required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts
POST /contracts/fixed-rate
operationId: Contractors_createNewFixedRateContract

Request Body

Contract object that needs to be created

application/json
schema ContractToCreateContainer_ongoing_time_based
Property Type Required
data object required
meta object required
is_main_income boolean optional
documents_required boolean required
title string required
client object required
team object required
id string required
legal_entity object required
id string required
worker object optional
last_name string optional
first_name string required
expected_email string required
job_title object required
id string optional
name string optional
seniority object optional
id string optional
state_code string optional
external_id string optional
who_reports string optional
country_code string optional
notice_period number optional
scope_of_work string optional
special_clause string optional
termination_date string optional
type string required
start_date string required
compensation_details object required
amount number required
cycle_end number required
frequency string required
currency_code string required
first_payment number optional
notice_period number optional
cycle_end_type string required
payment_due_days number required
payment_due_type string required
first_payment_date string optional
pay_before_weekends boolean optional
scale string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/fixed-rate
POST /contracts/milestone-based
operationId: Contractors_createNewMilestoneContract

Request Body

Contract object that needs to be created

application/json
schema ContractToCreateContainer_payg_milestones
Property Type Required
data object required
meta object required
is_main_income boolean optional
documents_required boolean required
title string required
client object required
team object required
id string required
legal_entity object required
id string required
worker object optional
last_name string optional
first_name string required
expected_email string required
job_title object required
id string optional
name string optional
seniority object optional
id string optional
state_code string optional
external_id string optional
who_reports string optional
country_code string optional
notice_period number optional
scope_of_work string optional
special_clause string optional
termination_date string optional
type string required
start_date string optional
compensation_details object required
amount number optional
cycle_end number required
frequency string required
currency_code string required
first_payment number optional
notice_period number optional
cycle_end_type string required
payment_due_days number required
payment_due_type string required
first_payment_date string optional
pay_before_weekends boolean optional

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/milestone-based
POST /contracts/task-based
operationId: Contractors_createNewTaskBasedContract

Request Body

Contract object that needs to be created

application/json
schema ContractToCreateContainer_payg_tasks
Property Type Required
data object required
meta object required
is_main_income boolean optional
documents_required boolean required
title string required
client object required
team object required
id string required
legal_entity object required
id string required
worker object optional
last_name string optional
first_name string required
expected_email string required
job_title object required
id string optional
name string optional
seniority object optional
id string optional
state_code string optional
external_id string optional
who_reports string optional
country_code string optional
notice_period number optional
scope_of_work string optional
special_clause string optional
termination_date string optional
type string required
start_date string required
compensation_details object required
amount number optional
cycle_end number required
frequency string required
currency_code string required
first_payment number optional
notice_period number optional
cycle_end_type string required
payment_due_days number required
payment_due_type string required
first_payment_date string optional
pay_before_weekends boolean optional

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/task-based
POST /contracts/time-based
operationId: Contractors_createNewTimeBasedContract

Request Body

Contract object that needs to be created

application/json
schema ContractToCreateContainer_pay_as_you_go_time_based
Property Type Required
data object required
meta object required
is_main_income boolean optional
documents_required boolean required
title string required
client object required
team object required
id string required
legal_entity object required
id string required
worker object optional
last_name string optional
first_name string required
expected_email string required
job_title object required
id string optional
name string optional
seniority object optional
id string optional
state_code string optional
external_id string optional
who_reports string optional
country_code string optional
notice_period number optional
scope_of_work string optional
special_clause string optional
termination_date string optional
type string required
start_date string required
compensation_details object required
amount number required
cycle_end number required
frequency string required
currency_code string required
first_payment number optional
notice_period number optional
cycle_end_type string required
payment_due_days number required
payment_due_type string required
first_payment_date string optional
pay_before_weekends boolean optional
scale string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/time-based
POST /contracts/{contract_id}/amendments

Amend the details of a contract. Please note that if the contract is already signed or active, then the update will have to be approved and re-signed for to take effect.

operationId: Contractors_amendContractDetails

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Contract object that needs to be amended

application/json
schema ContractToAmendDetailsContainer
Property Type Required
data object required
scale string optional
amount number optional
cycle_end number optional
frequency string optional
job_title_id string optional
seniority_id string optional
currency_code string optional
first_payment number optional
scope_of_work string optional
cycle_end_type string optional
effective_date string optional
job_title_name string optional
special_clause string optional
payment_due_days number optional
payment_due_type string optional
first_payment_date string optional
pay_before_weekends boolean optional

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/amendments
DELETE /contracts/{contract_id}/premium

Remove Deel Premium from an existing contract.

operationId: Contractors_removePremium

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

reason query optional string

Reason for deleting an existing Deel Premium from a contract.

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

DELETE /contracts/{contract_id}/premium
POST /contracts/{contract_id}/premium

Add additional protection against misclassification by upgrading to Deel Premium.

operationId: Contractors_upgradeToPremium

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Answers for assessment in order to find eligibility for Deel Premium.

application/json
schema PremiumToAddContainer
Property Type Required
data object required
contractor_characteristics boolean required
agreement_reflects_relation boolean required

Responses

201

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/premium
GET /contracts/{contract_id}/preview

Retrieve an IC and EOR contract agreement content in HTML. If no template is specified, the default or currently assigned template will be used. This endpoint does not support Global Payroll contract type.

operationId: Contractors_getContractPreview

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

templateId query optional string

ID of an existing contract template.

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

GET /contracts/{contract_id}/preview
POST /contracts/{contract_id}/terminations

Terminate an active contract.

operationId: Contractors_terminateContract

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Contract that needs to be terminated and when.

application/json
schema ContractToTerminateContainer
Property Type Required
data object required
message string optional
terminate_now boolean optional
completion_date string optional

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/terminations

Contracts 12 endpoints

GET /contract-templates

Retrieve a list of contract templates in your organization.

operationId: Contracts_getList

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

GET /contract-templates
GET /contracts

Retrieve a list of contracts.

operationId: Contracts_getList

Parameters

Name In Required Type Description
after_cursor query optional string

Return next page of results after given cursor.

limit query optional number

Return a page of results with given number of records; NOTE: technically ALL query parameters are strings or array of strings

order_direction query optional

Order direction of results; ascending or descending.

types query optional

You can filter contracts by type, a contract is included in results if its type is in this list.

statuses query optional

You can filter contracts by current status, a contract is included in results if its status is in this list.

team_id query optional string

Filter contracts for given team ID; NOTE: technically ALL query parameters are strings or array of strings

external_id query optional string

Filter contracts for given external ID

countries query optional

Country codes of contracts to filter.

currencies query optional

Currency codes of contracts to filter.

search query optional string

Include a contract if by name or contractor name contains given search term.

sort_by query optional

Sort contracts by given field name.

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

GET /contracts
POST /contracts/estimate

First payment is calculated from the number of working/calendar days between their start date and the start of the payment cycle.

operationId: Contracts_calculateFirstPaymentAmount

Request Body

Pro-rata payment object that needs to estimated payment

application/json
schema EstimateFirstPaymentContainer
Property Type Required
data object required
type string required
start_date string required
country_code string required
compensation_details object required
scale string optional
amount number optional
cycle_end number optional
currency_code string optional
work_week_end string optional
cycle_end_type string optional
work_week_start string optional
calculation_type string optional
payment_due_days number optional
payment_due_type string optional

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /contracts/estimate
GET /contracts/{contract_id}

Retrieve a single contract.

operationId: Contracts_getSingleContract

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

GET /contracts/{contract_id}
PATCH /contracts/{contract_id}

Add an external Id to a Deel contract. You can use this to add a Deel contract’s refernece Id in your platform. External Id can be passed as a query parameter in List contract endpoint to find this conract later.

operationId: Contracts_addExternalId

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Contract object that needs to be created

application/json
schema InputToPatchContractExternalId
Property Type Required
data object required
external_id string required

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

PATCH /contracts/{contract_id}
GET /contracts/{contract_id}/alternate_emails

Returns an array of alternate email objects

operationId: Contracts_findEmailsById

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /contracts/{contract_id}/alternate_emails
POST /contracts/{contract_id}/documents

Attach a file to contract document.

operationId: Contracts_attachFileToDocument

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

A form to attach a file to contract document.

multipart/form-data
schema FileObject
Property Type Required
file string optional

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/documents
PUT /contracts/{contract_id}/documents

Overwrite the file currently attached to contract document.

operationId: Contracts_editFileAttachment

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

A form to attach a file to contract document.

multipart/form-data
schema FileObject
Property Type Required
file string optional

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

PUT /contracts/{contract_id}/documents
GET /contracts/{contract_id}/final-payments

Calculate the final payment due to the contractor when ending the contract.

operationId: Contracts_calculateFinalPaymentAmount

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

end_date query optional

The day to end the contract.

calculation_type query optional string

The days to calculate.

workweek_start query optional string

The day the work week starts, 0 to 6

workweek_end query optional string

The day the work week ends, 0 to 6

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /contracts/{contract_id}/final-payments
DELETE /contracts/{contract_id}/invitations

Remove invite in order to re-invite a worker to sign the contract.

operationId: Contracts_removeInvite

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

DELETE /contracts/{contract_id}/invitations
POST /contracts/{contract_id}/invitations

Invite a worker to sign the contract. Worker will be notified via email.

operationId: Contracts_inviteWorkerToSign

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Contract invitation object that needs to be created

application/json
schema ContractInvitationToCreateContainer
Property Type Required
data object required
email string required
message string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/invitations
POST /contracts/{contract_id}/signatures

Sign a contract as a client.

operationId: Contracts_clientSignContract

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Contract signature object that needs to be created

application/json
schema ContractSignatureToCreateContainer
Property Type Required
data object required
client_signature string required
contract_template_id number optional

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/signatures

Eor 6 endpoints

POST /eor

Create an Employee of Record (EOR) contract quote. The endpoints creates a contract quote request. Deel will process the information and get back with a quote for this contract.

operationId: Eor_createContractQuote

Request Body

Employee (eor) contract object that needs to be created

application/json
schema EorContractToCreateContainer
Property Type Required
data object required
client object required
team object required
id string required
legal_entity object optional
id string optional
pension object optional
id string optional
contribution string optional
employee object required
email string optional
address object optional
zip string optional
city string optional
state string optional
street string optional
country string optional
last_name string required
first_name string required
nationality string required
job_title string required
seniority object required
id string optional
employment object required
type string optional
state string optional
country string required
end_date string optional
holidays number optional
start_date string required
scope_of_work string optional
time_off_type string optional
probation_period number optional
work_visa_required boolean required
health_plan_id string optional
compensation_details object required
salary number optional
currency string required
variable_compensation number optional
variable_compensation_type string optional
quote_additional_fields object optional
dob string optional
gender string optional
worker_type string optional

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /eor
POST /eor/employment_cost

Determine EOR employee costs across the globe.

operationId: Eor_calculateEmployeeCosts

Request Body

Information to use in the EOR employeeCost calculation.

application/json
schema EorEmployeeCostCalculationRequestBodyContainer
Property Type Required
data object required
salary number required
country string required
benefits array optional
plan_id string optional
provider_id string required
currency string required

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /eor/employment_cost
GET /eor/validations/{country_code}

Retrieve the hiring guide data for a country. This data can be used to create Employee of Record (EOR) contract quotes.

operationId: Eor_getCountryGuide

Parameters

Name In Required Type Description
country_code path optional

Country code.

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /eor/validations/{country_code}
GET /eor/workers/{worker_id}/payslips

Get of payslips for an employee.

operationId: Eor_getEmployeePayslips

Parameters

Name In Required Type Description
worker_id path optional string

Unique identifier for a worker.

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /eor/workers/{worker_id}/payslips
GET /eor/workers/{worker_id}/payslips/{payslip_id}/download

Get download url for EOR payslip.

operationId: Eor_getPayslipDownload

Parameters

Name In Required Type Description
worker_id path optional string

Unique identifier for a worker.

payslip_id path optional string

Unique identifier for a payslip.

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /eor/workers/{worker_id}/payslips/{payslip_id}/download
GET /eor/{contract_id}/benefits

Retrieve EOR contract benefits

operationId: Eor_getContractBenefits

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /eor/{contract_id}/benefits

Globalpayroll 8 endpoints

POST /contracts/gp

Create a Global Payroll contract.

operationId: GlobalPayroll_createContractGp

Request Body

Global Payroll (GP) contract object that needs to be created

application/json
schema GPContractToCreateContainer
Property Type Required
data object required
client object required
team object required
id string required
legal_entity object required
id string required
employee object required
email string required
address object required
zip string required
city string required
state string optional
street string required
country string required
last_name string required
first_name string required
work_email string required
nationality string optional
employee_number string optional
job_title string required
employment object required
type string required
holidays object required
allowance number required
start_date string required
start_date string required
compensation_details object required
scale string required
salary number required
currency string optional

Responses

201

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /contracts/gp
GET /gp/legal-entities/{legal_entity_id}/reports

Get list of global payroll events by legal entities.

operationId: GlobalPayroll_listPayrollEventsByLegalEntity

Parameters

Name In Required Type Description
legal_entity_id path optional string

Id of an legal entity.

start_date query optional

Start date of payroll report.

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /gp/legal-entities/{legal_entity_id}/reports
GET /gp/reports/{gp_report_id}/gross_to_net

Get list of global payroll reports detailing gross-to-net calculations.

operationId: GlobalPayroll_getGrossToNetGpReport

Parameters

Name In Required Type Description
gp_report_id path optional string

Id of gp report.

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /gp/reports/{gp_report_id}/gross_to_net
GET /gp/reports/{gp_report_id}/gross_to_net/csv

Download global payroll reports detailing gross-to-net calculations.

operationId: GlobalPayroll_downloadGrossToNetGpReport

Parameters

Name In Required Type Description
gp_report_id path optional string

Id of gp report.

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /gp/reports/{gp_report_id}/gross_to_net/csv
PATCH /gp/workers/{worker_id}/address

Update the address of a Global Payroll employee.

operationId: GlobalPayroll_updateWorkerAddress

Parameters

Name In Required Type Description
worker_id path optional string

Unique identifier for a worker.

Request Body

The desired address of the Global Payroll employee

application/json
schema GPEmployeeAddressToUpdateContainer
Property Type Required
data object required
zip string optional
city string optional
street string optional

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

PATCH /gp/workers/{worker_id}/address
GET /gp/workers/{worker_id}/banks

Retrieve all bank accounts for an employee.

operationId: GlobalPayroll_getBankAccounts

Parameters

Name In Required Type Description
worker_id path optional string

Unique identifier for a worker.

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /gp/workers/{worker_id}/banks
POST /gp/workers/{worker_id}/banks

Add a new bank account for an employee.

operationId: GlobalPayroll_addBankAccount

Parameters

Name In Required Type Description
worker_id path optional string

Unique identifier for a worker.

Request Body

Request body to add new bank account for employee

application/json
schema AddWorkerBankAccountContainer
Property Type Required
data object required
city string optional
iban string optional
email string optional
phone string optional
postal string optional
tax_id string optional
bank_code string optional
bank_name string optional
full_name string optional
swift_bic string optional
rib_number string optional
branch_code string optional
account_type string optional
country_code string optional
address_line1 string optional
address_line2 string optional
currency_code string optional
original_name string optional
account_number string optional
province_state string optional
…3 more object optional

Responses

201

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /gp/workers/{worker_id}/banks
GET /gp/workers/{worker_id}/banks/guide

Retrieve the bank form guide for employee.

operationId: GlobalPayroll_getBankGuide

Parameters

Name In Required Type Description
worker_id path optional string

Unique identifier for a worker.

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

GET /gp/workers/{worker_id}/banks/guide

Schemas

object AddWorkerBankAccountContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/WorkerBankAccountToAdd"
    }
  },
  "x-internal": true
}
object AdditionalEORInfo
{
  "description": "Fields for country validation mandatory found at `/eor/validations/{country_code}`."
}
object AdditionalEORInfoContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/AdditionalEORInfo"
    }
  },
  "x-internal": true
}
object Address
{
  "type": "object",
  "properties": {
    "region": {
      "type": "string",
      "example": "CO",
      "description": "Region code."
    },
    "country": {
      "$ref": "#/components/schemas/CountryCode"
    },
    "locality": {
      "type": "string",
      "example": "Denver",
      "description": "Locality name."
    },
    "postalCode": {
      "type": "string",
      "example": "44000",
      "description": "Postal code."
    },
    "streetAddress": {
      "type": "string",
      "example": "Deel Street 500",
      "description": "Street and number."
    }
  }
}
object AdjustmentCategory
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "c0431543f64c448e5ba4b525a50291",
      "description": "Unique identifier of an adjustment category."
    },
    "label": {
      "type": "string",
      "example": "Employee Dinner",
      "description": "The label of the adjustment category."
    },
    "unit_type": {
      "type": "string",
      "example": "currency",
      "description": "The unit type of the adjustment category."
    }
  }
}
object AdjustmentCreatedContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/PayrollAdjustment"
    }
  },
  "x-internal": true
}
string AdjustmentStatusEnum
{
  "enum": [
    "open",
    "pending_approval",
    "overwritten",
    "failed",
    "success"
  ],
  "type": "string",
  "x-internal": true,
  "description": "Adjustment status"
}
object AdjustmentToCreate
{
  "type": "object",
  "required": [
    "contract_id",
    "amount",
    "title",
    "description",
    "adjustment_category_id",
    "file",
    "vendor",
    "country"
  ],
  "properties": {
    "file": {
      "type": "string",
      "format": "binary",
      "minLength": 1,
      "description": "File of adjustment."
    },
    "title": {
      "type": "string",
      "example": "Your title here",
      "maxLength": 255,
      "minLength": 3,
      "description": "Title of adjustment."
    },
    "amount": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        }
      ],
      "example": 100.25,
      "minimum": 1,
      "minLength": 1,
      "description": "Amount of adjustment."
    },
    "vendor": {
      "type": "string",
      "example": "Vendor",
      "minLength": 3,
      "description": "Vendor of adjustment."
    },
    "country": {
      "$ref": "#/components/schemas/CountryCode",
      "example": "CA",
      "description": "Country of adjustment."
    },
    "contract_id": {
      "type": "string",
      "example": "m3jk2j",
      "minLength": 5,
      "description": "The identifier of the contract associated with the adjustment"
    },
    "description": {
      "type": "string",
      "example": "Your description here",
      "maxLength": 255,
      "minLength": 3,
      "description": "Description of adjustment."
    },
    "cycle_reference": {
      "type": "string",
      "example": "my_cycle_reference",
      "description": "Cycle reference of adjustment."
    },
    "move_next_cycle": {
      "type": "boolean",
      "example": true,
      "nullable": true,
      "description": "If an adjustments can belong to another payroll cycle."
    },
    "date_of_adjustment": {
      "$ref": "#/components/schemas/DateString",
      "example": "2023-11-02T00:00:00.000Z",
      "description": "The date of the expense associated with the adjustment."
    },
    "adjustment_category_id": {
      "type": "string",
      "example": "c9cf4c2c0165f48f494415390c3b49",
      "minLength": 25,
      "description": "Adjustment category id."
    }
  },
  "x-internal": true,
  "description": "Details of adjustment to create"
}
object AdjustmentToCreateContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/AdjustmentToCreate"
    }
  },
  "x-internal": true
}
object AdjustmentToUpdate
{
  "type": "object",
  "properties": {
    "file": {
      "type": "string",
      "format": "binary",
      "minLength": 1,
      "description": "File of adjustment."
    },
    "title": {
      "type": "string",
      "example": "Your title here",
      "maxLength": 255,
      "minLength": 3,
      "description": "Title of adjustment."
    },
    "amount": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        }
      ],
      "example": 100.25,
      "minimum": 1,
      "minLength": 1,
      "description": "Amount of adjustment."
    },
    "description": {
      "type": "string",
      "example": "Your description here",
      "maxLength": 255,
      "minLength": 3,
      "description": "Description of adjustment."
    }
  },
  "x-internal": true,
  "description": "Details of adjustment to update"
}
object AdjustmentToUpdateContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/AdjustmentToUpdate"
    }
  },
  "x-internal": true
}
object AdjustmentsCategoriesContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AdjustmentCategory"
      }
    }
  },
  "x-internal": true
}
object AdjustmentsContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/PayrollAdjustment"
      }
    }
  },
  "x-internal": true
}
object AdminUser
{
  "type": "object",
  "required": [
    "id",
    "first_name",
    "last_name",
    "email"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier",
      "nullable": false,
      "description": "Admin user profile id."
    },
    "email": {
      "type": "string",
      "format": "email",
      "description": "User's email"
    },
    "last_name": {
      "type": "string",
      "nullable": false,
      "description": "User's last name"
    },
    "first_name": {
      "type": "string",
      "nullable": false,
      "description": "User's first name"
    }
  }
}
object AdminUserCreateContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/AdminUserCreateRequest"
    }
  },
  "x-internal": true
}
object AdminUserCreateRequest
{
  "type": "object",
  "required": [
    "first_name",
    "last_name",
    "email"
  ],
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "nullable": false,
      "description": "User's email"
    },
    "last_name": {
      "type": "string",
      "nullable": false,
      "minLength": 1,
      "description": "User's last name"
    },
    "first_name": {
      "type": "string",
      "nullable": false,
      "minLength": 1,
      "description": "User's first name"
    }
  }
}
object AdminUsersContainer
{
  "type": "object",
  "required": [
    "data",
    "page"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AdminUser"
      }
    },
    "page": {
      "$ref": "#/components/schemas/PageInfoWithoutCursorNew"
    }
  },
  "x-internal": true
}
object Agreement
{
  "type": "object",
  "required": [
    "id",
    "agreement_title",
    "agreement_type",
    "msa",
    "client_legal_entity",
    "provider_legal_entity"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier",
      "nullable": false
    },
    "msa": {
      "type": "object",
      "required": [
        "id",
        "title"
      ],
      "properties": {
        "id": {
          "type": "string",
          "nullable": false
        },
        "title": {
          "type": "string",
          "nullable": false
        }
      }
    },
    "agreement_type": {
      "type": "string",
      "example": "shield",
      "nullable": false
    },
    "agreement_title": {
      "type": "string",
      "nullable": false
    },
    "client_legal_entity": {
      "type": "object",
      "required": [
        "id",
        "name"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier",
          "nullable": false
        },
        "name": {
          "type": "string",
          "nullable": false
        }
      }
    },
    "provider_legal_entity": {
      "type": "object",
      "required": [
        "id",
        "name"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier",
          "nullable": false
        },
        "name": {
          "type": "string",
          "example": "Deel Inc.",
          "nullable": false
        }
      }
    }
  },
  "x-internal": true
}
array AgreementList
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/Agreement"
  },
  "x-internal": true
}
object AgreementListContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/AgreementList"
    },
    "page": {
      "$ref": "#/components/schemas/PageInfoWithoutCursor"
    }
  },
  "x-internal": true
}
string AgreementsParamLimit
{
  "type": "string",
  "default": "50",
  "x-internal": true,
  "description": "Maximum number of records to return. This is supposed to be an integer but query parameters are string. Maximum is 50."
}
string AgreementsParamOffset
{
  "type": "string",
  "default": "0",
  "x-internal": true,
  "description": "Offset/index of record for the next page of records to return. This is supposed to be an integer but query parameters are string."
}
object AgreementsSearchForm
{
  "type": "object",
  "properties": {
    "limit": {
      "$ref": "#/components/schemas/AgreementsParamLimit"
    },
    "offset": {
      "$ref": "#/components/schemas/AgreementsParamOffset"
    },
    "contract_id": {
      "type": "string",
      "nullable": false
    }
  },
  "x-internal": true,
  "description": "Convenient model to encapsulate query parameters to get a list of agreements."
}
object AlternateEmailItem
{
  "type": "object",
  "title": "Root Schema",
  "required": [
    "email",
    "isVerified"
  ],
  "properties": {
    "email": {
      "$ref": "#/components/schemas/EmailType",
      "title": "Alternate email"
    },
    "isVerified": {
      "type": "boolean",
      "title": "True if email has been verified"
    }
  }
}
array AlternateEmailList
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/AlternateEmailItem"
  },
  "description": "List of alternate email addresses."
}
object ApiError
{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "example": "/data/type",
      "description": "The JSON path where input validation failed"
    },
    "message": {
      "type": "string",
      "example": "Must have required property 'example_field'",
      "description": "A description of the returned error"
    }
  },
  "x-internal": true
}
object ApiErrorContainer
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ApiError"
      }
    },
    "request": {
      "$ref": "#/components/schemas/ApiErrorRequest"
    }
  },
  "x-internal": true
}
object ApiErrorRequest
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "example": "/rest/v2/example",
      "description": "The relative URL of the failed request"
    },
    "code": {
      "type": "number",
      "example": 3,
      "description": "The code of the source handler which produced the returned error"
    },
    "docs": {
      "type": "string",
      "example": "https://developer.deel.com/reference/example",
      "description": "A link to the official documentation for the requested endpoint resource"
    },
    "method": {
      "type": "string",
      "example": "POST",
      "description": "The HTTP method of the failed request"
    },
    "source": {
      "type": "string",
      "example": "AJV",
      "description": "The source handler which produced the returned error"
    },
    "status": {
      "type": "number",
      "example": 400,
      "description": "The status code of the response"
    },
    "api_req_id": {
      "type": "string",
      "example": "00000000-0000-0000-0000-000000000000",
      "description": "The request ID of the failed request"
    }
  },
  "x-internal": true
}
object AttachmentFileRef
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "nullable": false,
      "description": "File URL to download the attachment."
    }
  },
  "x-internal": true
}
object AuthenticationScheme
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "specUrl": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "documentationUrl": {
      "type": "string"
    }
  }
}
object AuthenticationSchemes
{
  "type": "object",
  "properties": {
    "authenticationSchemes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AuthenticationScheme"
      }
    }
  }
}
object BankAccountAdded
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "dcc7b587-2246-4909-853e-12056e90c451",
      "description": "ID of Bank Account."
    },
    "status": {
      "$ref": "#/components/schemas/BankAccountStatus"
    },
    "created_at": {
      "$ref": "#/components/schemas/DateTimeString"
    },
    "updated_at": {
      "$ref": "#/components/schemas/DateTimeString"
    }
  },
  "x-internal": true
}
object BankAccountAddedContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/BankAccountAdded"
    }
  },
  "x-internal": true
}
object BankAccountGuide
{
  "type": "object",
  "required": [
    "key",
    "required"
  ],
  "properties": {
    "key": {
      "type": "string",
      "example": "countryCode",
      "description": "The key of the field."
    },
    "type": {
      "type": "string",
      "example": "text",
      "description": "Type of the field"
    },
    "label": {
      "type": "string",
      "example": "Country",
      "description": "Label for this field."
    },
    "required": {
      "type": "boolean",
      "example": true,
      "description": "Whether the field is required or not."
    },
    "validations": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ValidationType"
      }
    },
    "values_allowed": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/BankAccountValueAllowed"
      }
    }
  },
  "x-internal": true
}
object BankAccountGuideContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/BankAccountGuide"
      }
    }
  }
}
string BankAccountStatus
{
  "enum": [
    "new",
    "pending",
    "approved",
    "failed"
  ],
  "type": "string",
  "x-internal": true,
  "description": "Bank Account status"
}
array BankAccountToAdd
{
  "type": "array",
  "items": {
    "type": "object",
    "required": [
      "key",
      "value"
    ],
    "properties": {
      "key": {
        "type": "string",
        "description": "The key of the bank account properties."
      },
      "value": {
        "type": "string",
        "description": "The value for that key property."
      }
    }
  },
  "x-internal": true
}
object BankAccountToAddContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/BankAccountToAdd"
    }
  },
  "x-internal": true
}
object BankAccountUpdated
{
  "type": "object",
  "required": [
    "id",
    "status",
    "created_at",
    "updated_at"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "created_at": {
      "$ref": "#/components/schemas/DateTimeStringRequired"
    },
    "updated_at": {
      "$ref": "#/components/schemas/DateTimeStringRequired"
    }
  }
}
object BankAccountUpdatedContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/BankAccountUpdated"
    }
  }
}
object BankAccountValueAllowed
{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "example": "Argentina",
      "description": "The name of the allowed value."
    },
    "value": {
      "type": "string",
      "example": "AR",
      "description": "The key of the allowed value."
    }
  },
  "x-internal": true
}
object BankGuide
{
  "type": "object",
  "properties": {
    "key": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "required": {
      "type": "boolean"
    },
    "validations": {
      "type": "object",
      "properties": {
        "regex": {
          "type": "string"
        },
        "maxLength": {
          "type": "integer"
        },
        "minLength": {
          "type": "integer"
        }
      }
    },
    "values_allowed": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      }
    }
  }
}
object BasicContract
{
  "type": "object",
  "required": [
    "id",
    "title",
    "type",
    "status",
    "client",
    "worker",
    "invitations",
    "signatures",
    "is_shielded",
    "is_archived",
    "created_at",
    "termination_date"
  ],
  "properties": {
    "id": {
      "type": "string",
      "nullable": false,
      "minLength": 1
    },
    "type": {
      "$ref": "#/components/schemas/ContractTypeEnum"
    },
    "scale": {
      "type": "string",
      "nullable": true,
      "description": "The payment scale (e.g., hourly, weekly, monthly, etc.)"
    },
    "title": {
      "type": "string",
      "nullable": false,
      "minLength": 1
    },
    "client": {
      "$ref": "#/components/schemas/ClientOfBasicContract"
    },
    "status": {
      "$ref": "#/components/schemas/ContractStatusEnum"
    },
    "worker": {
      "$ref": "#/components/schemas/WorkerOfBasicContract"
    },
    "created_at": {
      "$ref": "#/components/schemas/DateTimeString"
    },
    "signatures": {
      "$ref": "#/components/schemas/SignaturesOfBasicContract"
    },
    "external_id": {
      "type": "string",
      "nullable": true,
      "description": "A unique identifier for the object provided by an external system."
    },
    "invitations": {
      "$ref": "#/components/schemas/InvitationsOfBasicContract"
    },
    "is_archived": {
      "type": "boolean"
    },
    "is_shielded": {
      "type": "boolean"
    },
    "who_reports": {
      "$ref": "#/components/schemas/ContractWhoReportsEnum"
    },
    "notice_period": {
      "$ref": "#/components/schemas/NoticePeriod"
    },
    "termination_date": {
      "$ref": "#/components/schemas/DateTimeString"
    }
  },
  "x-internal": true
}
object BasicInvoiceAdjustment
{
  "type": "object",
  "required": [
    "id",
    "type",
    "status",
    "description",
    "date_submitted",
    "created_at",
    "currency_code",
    "quantity",
    "total_amount",
    "contract",
    "worksheet",
    "reported_by",
    "reviewed_by",
    "payment_cycle",
    "attachment"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier"
    },
    "type": {
      "$ref": "#/components/schemas/InvoiceAdjustmentTypeEnum"
    },
    "scale": {
      "type": "string",
      "example": "custom",
      "nullable": true
    },
    "status": {
      "$ref": "#/components/schemas/InvoiceAdjustmentStatusEnum"
    },
    "contract": {
      "type": "object",
      "required": [
        "id",
        "title",
        "type"
      ],
      "properties": {
        "id": {
          "type": "string",
          "nullable": false
        },
        "type": {
          "$ref": "#/components/schemas/ContractTypeEnum"
        },
        "title": {
          "type": "string",
          "nullable": false
        }
      }
    },
    "quantity": {
      "type": "number",
      "example": 1,
      "nullable": true
    },
    "worksheet": {
      "type": "object",
      "nullable": true,
      "required": [
        "weeks",
        "days",
        "hours",
        "minutes"
      ],
      "properties": {
        "days": {
          "type": "number",
          "example": 0,
          "minimum": 0
        },
        "hours": {
          "type": "number",
          "example": 1,
          "minimum": 0
        },
        "weeks": {
          "type": "number",
          "example": 0,
          "minimum": 0
        },
        "minutes": {
          "type": "number",
          "example": 0,
          "minimum": 0
        }
      }
    },
    "attachment": {
      "$ref": "#/components/schemas/FileAttachmentInfo"
    },
    "created_at": {
      "$ref": "#/components/schemas/DateTimeStringRequired"
    },
    "invoice_id": {
      "type": "number",
      "nullable": true
    },
    "description": {
      "type": "string",
      "nullable": false
    },
    "reported_by": {
      "type": "object",
      "nullable": false,
      "required": [
        "id",
        "full_name"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier"
        },
        "full_name": {
          "type": "string",
          "example": "John Smith",
          "nullable": false
        }
      }
    },
    "reviewed_by": {
      "type": "object",
      "nullable": true,
      "required": [
        "id",
        "full_name",
        "reviewed_at",
        "remarks"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier"
        },
        "remarks": {
          "type": "string",
          "nullable": false
        },
        "full_name": {
          "type": "string",
          "example": "Jane Smith"
        },
        "reviewed_at": {
          "type": "string",
          "example": "2022-05-04T03:45:27.899Z"
        }
      }
    },
    "custom_scale": {
      "type": "string",
      "nullable": true
    },
    "total_amount": {
      "type": "string",
      "example": "200.0000",
      "nullable": false
    },
    "currency_code": {
      "$ref": "#/components/schemas/CurrencyCodeRequired"
    },
    "payment_cycle": {
      "type": "object",
      "nullable": false,
      "required": [
        "start_date",
        "end_date"
      ],
      "properties": {
        "end_date": {
          "$ref": "#/components/schemas/DateTimeStringRequired"
        },
        "start_date": {
          "$ref": "#/components/schemas/DateTimeStringRequired"
        }
      }
    },
    "date_submitted": {
      "$ref": "#/components/schemas/DateTimeStringRequired"
    }
  },
  "x-internal": true
}
object BasicLegalEntity
{
  "type": "object",
  "required": [
    "id",
    "name",
    "entity_type",
    "entity_subtype"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier"
    },
    "name": {
      "type": "string",
      "nullable": false
    },
    "country": {
      "type": "string",
      "nullable": false
    },
    "entity_type": {
      "$ref": "#/components/schemas/LegalEntityType"
    },
    "entity_subtype": {
      "$ref": "#/components/schemas/LegalEntitySubType"
    }
  },
  "x-internal": true
}
object BasicOrganization
{
  "type": "object",
  "required": [
    "id",
    "name"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier"
    },
    "name": {
      "type": "string",
      "nullable": false,
      "minLength": 1
    }
  },
  "x-internal": true
}
object BasicTeam
{
  "type": "object",
  "required": [
    "id",
    "name"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier"
    },
    "name": {
      "type": "string",
      "nullable": false,
      "minLength": 1
    }
  },
  "x-internal": true
}
object BasicTimesheet
{
  "type": "object",
  "required": [
    "id",
    "type",
    "status",
    "description",
    "date_submitted",
    "created_at",
    "currency_code",
    "total_amount",
    "quantity",
    "contract",
    "worksheet",
    "reported_by",
    "reviewed_by",
    "attachment"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier"
    },
    "type": {
      "type": "string",
      "description": "Deprecated - it is always \"work\""
    },
    "scale": {
      "type": "string",
      "example": "custom",
      "nullable": true
    },
    "status": {
      "$ref": "#/components/schemas/TimesheetStatusEnum"
    },
    "contract": {
      "type": "object",
      "required": [
        "id",
        "title",
        "type"
      ],
      "properties": {
        "id": {
          "type": "string",
          "nullable": false
        },
        "type": {
          "$ref": "#/components/schemas/ContractTypeEnum"
        },
        "title": {
          "type": "string",
          "nullable": false
        }
      }
    },
    "quantity": {
      "type": "number",
      "example": 1,
      "nullable": true
    },
    "worksheet": {
      "type": "object",
      "nullable": true,
      "required": [
        "weeks",
        "days",
        "hours",
        "minutes"
      ],
      "properties": {
        "days": {
          "type": "number",
          "example": 0,
          "minimum": 0
        },
        "hours": {
          "type": "number",
          "example": 1,
          "minimum": 0
        },
        "weeks": {
          "type": "number",
          "example": 0,
          "minimum": 0
        },
        "minutes": {
          "type": "number",
          "example": 0,
          "minimum": 0
        }
      }
    },
    "attachment": {
      "$ref": "#/components/schemas/FileAttachmentInfo"
    },
    "created_at": {
      "type": "string",
      "example": "2022-05-04T03:45:27.108Z",
      "nullable": false
    },
    "description": {
      "type": "string",
      "nullable": false
    },
    "reported_by": {
      "type": "object",
      "nullable": false,
      "required": [
        "id",
        "full_name"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier"
        },
        "full_name": {
          "type": "string",
          "example": "John Smith",
          "nullable": false
        }
      }
    },
    "reviewed_by": {
      "type": "object",
      "nullable": true,
      "required": [
        "id",
        "full_name",
        "reviewed_at",
        "remarks"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier"
        },
        "remarks": {
          "type": "string",
          "nullable": false
        },
        "full_name": {
          "type": "string",
          "example": "Jane Smith"
        },
        "reviewed_at": {
          "type": "string",
          "example": "2022-05-04T03:45:27.899Z"
        }
      }
    },
    "custom_scale": {
      "type": "string",
      "nullable": true
    },
    "total_amount": {
      "type": "string",
      "example": "200.0000",
      "nullable": false,
      "description": "is equal to quantity times rate of active work statement + bonus in this record"
    },
    "currency_code": {
      "$ref": "#/components/schemas/CurrencyCodeRequired"
    },
    "payment_cycle": {
      "type": "object",
      "properties": {
        "end_date": {
          "$ref": "#/components/schemas/DateTimeString"
        },
        "start_date": {
          "$ref": "#/components/schemas/DateTimeString"
        }
      }
    },
    "date_submitted": {
      "$ref": "#/components/schemas/DateTimeStringRequired"
    }
  },
  "x-internal": true
}
string BenefitContributionStatusEnum
{
  "enum": [
    "MANDATORY",
    "OPTIONAL",
    "UNAVAILABLE"
  ],
  "type": "string"
}
string BenefitContributionTypeEnum
{
  "enum": [
    "PERCENTAGE",
    "FIXED_AMOUNT",
    "MATCH"
  ],
  "type": "string"
}

Versions

Version Endpoints Schemas Ingested Status
1.25.0 153 508 2026-05-11 current
1.25.0 153 508 2026-04-16