Query structured spec data via REST or MCP. Get exactly what your agent needs.
https://api.letsdeel.com/rest/v2
https://api-staging.letsdeel.com/rest/v2
/invoices
Retrieve a list of paid invoices for your workforce.
| 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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /invoices
/invoices/deel
Retrieve a list of invoices related to Deel fees.
| 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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /invoices/deel
/invoices/{invoice_id}/download
Get link to download the invoice PDF.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| invoice_id | path | optional | string | ID of an existing invoice |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /invoices/{invoice_id}/download
/payments
Retrieve a list of payments made to Deel.
| 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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /payments
/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.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| payment_id | path | required | string | — |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /payments/{payment_id}/breakdown
/adjustments
Create a new adjustment.
Creation data for a new adjustment
multipart/form-data
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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /adjustments
/adjustments/categories
Get all categories for your organization.
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /adjustments/categories
/adjustments/{adjustment_id}
Delete an adjustment.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| adjustment_id | path | optional | string | Adjustment id. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
DELETE /adjustments/{adjustment_id}
/adjustments/{adjustment_id}
Retrieve an adjustment.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| adjustment_id | path | optional | string | Adjustment id. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /adjustments/{adjustment_id}
/adjustments/{adjustment_id}
Update an adjustment.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| adjustment_id | path | optional | string | Adjustment id. |
Adjustment object that needs to be updated
application/json
AdjustmentToUpdateContainer
| Property | Type | Required |
|---|---|---|
| data | object | required |
| └ file | string | optional |
| └ title | string | optional |
| └ amount | object | optional |
| └ description | string | optional |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
PATCH /adjustments/{adjustment_id}
/contracts/{contract_id}/adjustments
Get all adjustments for the specific contract.
| 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. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /contracts/{contract_id}/adjustments
/attachments
Upload file to Deel storage to use the file attachment feature for other endpoints.
File info object that needs to be created.
application/json
InputToCreateFileRef
| Property | Type | Required |
|---|---|---|
| data | object | required |
| └ content_type | string | required |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /attachments
/candidates
Add a candidate to Deel.
Add a candidate to Deel
application/json
CandidateToCreateContainer
| Property | Type | Required |
|---|---|---|
| data | object | required |
| └ id | string | required |
| └ link | string | required |
| 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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /candidates
/candidates/{candidate_id}
Update an existed candidate.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| candidate_id | path | optional | string | Candidate id. |
Update an existed candidate
application/json
CandidateToPatchContainer
| Property | Type | Required |
|---|---|---|
| data | object | required |
| └ link | string | optional |
| 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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
PATCH /candidates/{candidate_id}
/contracts
Create a new Deel contract.
Contract object that needs to be created
application/json
ContractToCreateContainer
| Property | Type | Required |
|---|---|---|
| data | object | required |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /contracts
/contracts/fixed-rate
Contract object that needs to be created
application/json
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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /contracts/fixed-rate
/contracts/milestone-based
Contract object that needs to be created
application/json
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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /contracts/milestone-based
/contracts/task-based
Contract object that needs to be created
application/json
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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /contracts/task-based
/contracts/time-based
Contract object that needs to be created
application/json
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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /contracts/time-based
/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.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contract_id | path | optional | string | Deel contract id. |
Contract object that needs to be amended
application/json
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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /contracts/{contract_id}/amendments
/contracts/{contract_id}/premium
Remove Deel Premium from an existing contract.
| 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. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
DELETE /contracts/{contract_id}/premium
/contracts/{contract_id}/premium
Add additional protection against misclassification by upgrading to Deel Premium.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contract_id | path | optional | string | Deel contract id. |
Answers for assessment in order to find eligibility for Deel Premium.
application/json
PremiumToAddContainer
| Property | Type | Required |
|---|---|---|
| data | object | required |
| └ contractor_characteristics | boolean | required |
| └ agreement_reflects_relation | boolean | required |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /contracts/{contract_id}/premium
/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.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contract_id | path | optional | string | Deel contract id. |
| templateId | query | optional | string | ID of an existing contract template. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /contracts/{contract_id}/preview
/contracts/{contract_id}/terminations
Terminate an active contract.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contract_id | path | optional | string | Deel contract id. |
Contract that needs to be terminated and when.
application/json
ContractToTerminateContainer
| Property | Type | Required |
|---|---|---|
| data | object | required |
| └ message | string | optional |
| └ terminate_now | boolean | optional |
| └ completion_date | string | optional |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /contracts/{contract_id}/terminations
/contract-templates
Retrieve a list of contract templates in your organization.
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /contract-templates
/contracts
Retrieve a list of contracts.
| 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. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /contracts
/contracts/estimate
First payment is calculated from the number of working/calendar days between their start date and the start of the payment cycle.
Pro-rata payment object that needs to estimated payment
application/json
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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /contracts/estimate
/contracts/{contract_id}
Retrieve a single contract.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contract_id | path | optional | string | Deel contract id. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /contracts/{contract_id}
/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.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contract_id | path | optional | string | Deel contract id. |
Contract object that needs to be created
application/json
InputToPatchContractExternalId
| Property | Type | Required |
|---|---|---|
| data | object | required |
| └ external_id | string | required |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
PATCH /contracts/{contract_id}
/contracts/{contract_id}/alternate_emails
Returns an array of alternate email objects
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contract_id | path | optional | string | Deel contract id. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /contracts/{contract_id}/alternate_emails
/contracts/{contract_id}/documents
Attach a file to contract document.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contract_id | path | optional | string | Deel contract id. |
A form to attach a file to contract document.
multipart/form-data
FileObject
| Property | Type | Required |
|---|---|---|
| file | string | optional |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /contracts/{contract_id}/documents
/contracts/{contract_id}/documents
Overwrite the file currently attached to contract document.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contract_id | path | optional | string | Deel contract id. |
A form to attach a file to contract document.
multipart/form-data
FileObject
| Property | Type | Required |
|---|---|---|
| file | string | optional |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
PUT /contracts/{contract_id}/documents
/contracts/{contract_id}/final-payments
Calculate the final payment due to the contractor when ending the contract.
| 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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /contracts/{contract_id}/final-payments
/contracts/{contract_id}/invitations
Remove invite in order to re-invite a worker to sign the contract.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contract_id | path | optional | string | Deel contract id. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
DELETE /contracts/{contract_id}/invitations
/contracts/{contract_id}/invitations
Invite a worker to sign the contract. Worker will be notified via email.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contract_id | path | optional | string | Deel contract id. |
Contract invitation object that needs to be created
application/json
ContractInvitationToCreateContainer
| Property | Type | Required |
|---|---|---|
| data | object | required |
| string | required | |
| └ message | string | required |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /contracts/{contract_id}/invitations
/contracts/{contract_id}/signatures
Sign a contract as a client.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contract_id | path | optional | string | Deel contract id. |
Contract signature object that needs to be created
application/json
ContractSignatureToCreateContainer
| Property | Type | Required |
|---|---|---|
| data | object | required |
| └ client_signature | string | required |
| └ contract_template_id | number | optional |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /contracts/{contract_id}/signatures
/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.
Employee (eor) contract object that needs to be created
application/json
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 |
| 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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /eor
/eor/employment_cost
Determine EOR employee costs across the globe.
Information to use in the EOR employeeCost calculation.
application/json
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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /eor/employment_cost
/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.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| country_code | path | optional | Country code. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /eor/validations/{country_code}
/eor/workers/{worker_id}/payslips
Get of payslips for an employee.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| worker_id | path | optional | string | Unique identifier for a worker. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /eor/workers/{worker_id}/payslips
/eor/workers/{worker_id}/payslips/{payslip_id}/download
Get download url for EOR payslip.
| 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. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /eor/workers/{worker_id}/payslips/{payslip_id}/download
/eor/{contract_id}/benefits
Retrieve EOR contract benefits
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contract_id | path | optional | string | Deel contract id. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /eor/{contract_id}/benefits
/contracts/gp
Create a Global Payroll contract.
Global Payroll (GP) contract object that needs to be created
application/json
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 |
| 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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /contracts/gp
/gp/legal-entities/{legal_entity_id}/reports
Get list of global payroll events by legal entities.
| 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. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /gp/legal-entities/{legal_entity_id}/reports
/gp/reports/{gp_report_id}/gross_to_net
Get list of global payroll reports detailing gross-to-net calculations.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| gp_report_id | path | optional | string | Id of gp report. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /gp/reports/{gp_report_id}/gross_to_net
/gp/reports/{gp_report_id}/gross_to_net/csv
Download global payroll reports detailing gross-to-net calculations.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| gp_report_id | path | optional | string | Id of gp report. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /gp/reports/{gp_report_id}/gross_to_net/csv
/gp/workers/{worker_id}/address
Update the address of a Global Payroll employee.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| worker_id | path | optional | string | Unique identifier for a worker. |
The desired address of the Global Payroll employee
application/json
GPEmployeeAddressToUpdateContainer
| Property | Type | Required |
|---|---|---|
| data | object | required |
| └ zip | string | optional |
| └ city | string | optional |
| └ street | string | optional |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
PATCH /gp/workers/{worker_id}/address
/gp/workers/{worker_id}/banks
Retrieve all bank accounts for an employee.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| worker_id | path | optional | string | Unique identifier for a worker. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /gp/workers/{worker_id}/banks
/gp/workers/{worker_id}/banks
Add a new bank account for an employee.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| worker_id | path | optional | string | Unique identifier for a worker. |
Request body to add new bank account for employee
application/json
AddWorkerBankAccountContainer
| Property | Type | Required |
|---|---|---|
| data | object | required |
| └ city | string | optional |
| └ iban | string | optional |
| 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 |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
POST /gp/workers/{worker_id}/banks
/gp/workers/{worker_id}/banks/guide
Retrieve the bank form guide for employee.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| worker_id | path | optional | string | Unique identifier for a worker. |
Successful operation.
Operation failed.
Operation failed.
Operation failed.
Operation failed.
GET /gp/workers/{worker_id}/banks/guide
AddWorkerBankAccountContainer
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"$ref": "#/components/schemas/WorkerBankAccountToAdd"
}
},
"x-internal": true
}
AdditionalEORInfo
{
"description": "Fields for country validation mandatory found at `/eor/validations/{country_code}`."
}
AdditionalEORInfoContainer
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"$ref": "#/components/schemas/AdditionalEORInfo"
}
},
"x-internal": true
}
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."
}
}
}
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."
}
}
}
AdjustmentCreatedContainer
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"$ref": "#/components/schemas/PayrollAdjustment"
}
},
"x-internal": true
}
AdjustmentStatusEnum
{
"enum": [
"open",
"pending_approval",
"overwritten",
"failed",
"success"
],
"type": "string",
"x-internal": true,
"description": "Adjustment status"
}
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"
}
AdjustmentToCreateContainer
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"$ref": "#/components/schemas/AdjustmentToCreate"
}
},
"x-internal": true
}
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"
}
AdjustmentToUpdateContainer
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"$ref": "#/components/schemas/AdjustmentToUpdate"
}
},
"x-internal": true
}
AdjustmentsCategoriesContainer
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AdjustmentCategory"
}
}
},
"x-internal": true
}
AdjustmentsContainer
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PayrollAdjustment"
}
}
},
"x-internal": true
}
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"
}
}
}
AdminUserCreateContainer
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"$ref": "#/components/schemas/AdminUserCreateRequest"
}
},
"x-internal": true
}
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"
}
}
}
AdminUsersContainer
{
"type": "object",
"required": [
"data",
"page"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AdminUser"
}
},
"page": {
"$ref": "#/components/schemas/PageInfoWithoutCursorNew"
}
},
"x-internal": true
}
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
}
AgreementList
{
"type": "array",
"items": {
"$ref": "#/components/schemas/Agreement"
},
"x-internal": true
}
AgreementListContainer
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"$ref": "#/components/schemas/AgreementList"
},
"page": {
"$ref": "#/components/schemas/PageInfoWithoutCursor"
}
},
"x-internal": true
}
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."
}
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."
}
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."
}
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"
}
}
}
AlternateEmailList
{
"type": "array",
"items": {
"$ref": "#/components/schemas/AlternateEmailItem"
},
"description": "List of alternate email addresses."
}
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
}
ApiErrorContainer
{
"type": "object",
"properties": {
"errors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ApiError"
}
},
"request": {
"$ref": "#/components/schemas/ApiErrorRequest"
}
},
"x-internal": true
}
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
}
AttachmentFileRef
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"nullable": false,
"description": "File URL to download the attachment."
}
},
"x-internal": true
}
AuthenticationScheme
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"specUrl": {
"type": "string"
},
"description": {
"type": "string"
},
"documentationUrl": {
"type": "string"
}
}
}
AuthenticationSchemes
{
"type": "object",
"properties": {
"authenticationSchemes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AuthenticationScheme"
}
}
}
}
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
}
BankAccountAddedContainer
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"$ref": "#/components/schemas/BankAccountAdded"
}
},
"x-internal": true
}
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
}
BankAccountGuideContainer
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BankAccountGuide"
}
}
}
}
BankAccountStatus
{
"enum": [
"new",
"pending",
"approved",
"failed"
],
"type": "string",
"x-internal": true,
"description": "Bank Account status"
}
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
}
BankAccountToAddContainer
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"$ref": "#/components/schemas/BankAccountToAdd"
}
},
"x-internal": true
}
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"
}
}
}
BankAccountUpdatedContainer
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"$ref": "#/components/schemas/BankAccountUpdated"
}
}
}
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
}
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"
}
}
}
}
}
}
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
}
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
}
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
}
BasicOrganization
{
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"$ref": "#/components/schemas/UniqueObjectIdentifier"
},
"name": {
"type": "string",
"nullable": false,
"minLength": 1
}
},
"x-internal": true
}
BasicTeam
{
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"$ref": "#/components/schemas/UniqueObjectIdentifier"
},
"name": {
"type": "string",
"nullable": false,
"minLength": 1
}
},
"x-internal": true
}
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
}
BenefitContributionStatusEnum
{
"enum": [
"MANDATORY",
"OPTIONAL",
"UNAVAILABLE"
],
"type": "string"
}
BenefitContributionTypeEnum
{
"enum": [
"PERCENTAGE",
"FIXED_AMOUNT",
"MATCH"
],
"type": "string"
}
| Version | Endpoints | Schemas | Ingested | Status |
|---|---|---|---|---|
| 1.25.0 | 153 | 508 | 2026-05-11 | current |
| 1.25.0 | 153 | 508 | 2026-04-16 |