Download OpenAPI specification:Download
This event is triggered when an offboarding request is done.
Deprecated since April 2024 in favour of offboarding.submitted_to_payroll webhook.
event_type required | string |
employment_id required | string |
offboarding_request_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "offboarding.done",
- "offboarding_request_id": "0073fcb5-b669-4e4a-b963-2a47744e75a1"
}
This event is triggered when an offboarding request is completed.
event_type required | string |
employment_id required | string |
offboarding_request_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "offboarding.completed",
- "offboarding_request_id": "0073fcb5-b669-4e4a-b963-2a47744e75a1"
}
This event is triggered when an offboarding request has been submitted to payroll.
event_type required | string |
employment_id required | string |
offboarding_request_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "offboarding.submitted_to_payroll",
- "offboarding_request_id": "0073fcb5-b669-4e4a-b963-2a47744e75a1"
}
This event is triggered whenever an offboarding request starts being reviewed.
event_type required | string |
employment_id required | string |
offboarding_request_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "offboarding.review_started",
- "offboarding_request_id": "ba310525-9282-40c9-8977-14d844bf891a"
}
This event is triggered whenever an offboarding request is deleted.
event_type required | string |
employment_id required | string |
offboarding_request_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "offboarding.deleted",
- "offboarding_request_id": "ba310525-9282-40c9-8977-14d844bf891a"
}
This event is triggered when an offboarding request is submitted.
event_type required | string |
employment_id required | string |
offboarding_request_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "offboarding.submitted",
- "offboarding_request_id": "0073fcb5-b669-4e4a-b963-2a47744e75a1"
}
Lists Offboarding requests.
employment_id | string Example: employment_id=93t3j-employment-id-9suej43 Filter by Employment ID |
type | string Example: type=paid Filter by offboarding type |
include_confidential | string Example: include_confidential=true By default, the results do not include confidential termination requests.
Send |
page | integer Example: page=1 Starts fetching records after the given page |
page_size | integer Example: page_size=30 Change the amount of records returned per page, defaults to 20, limited to 100 |
{- "current_page": 1,
- "offboardings": [
- {
- "additional_comments": "",
- "agrees_to_pto_amount": "true",
- "confidential": false,
- "employee_awareness": {
- "date": "2023-12-12",
- "note": "optional text to add details"
}, - "employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
- "id": "ba310525-9282-40c9-8977-14d844bf891a",
- "proposed_termination_date": "2023-12-20",
- "requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
- "risk_assessment_reasons": [
- "pregnant_or_breastfeeding",
- "family_leave"
], - "status": "submitted",
- "submitted_at": "2023-04-13T13:35:06Z",
- "termination_date": "2023-12-20",
- "termination_reason": "workforce_reduction",
- "type": "termination",
- "will_challenge_termination": true,
- "will_challenge_termination_description": "additional details for the offboarding risk assessment"
}
], - "total_count": 1,
- "total_pages": 1
}
Creates an Offboarding request.
Offboarding
employment_id required | string |
required | object (TerminationDetailsParams) |
type required | string Value: "termination" The type of the offboarding request. For now, only |
{- "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "termination_details": {
- "additional_comments": "additional comments regarding the termination reason",
- "confidential": false,
- "employee_awareness": {
- "date": "2023-12-12",
- "note": "optional text to add details"
}, - "proposed_termination_date": "2023-12-20",
- "reason_description": "termination reason",
- "risk_assessment_reasons": [
- "pregnant_or_breastfeeding",
- "family_leave"
], - "termination_reason": "workforce_reduction",
- "termination_reason_files": [
- {
- "content": "UGVyaW9kIEVuZCBEYXRlLFBheSBEYXRlLEVtcG...5jZSBPZiBSZXNpZGVuYdXJyZW50LEFsbG93",
- "name": "termination_letter.pdf"
}
], - "will_challenge_termination": true,
- "will_challenge_termination_description": "additional details for the offboarding risk assessment"
}, - "type": "termination"
}
{- "data": {
- "offboarding": {
- "additional_comments": "",
- "agrees_to_pto_amount": "true",
- "confidential": false,
- "employee_awareness": {
- "date": "2023-12-12",
- "note": "optional text to add details"
}, - "employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
- "id": "ba310525-9282-40c9-8977-14d844bf891a",
- "proposed_termination_date": "2023-12-20",
- "requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
- "risk_assessment_reasons": [
- "pregnant_or_breastfeeding",
- "family_leave"
], - "status": "submitted",
- "submitted_at": "2023-04-13T13:35:06Z",
- "termination_date": "2023-12-20",
- "termination_reason": "workforce_reduction",
- "type": "termination",
- "will_challenge_termination": true,
- "will_challenge_termination_description": "additional details for the offboarding risk assessment"
}
}
}
Shows an Offboarding request.
id required | string Offboarding request ID |
{- "data": {
- "offboarding": {
- "additional_comments": "",
- "agrees_to_pto_amount": "true",
- "confidential": false,
- "employee_awareness": {
- "date": "2023-12-12",
- "note": "optional text to add details"
}, - "employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
- "id": "ba310525-9282-40c9-8977-14d844bf891a",
- "proposed_termination_date": "2023-12-20",
- "requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
- "risk_assessment_reasons": [
- "pregnant_or_breastfeeding",
- "family_leave"
], - "status": "submitted",
- "submitted_at": "2023-04-13T13:35:06Z",
- "termination_date": "2023-12-20",
- "termination_reason": "workforce_reduction",
- "type": "termination",
- "will_challenge_termination": true,
- "will_challenge_termination_description": "additional details for the offboarding risk assessment"
}
}
}
This event is triggered whenever an incentive is deleted.
event_type required | string |
employment_id required | string |
incentive_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "incentive.deleted",
- "incentive_id": "129d02bc-dd6a-11ed-ac99-cb057df06a33"
}
This event is triggered whenever an incentive is updated.
event_type required | string |
employment_id required | string |
incentive_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "incentive.updated",
- "incentive_id": "129d02bc-dd6a-11ed-ac99-cb057df06a33"
}
This event is triggered whenever an incentive is paid
event_type required | string |
employment_id required | string |
incentive_id required | string |
{- "employment_id": "2610f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "incentive.paid",
- "incentive_id": "0078fcb5-b669-4e4a-b963-2a47744e75a1"
}
This event is triggered when an incentive is created
event_type | string |
employment_id | string |
incentive_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "incentive.created",
- "incentive_id": "129d02bc-dd6a-11ed-ac99-cb057df06a33"
}
This event is triggered when an incentive has its processing started
event_type | string |
employment_id | string |
incentive_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "incentive.processing_started",
- "incentive_id": "129d02bc-dd6a-11ed-ac99-cb057df06a33"
}
Lists all Incentives of a company
employment_id | string Example: employment_id=93t3j-employment-id-9suej43 Filter by Employment ID |
status | string Example: status=paid Filter by Incentive status |
recurring_incentive_id | string Example: recurring_incentive_id=2f900aaf-4952-4ec4-ac7c-2b917a2b4da9 Filter by Recurring Incentive id |
page | integer Example: page=1 Starts fetching records after the given page |
page_size | integer Example: page_size=30 Change the amount of records returned per page, defaults to 20, limited to 100 |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "current_page": 1,
- "incentives": [
- {
- "amount": 50000,
- "amount_tax_type": "net",
- "effective_date": "2021-12-20",
- "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "expected_payout_date": "2021-12-31",
- "id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "note": "Signing bonus",
- "recurring_incentive_id": "1c130827-f95c-4495-b7cb-5876dce686b8",
- "status": "pending",
- "type": "signing_bonus"
}
], - "total_count": 1,
- "total_pages": 1
}
Creates an Incentive.
Incentives use the currency of the employment specified provided in the employment_id
field.
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Incentive
amount required | integer The amount (in the currency of the employment) to be given to the employee. This field accepts fractional amounts as well. However to avoid precision issues and errors that can arise from storing fractional amounts, the Remote API only accepts currencies and their fractional amounts as integers. This means you should append fractional amounts to the end of the amount you're passing in with this field. For example, if the incentive you're offering is EUR 500.25, you would specify |
amount_tax_type required | string (AmountTaxType) Enum: "gross" "net" Whether the amount given accounts for taxes or not. |
effective_date required | string <date> The date at which the incentive should take effect. Note that the incentive is not paid out on the effective date, but during the next payroll cycle. The effective date determines which payroll cycle the incentive will be paid out in. The effective date needs to be today or a future date. Note for recurring incentives: since the months don't have the same amount of days,
if day of month of |
note | string or null |
employment_id required | string |
type required | string Enum: "acting_up_allowance" "allowance" "car_allowance" "health_and_wellness_allowance" "internet_allowance" "meal_allowance" "on_call_allowance" "parenthood_allowance" "phone_allowance" "relocation_allowance" "travel_allowance" "work_from_home_allowance" "bonus" "holiday_bonus" "referral_bonus" "retention_bonus" "commission" "other" "overtime" "stipend" "signing_bonus" |
{- "amount": 50000,
- "amount_tax_type": "net",
- "effective_date": "2021-12-20",
- "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "note": "Bonus for moving start date to an earlier date",
- "type": "signing_bonus"
}
{- "data": {
- "incentive": {
- "amount": 50000,
- "amount_tax_type": "net",
- "effective_date": "2021-12-20",
- "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "expected_payout_date": "2021-12-31",
- "id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "note": "Signing bonus",
- "recurring_incentive_id": "1c130827-f95c-4495-b7cb-5876dce686b8",
- "status": "pending",
- "type": "signing_bonus"
}
}
}
Delete an incentive.
one_time
incentives that have the following status CANNOT be deleted:
processing
paid
id required | string Incentive ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "data": {
- "status": "ok"
}
}
Show an Incentive's details
id required | string Incentive ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "data": {
- "incentive": {
- "amount": 50000,
- "amount_tax_type": "net",
- "effective_date": "2021-12-20",
- "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "expected_payout_date": "2021-12-31",
- "id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "note": "Signing bonus",
- "recurring_incentive_id": "1c130827-f95c-4495-b7cb-5876dce686b8",
- "status": "pending",
- "type": "signing_bonus"
}
}
}
Updates an Incentive.
Incentives use the currency of the employment specified provided in the employment_id
field.
The API doesn't support updating paid incentives.
id required | string Incentive ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Incentive
amount | integer The amount (in the currency of the employment) to be given to the employee. This field accepts fractional amounts as well. However to avoid precision issues and errors that can arise from storing fractional amounts, the Remote API only accepts currencies and their fractional amounts as integers. This means you should append fractional amounts to the end of the amount you're passing in with this field. For example, if the incentive you're offering is EUR 500.25, you would specify |
amount_tax_type | string (AmountTaxType) Enum: "gross" "net" Whether the amount given accounts for taxes or not. |
effective_date | string <date> The date at which the incentive should take effect. Note that the incentive is not paid out on the effective date, but during the next payroll cycle. The effective date determines which payroll cycle the incentive will be paid out in. The effective date needs to be today or a future date. Note for recurring incentives: since the months don't have the same amount of days,
if day of month of |
note | string or null |
type | string A valid type according to the payment frequency |
{- "amount": 50000,
- "amount_tax_type": "net",
- "effective_date": "2021-12-20",
- "note": "Bonus for moving start date to an earlier date",
- "type": "signing_bonus"
}
{- "data": {
- "incentive": {
- "amount": 50000,
- "amount_tax_type": "net",
- "effective_date": "2021-12-20",
- "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "expected_payout_date": "2021-12-31",
- "id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "note": "Signing bonus",
- "recurring_incentive_id": "1c130827-f95c-4495-b7cb-5876dce686b8",
- "status": "pending",
- "type": "signing_bonus"
}
}
}
Updates an Incentive.
Incentives use the currency of the employment specified provided in the employment_id
field.
The API doesn't support updating paid incentives.
id required | string Incentive ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Incentive
amount | integer The amount (in the currency of the employment) to be given to the employee. This field accepts fractional amounts as well. However to avoid precision issues and errors that can arise from storing fractional amounts, the Remote API only accepts currencies and their fractional amounts as integers. This means you should append fractional amounts to the end of the amount you're passing in with this field. For example, if the incentive you're offering is EUR 500.25, you would specify |
amount_tax_type | string (AmountTaxType) Enum: "gross" "net" Whether the amount given accounts for taxes or not. |
effective_date | string <date> The date at which the incentive should take effect. Note that the incentive is not paid out on the effective date, but during the next payroll cycle. The effective date determines which payroll cycle the incentive will be paid out in. The effective date needs to be today or a future date. Note for recurring incentives: since the months don't have the same amount of days,
if day of month of |
note | string or null |
type | string A valid type according to the payment frequency |
{- "amount": 50000,
- "amount_tax_type": "net",
- "effective_date": "2021-12-20",
- "note": "Bonus for moving start date to an earlier date",
- "type": "signing_bonus"
}
{- "data": {
- "incentive": {
- "amount": 50000,
- "amount_tax_type": "net",
- "effective_date": "2021-12-20",
- "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "expected_payout_date": "2021-12-31",
- "id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "note": "Signing bonus",
- "recurring_incentive_id": "1c130827-f95c-4495-b7cb-5876dce686b8",
- "status": "pending",
- "type": "signing_bonus"
}
}
}
This event is triggered whenever a contract amendment request status is updated to 'in review'.
event_type required | string |
employment_id required | string |
employment_request_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "employment_request_id": "129d02bc-dd6a-11ed-ac99-cb057df06a33",
- "event_type": "contract_amendment.review_started"
}
This event is triggered whenever a contract amendment status is updated to done.
event_type required | string |
employment_id required | string |
employment_request_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "employment_request_id": "129d02bc-dd6a-11ed-ac99-cb057df06a33",
- "event_type": "contract_amendment.done"
}
This event is triggered whenever a contract amendment request status is updated to canceled.
event_type required | string |
employment_id required | string |
employment_request_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "employment_request_id": "129d02bc-dd6a-11ed-ac99-cb057df06a33",
- "event_type": "contract_amendment.canceled"
}
This event is triggered whenever a contract amendment request status is updated to submitted.
event_type required | string |
employment_id required | string |
employment_request_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "employment_request_id": "129d02bc-dd6a-11ed-ac99-cb057df06a33",
- "event_type": "contract_amendment.submitted"
}
This event is triggered whenever a contract amendment request status is updated to deleted.
event_type required | string |
employment_id required | string |
employment_request_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "employment_request_id": "129d02bc-dd6a-11ed-ac99-cb057df06a33",
- "event_type": "contract_amendment.deleted"
}
List Contract Amendment requests.
page | integer >= 1 Default: 1 Example: page=1 Starts fetching records after the given page |
page_size | integer >= 1 Default: 20 Example: page_size=20 Number of items per page |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "contract_amendments": [
- {
- "employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
- "id": "ba310525-9282-40c9-8977-14d844bf891a",
- "job_title": "Engineer",
- "reason_for_change": "annual_pay_adjustment",
- "requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
- "requested_effective_date": "2023-04-13T13:35:06Z",
- "status": "submitted",
- "submitted_at": "2023-04-13T13:35:06Z"
}
], - "current_page": 1,
- "total_count": 1,
- "total_pages": 1
}
Creates a Contract Amendment request.
This endpoint requires and returns country-specific data. The exact required and returned fields will vary depending on which country the employment is in. To see the list of parameters for each country, see the Show form schema endpoint under the Contract Amendments category.
Please note that the compliance requirements for each country are subject to change according to local laws. Given its continual updates, using Remote's json-schema-form should be considered in order to avoid compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or displaying the latest parameters for each country by querying the "Show form schema" endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for the json-schema-form tool.
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Contract Amendment
amendment_contract_id required | string The contract ID of the contract that needs to be amended. |
contract_amendment required | object Contract amendment informations. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code, |
employment_id required | string The employment ID that is related to the contract amendment request. |
{- "amendment_contract_id": "c15993d8-aa8a-4fbb-b395-8b7a54f57db1",
- "contract_amendment": { },
- "employment_id": "e31adae1-company-id-af5fba7dd803"
}
{- "data": {
- "contract_amendment": {
- "amendment_contract_id": "8772a9f1-b43c-46be-a1ce-e50b6819f5ee",
- "changes": {
- "compensation.amount": {
- "current": 500000,
- "previous": 400000
}, - "contract.job_title": {
- "current": "A new job title",
- "previous": "An old job title"
}, - "contract_details.details.contract_duration_type": {
- "current": "fixed_term",
- "previous": "indefinite"
}
}, - "employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
- "id": "ba310525-9282-40c9-8977-14d844bf891a",
- "requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
- "requested_details": {
- "additional_comments": null,
- "effective_date": "2024-03-04",
- "reason_for_change": "annual_pay_adjustment",
- "reason_for_change_description": null,
- "salary_decrease_details": null
}, - "status": "submitted",
- "submitted_at": "2023-04-13T13:35:06Z",
}
}
}
Show a single Contract Amendment request.
id required | string Example: 93t3j-contract_amendment_id-9suej43 Contract amendment request ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "data": {
- "contract_amendment": {
- "amendment_contract_id": "8772a9f1-b43c-46be-a1ce-e50b6819f5ee",
- "changes": {
- "compensation.amount": {
- "current": 500000,
- "previous": 400000
}, - "contract.job_title": {
- "current": "A new job title",
- "previous": "An old job title"
}, - "contract_details.details.contract_duration_type": {
- "current": "fixed_term",
- "previous": "indefinite"
}
}, - "employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
- "id": "ba310525-9282-40c9-8977-14d844bf891a",
- "requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
- "requested_details": {
- "additional_comments": null,
- "effective_date": "2024-03-04",
- "reason_for_change": "annual_pay_adjustment",
- "reason_for_change_description": null,
- "salary_decrease_details": null
}, - "status": "submitted",
- "submitted_at": "2023-04-13T13:35:06Z",
}
}
}
Check if a contract amendment request is automatable. If the contract amendment request is automatable, then after submission, it will instantly amend the employee's contract and send them an updated document.
This endpoint requires and returns country-specific data. The exact required and returned fields will vary depending on which country the employment is in. To see the list of parameters for each country, see the Show form schema endpoint under the Contract Amendments category.
Please note that the compliance requirements for each country are subject to change according to local laws. Given its continual updates, using Remote's json-schema-form should be considered in order to avoid compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or displaying the latest parameters for each country by querying the "Show form schema" endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for the json-schema-form tool.
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Contract Amendment
amendment_contract_id required | string The contract ID of the contract that needs to be amended. |
contract_amendment required | object Contract amendment informations. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code, |
employment_id required | string The employment ID that is related to the contract amendment request. |
{- "amendment_contract_id": "c15993d8-aa8a-4fbb-b395-8b7a54f57db1",
- "contract_amendment": { },
- "employment_id": "e31adae1-company-id-af5fba7dd803"
}
{- "data": {
- "automatable": true,
- "message": "string"
}
}
Returns the json schema of the contract_amendment
form.
This endpoint requires a company access token, as forms are dependent on certain
properties of companies and their current employments.
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Contract Amendment Form
country_code required | string Country code according to ISO 3-digit alphabetic codes. |
employment_id required | string The ID of the employment concerned by the contract amendment request. |
form | string Value: "contract_amendment" Name of the desired form |
{- "country_code": "string",
- "employment_id": "string",
- "form": "contract_amendment"
}
{- "data": {
- "additionalProperties": false,
- "properties": {
- "effective_date": {
- "description": "If you want to backdate this amendment, we cannot guarantee your preferred date is possible due to country-specific laws.\nPlease enter your preferred date, and we’ll reach out to you if there are any issues.\n",
- "title": "Effective date of change",
- "type": "date"
}, - "job_title": {
- "description": "What is their job title? E.g. Product designer",
- "maxLength": 255,
- "title": "Job title",
- "type": "string"
}
}, - "required": [
- "job_title",
- "effective_date"
], - "type": "object"
}
}
This event is triggered whenever a new contract becomes active for an employment.
event_type required | string |
employment_id required | string |
contract_id required | string |
{- "contract_id": "ba310525-9282-40c9-8977-14d844bf891a",
- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "employment_contract.active_contract_updated"
}
Get all the pending changes (waiting for aproval or signature) for the employment contract.
employment_id required | string Example: 93t3j-employment_id-9suej43 Employment ID |
{- "data": {
- "pending_changes": [
- {
- "changes": {
- "contract.job_title": {
- "current": "Senior Engineer",
- "previous": "Engineer"
}
}, - "contract_id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "effective_at": "2021-07-15T18:18:17Z"
}
]
}
}
Get the employment contract history (list of all contracts active or not) for a given employment.
employment_id required | string Example: employment_id=93t3j-employment_id-9suej43 Employment ID |
{- "data": {
- "employment_contracts": [
- {
- "activated_at": "2021-07-15T18:18:17Z",
- "amendment_contract_id": "e31adae1-contract-id-af5fba7dd803",
- "compensation": {
- "amount": 33000,
- "currency_code": "CAD"
}, - "contract_details": { },
- "contract_id": "20a72f86-contract-id-9e4942a902ff",
- "country": {
- "code": "CAN",
- "name": "Canada"
}, - "effective_at": "2021-07-15T18:18:17Z",
- "job_title": "Engineer",
- "status": "active"
}
]
}
}
This event is triggered when a payslip is ready and available for an employee.
event_type required | string |
employment_id required | string |
payslip_id required | string |
{- "employment_id": "45b34922-2590-43a0-ac05-ad23834adb8f",
- "event_type": "payslip.released",
- "payslip_id": "86e56288-ca62-11ed-9702-a703c40b6c0d"
}
Lists all payslips belonging to a company. Can also filter for a single employment belonging to that company.
employment_id | string Example: employment_id=93t3j-employment-id-9suej43 Employment ID |
start_date | string Example: start_date="2022-12-15" Filters by payslips |
end_date | string Example: end_date="2023-12-15" Filters by payslips |
expected_payout_start_date | string Example: expected_payout_start_date="2022-12-15" Filters by payslips |
expected_payout_end_date | string Example: expected_payout_end_date="2023-12-15" Filters by payslips |
page | integer Example: page=1 Starts fetching records after the given page |
page_size | integer Example: page_size=30 Change the amount of records returned per page, defaults to 20, limited to 100 |
{- "current_page": 1,
- "payslips": [
- {
- "employment_id": "98d3f-employment-id-1oi45n",
- "expected_payout_date": "2021-07-01",
- "id": "93t3j-employment-id-9suej43",
- "issued_at": "2021-07-01",
- "net_pay_converted_amount": 1500000,
- "net_pay_source_amount": 1000000
}
], - "total_count": 1,
- "total_pages": 1
}
Given an ID, shows a payslip.
Please contact api-support@remote.com to request access to this endpoint.
id required | string Example: 93t3j-payslip-id-9suej43 Payslip ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "data": {
- "payslips": {
- "employment_id": "98d3f-employment-id-1oi45n",
- "expected_payout_date": "2021-07-01",
- "id": "93t3j-employment-id-9suej43",
- "issued_at": "2021-07-01",
- "net_pay_converted_amount": 1500000,
- "net_pay_source_amount": 1000000
}
}
}
Given a Payslip ID, downloads a payslip. It is important to note that each country has a different payslip format and they are not authored by Remote.
payslip_id required | string Example: 93t3j-payslip-id-9suej43 Payslip ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
"string"
This event is triggered whenever an identity verification is required for an employment.
event_type required | string |
employment_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "identity_verification.verification_required"
}
Gets necessary information to perform the identity verification of an employee.
employment_id required | string Example: 0a8s2d1-employment-id-2e3f4th Employment ID |
{- "contract_id": "1c130827-f95c-4495-b7cb-5876dce686b8",
- "employment_document": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "status": "pending"
}
Declines the identity verification of an employee.
employment_id required | string Example: d9dabe74-f845-4a79-9e66-e52d4261c7bb Employment ID |
{- "data": {
- "status": "ok"
}
}
This event is triggered when an employment onboarding is completed and the
employment is set to active
.
An onboarding is considered complete when the employee finishes their self-enrollment and has completed all the onboarding tasks assigned to them (Personal profile, Administrative details, Emergency contact, Supporting documentation, etc).
event_type required | string |
employment_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "employment.onboarding.completed"
}
This event is triggered whenever an employment personal details is updated. Personal details includes personal informations, home address and emergency contact.
event_type required | string |
employment_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "employment.personal_information.updated"
}
This event is triggered whenever an employment user is updated to the active status.
event_type required | string |
employment_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "employment.user_status.activated"
}
This event is triggered whenever an employment department
or manager
is updated.
event_type required | string |
employment_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "employment.details.updated"
}
This event is triggered everytime an employment onboarding task (Personal profile, Administrative details, Emergency contact, Supporting documentation, etc) is completed by an employee during the self-enrollment.
event_type required | string |
company_id required | string |
employment_id required | string |
object |
{- "company_id": "97c7ce7e-ca67-11ed-bce5-3bb70cbb9f9e",
- "completed_task": {
- "action": "administrative_details",
- "completed_at": "2023-03-23T03:21:23Z",
- "description": "description for administrative details",
- "name": "Administrative details",
- "required": true,
- "status": "completed"
}, - "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "employment.onboarding_task.completed"
}
This event is triggered whenever an employment user is updated to the inactive status.
event_type required | string |
employment_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "employment.user_status.deactivated"
}
This event is triggered whenever an employment account email is updated.
event_type required | string |
employment_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "employment.account.updated"
}
Shows all the information of an employment.
This endpoint requires and returns country-specific data. The exact required and returned fields will vary depending on which country the employment is in. To see the list of parameters for each country, see the Show form schema endpoint under the Countries category.
Please note that the compliance requirements for each country are subject to change according to local laws. Given its continual updates, using Remote's json-schema-form should be considered in order to avoid compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or displaying the latest parameters for each country by querying the "Show form schema" endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for the json-schema-form tool.
employment_id required | string Example: 93t3j-employment-id-9suej43 Employment ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "data": {
- "employment": {
- "address_details": { },
- "administrative_details": { },
- "bank_account_details": [ ],
- "basic_information": { },
- "billing_address_details": { },
- "company_id": "e31adae1-company-id-af5fba7dd803",
- "contract_details": { },
- "country": {
- "code": "AUT",
- "name": "Austria"
}, - "created_at": "2021-11-11T18:44:39",
- "emergency_contact_details": { },
- "files": [ ],
- "full_name": "Jane Smith",
- "id": "20a72f86-employment-id-9e4942a902ff",
- "job_title": "Engineer",
- "onboarding_tasks": {
- "address_details": {
- "description": "Primary residence.",
- "status": "completed"
}, - "administrative_details": {
- "description": "Information we need for tax purposes.",
- "status": "completed"
}, - "bank_account_details": {
- "description": "Bank account used for receiving salary payments.",
- "status": "completed"
}, - "billing_address_details": {
- "description": "Address associated with the employee's bank account.",
- "status": "completed"
}, - "contract_details": {
- "description": "Employee-specific details for their employment agreement.",
- "status": "completed"
}, - "emergency_contact_details": {
- "description": "Who should be called in an emergency.",
- "status": "completed"
}, - "employment_document_details": {
- "description": "We need some additional documents.",
- "status": "pending"
}, - "personal_details": {
- "description": "Personal details, such as name and date of birth.",
- "status": "completed"
}, - "pricing_plan_details": {
- "description": "How often Remote will bill employers for management fees.",
- "status": "completed"
}
}, - "personal_details": { },
- "personal_email": "jane@smith.com",
- "pricing_plan_details": {
- "frequency": "annually"
}, - "provisional_start_date": "2021-07-03",
- "status": "created",
- "type": "employee",
- "updated_at": "2021-11-11T18:44:39",
- "user_status": "active",
- "work_email": "jane.smith@company.com"
}
}
}
Updates an employment.
For created
employments: You can change all basic params and onboarding tasks or perform a per onboarding task update. You can also update basic_information.
For active
employments: You can update the manager (manager_id
field), emergency_contact_details and address_details.
This endpoint requires and returns country-specific data. The exact required and returned fields will vary depending on which country the employment is in. To see the list of parameters for each country, see the Show form schema endpoint under the Countries category.
Please note that the compliance requirements for each country are subject to change according to local laws. Given its continual updates, using Remote's json-schema-form should be considered in order to avoid compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or displaying the latest parameters for each country by querying the "Show form schema" endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for the json-schema-form tool.
When you submit the contract_details
and pricing_plan_details
, Remote should have all the required data to automatically
send an invite to the employee. You can tell if an automatic invite has been sent by looking at the employment_lifecycle_stage
field value. If its value is employee_self_enrollment
, it means the employee has received an email to join the Remote platform
at their personal_email
.
After an automatic invite is sent to an employee, you will not be able to update employment data through the Remote API.
After onboarding, only a limited set of employment data will be available for updates, such as emergency_contact_details
.
If you want to provide additional information for an employment, please make sure to do so before the employee is invited.
We block updates to some employment data because employees need to agree to amendments in certain cases,
such as when there are changes to their contract_details.
Currently, these amendments can only be done through the Remote UI.
Please contact Remote if you need to update contractors via API since it's currently not supported.
employment_id required | string Example: 93t3j-employment-id-9suej43 Employment ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Employment params
address_details | object Home address information. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code and |
administrative_details | object Administrative information. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code and |
bank_account_details | object Bank account information. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code and |
billing_address_details | object Billing address information. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code and |
company_id | string |
contract_details | object Contract information. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code and |
object (Country) A supported country on Remote | |
emergency_contact_details | object Emergency contact information. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code and |
full_name required | string |
job_title required | string |
manager_id | string The user id of the manager, who should have an |
personal_details | object Personal details information. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code and |
personal_email required | string |
object (PricingPlanDetails) Selected type of payment. | |
provisional_start_date | string <date> (ProvisionalStartDate) Indicates the expected start date of the employee or contractor. Required for employees, but optional for contractors. Date format is in ISO8601 without the time component. See the Date and Time Format documentation for more details on how the Remote API works with dates. |
seniority_date | string <date-time> (EmploymentSeniorityDate) The date the employee first started working for your company. If you don’t include a seniority date, the employee’s start date with Remote will be deemed as the start of the employee’s seniority. Example: Your employee started working for your company on Feb 1, 2022. On Aug 1, 2022, you transferred the employee to Remote and started managing them on the platform. Feb 1, 2022 would be their seniority date. Aug 1, 2022 would be their starting date. |
{- "address_details": { },
- "administrative_details": { },
- "bank_account_details": { },
- "billing_address_details": { },
- "company_id": "e31adae1-company-id-af5fba7dd803",
- "contract_details": { },
- "country": {
- "alpha_2_code": "PT",
- "code": "PRT",
- "country_subdivisions": [
- {
- "code": "PT-06",
- "name": "Coimbra",
- "subdivision_type": "District"
}, - {
- "code": "PT-11",
- "name": "Lisboa",
- "subdivision_type": "District"
}
], - "name": "Portugal",
- "supported_json_schemas": [
- "additional_documents",
- "address_details",
- "administrative_details",
- "employment-basic-information",
- "bank_account_details",
- "contract_details",
- "emergency_contact"
]
}, - "emergency_contact_details": { },
- "full_name": "Jane Smith",
- "job_title": "Backend Engineer",
- "manager_id": "string",
- "personal_details": { },
- "personal_email": "jane@smith.com",
- "pricing_plan_details": {
- "frequency": "annually"
}, - "provisional_start_date": "2021-07-03",
- "seniority_date": "2022-03-21",
- "basic_information": {
- "email": "jane@smith.com",
- "has_seniority_date": "no",
- "job_title": "Backend Engineer",
- "name": "Jane Smith",
- "provisional_start_date": "2021-07-03"
}, - "country_code": "AUS",
- "department_id": "3bb56f01-3243-412b-bfaa-a5cfaaf2e431",
- "manager": "Taylor Johnson"
}
{- "data": {
- "employment": {
- "address_details": { },
- "administrative_details": { },
- "bank_account_details": [ ],
- "basic_information": { },
- "billing_address_details": { },
- "company_id": "e31adae1-company-id-af5fba7dd803",
- "contract_details": { },
- "country": {
- "code": "AUT",
- "name": "Austria"
}, - "created_at": "2021-11-11T18:44:39",
- "emergency_contact_details": { },
- "files": [ ],
- "full_name": "Jane Smith",
- "id": "20a72f86-employment-id-9e4942a902ff",
- "job_title": "Engineer",
- "onboarding_tasks": {
- "address_details": {
- "description": "Primary residence.",
- "status": "completed"
}, - "administrative_details": {
- "description": "Information we need for tax purposes.",
- "status": "completed"
}, - "bank_account_details": {
- "description": "Bank account used for receiving salary payments.",
- "status": "completed"
}, - "billing_address_details": {
- "description": "Address associated with the employee's bank account.",
- "status": "completed"
}, - "contract_details": {
- "description": "Employee-specific details for their employment agreement.",
- "status": "completed"
}, - "emergency_contact_details": {
- "description": "Who should be called in an emergency.",
- "status": "completed"
}, - "employment_document_details": {
- "description": "We need some additional documents.",
- "status": "pending"
}, - "personal_details": {
- "description": "Personal details, such as name and date of birth.",
- "status": "completed"
}, - "pricing_plan_details": {
- "description": "How often Remote will bill employers for management fees.",
- "status": "completed"
}
}, - "personal_details": { },
- "personal_email": "jane@smith.com",
- "pricing_plan_details": {
- "frequency": "annually"
}, - "provisional_start_date": "2021-07-03",
- "status": "created",
- "type": "employee",
- "updated_at": "2021-11-11T18:44:39",
- "user_status": "active",
- "work_email": "jane.smith@company.com"
}
}
}
Updates an employment.
For created
employments: You can change all basic params and onboarding tasks or perform a per onboarding task update. You can also update basic_information.
For active
employments: You can update the manager (manager_id
field), emergency_contact_details and address_details.
This endpoint requires and returns country-specific data. The exact required and returned fields will vary depending on which country the employment is in. To see the list of parameters for each country, see the Show form schema endpoint under the Countries category.
Please note that the compliance requirements for each country are subject to change according to local laws. Given its continual updates, using Remote's json-schema-form should be considered in order to avoid compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or displaying the latest parameters for each country by querying the "Show form schema" endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for the json-schema-form tool.
When you submit the contract_details
and pricing_plan_details
, Remote should have all the required data to automatically
send an invite to the employee. You can tell if an automatic invite has been sent by looking at the employment_lifecycle_stage
field value. If its value is employee_self_enrollment
, it means the employee has received an email to join the Remote platform
at their personal_email
.
After an automatic invite is sent to an employee, you will not be able to update employment data through the Remote API.
After onboarding, only a limited set of employment data will be available for updates, such as emergency_contact_details
.
If you want to provide additional information for an employment, please make sure to do so before the employee is invited.
We block updates to some employment data because employees need to agree to amendments in certain cases,
such as when there are changes to their contract_details.
Currently, these amendments can only be done through the Remote UI.
Please contact Remote if you need to update contractors via API since it's currently not supported.
employment_id required | string Example: 93t3j-employment-id-9suej43 Employment ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Employment params
address_details | object Home address information. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code and |
administrative_details | object Administrative information. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code and |
bank_account_details | object Bank account information. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code and |
billing_address_details | object Billing address information. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code and |
company_id | string |
contract_details | object Contract information. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code and |
object (Country) A supported country on Remote | |
emergency_contact_details | object Emergency contact information. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code and |
full_name required | string |
job_title required | string |
manager_id | string The user id of the manager, who should have an |
personal_details | object Personal details information. As its properties may vary depending on the country,
you must query the Show form schema endpoint
passing the country code and |
personal_email required | string |
object (PricingPlanDetails) Selected type of payment. | |
provisional_start_date | string <date> (ProvisionalStartDate) Indicates the expected start date of the employee or contractor. Required for employees, but optional for contractors. Date format is in ISO8601 without the time component. See the Date and Time Format documentation for more details on how the Remote API works with dates. |
seniority_date | string <date-time> (EmploymentSeniorityDate) The date the employee first started working for your company. If you don’t include a seniority date, the employee’s start date with Remote will be deemed as the start of the employee’s seniority. Example: Your employee started working for your company on Feb 1, 2022. On Aug 1, 2022, you transferred the employee to Remote and started managing them on the platform. Feb 1, 2022 would be their seniority date. Aug 1, 2022 would be their starting date. |
{- "address_details": { },
- "administrative_details": { },
- "bank_account_details": { },
- "billing_address_details": { },
- "company_id": "e31adae1-company-id-af5fba7dd803",
- "contract_details": { },
- "country": {
- "alpha_2_code": "PT",
- "code": "PRT",
- "country_subdivisions": [
- {
- "code": "PT-06",
- "name": "Coimbra",
- "subdivision_type": "District"
}, - {
- "code": "PT-11",
- "name": "Lisboa",
- "subdivision_type": "District"
}
], - "name": "Portugal",
- "supported_json_schemas": [
- "additional_documents",
- "address_details",
- "administrative_details",
- "employment-basic-information",
- "bank_account_details",
- "contract_details",
- "emergency_contact"
]
}, - "emergency_contact_details": { },
- "full_name": "Jane Smith",
- "job_title": "Backend Engineer",
- "manager_id": "string",
- "personal_details": { },
- "personal_email": "jane@smith.com",
- "pricing_plan_details": {
- "frequency": "annually"
}, - "provisional_start_date": "2021-07-03",
- "seniority_date": "2022-03-21",
- "basic_information": {
- "email": "jane@smith.com",
- "has_seniority_date": "no",
- "job_title": "Backend Engineer",
- "name": "Jane Smith",
- "provisional_start_date": "2021-07-03"
}, - "country_code": "AUS",
- "department_id": "3bb56f01-3243-412b-bfaa-a5cfaaf2e431",
- "manager": "Taylor Johnson"
}
{- "data": {
- "employment": {
- "address_details": { },
- "administrative_details": { },
- "bank_account_details": [ ],
- "basic_information": { },
- "billing_address_details": { },
- "company_id": "e31adae1-company-id-af5fba7dd803",
- "contract_details": { },
- "country": {
- "code": "AUT",
- "name": "Austria"
}, - "created_at": "2021-11-11T18:44:39",
- "emergency_contact_details": { },
- "files": [ ],
- "full_name": "Jane Smith",
- "id": "20a72f86-employment-id-9e4942a902ff",
- "job_title": "Engineer",
- "onboarding_tasks": {
- "address_details": {
- "description": "Primary residence.",
- "status": "completed"
}, - "administrative_details": {
- "description": "Information we need for tax purposes.",
- "status": "completed"
}, - "bank_account_details": {
- "description": "Bank account used for receiving salary payments.",
- "status": "completed"
}, - "billing_address_details": {
- "description": "Address associated with the employee's bank account.",
- "status": "completed"
}, - "contract_details": {
- "description": "Employee-specific details for their employment agreement.",
- "status": "completed"
}, - "emergency_contact_details": {
- "description": "Who should be called in an emergency.",
- "status": "completed"
}, - "employment_document_details": {
- "description": "We need some additional documents.",
- "status": "pending"
}, - "personal_details": {
- "description": "Personal details, such as name and date of birth.",
- "status": "completed"
}, - "pricing_plan_details": {
- "description": "How often Remote will bill employers for management fees.",
- "status": "completed"
}
}, - "personal_details": { },
- "personal_email": "jane@smith.com",
- "pricing_plan_details": {
- "frequency": "annually"
}, - "provisional_start_date": "2021-07-03",
- "status": "created",
- "type": "employee",
- "updated_at": "2021-11-11T18:44:39",
- "user_status": "active",
- "work_email": "jane.smith@company.com"
}
}
}
Invite an employment to start the self-enrollment.
Requirements for the invitation to succeed:
contract_details
and pricing_plan_details
provisional_start_date
must consider the minimum onbaording time of the employment's countryIf there are validations errors, they are returned with a Conflict HTTP Status (409) and a descriptive message. HTTP Status OK (200) is returned in case of success.
employment_id required | string Example: 31b8e49b-aa1c-47af-849c-3d0a53e20e0d Employment ID |
{- "data": {
- "status": "ok"
}
}
Lists all employments, except for the deleted ones.
This endpoint requires and returns country-specific data. The exact required and returned fields will vary depending on which country the employment is in. To see the list of parameters for each country, see the Show form schema endpoint under the Countries category.
Please note that the compliance requirements for each country are subject to change according to local laws. Given its continual updates, using Remote's json-schema-form should be considered in order to avoid compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or displaying the latest parameters for each country by querying the "Show form schema" endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for the json-schema-form tool.
company_id | string Example: company_id=93t3j-company-id-9suej43 Company ID |
string Example: email=anna@example.com Filters the results by employments whose login email matches the value | |
status | string Example: status=active Filters the results by employments whose status matches the value |
page | integer Example: page=1 Starts fetching records after the given page |
page_size | integer Example: page_size=30 Change the amount of records returned per page, defaults to 20, limited to 100 |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "current_page": 1,
- "employments": [
- {
- "country": {
- "code": "AUS",
- "name": "Australia"
}, - "department": null,
- "department_id": null,
- "full_name": "Jane Smith",
- "id": "add736b8-employment-id-a76ccae2abe8",
- "job_title": "Engineer",
- "personal_email": "janesmith@company.com",
- "status": "created",
- "type": "employee"
}
], - "total_count": 1,
- "total_pages": 1
}
Creates an employment. We support creating employees and contractors.
This endpoint requires and returns country-specific data. The exact required and returned fields will vary depending on which country the employment is in. To see the list of parameters for each country, see the Show form schema endpoint under the Countries category.
Please note that the compliance requirements for each country are subject to change according to local laws. Given its continual updates, using Remote's json-schema-form should be considered in order to avoid compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or displaying the latest parameters for each country by querying the "Show form schema" endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for the json-schema-form tool.
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Employment params
basic_information | object Employment basic information. When using this field, the same other root level fields (name, personal_email, job_title,
provisional_start_date, and seniority_date) will be ignored.
Its properties may vary depending on the country, you must query the Show form schema endpoint
passing the country code and |
company_id | string This optional field is deprecated. |
country_code required | string |
type | string Enum: "employee" "contractor" If not provided, it will default to |
{- "basic_information": {
- "email": "jane@smith.com",
- "has_seniority_date": "no",
- "job_title": "Engineer",
- "name": "Jane Smith",
- "provisional_start_date": "2022-07-10"
}, - "company_id": "string",
- "country_code": "AUS",
- "type": "employee",
- "full_name": "Jane Smith",
- "job_title": "Engineer",
- "personal_email": "jane@smith.com",
- "provisional_start_date": "2022-07-10"
}
{- "data": {
- "employment": {
- "basic_information": {
- "email": "jane@smith.com",
- "has_seniority_date": "no",
- "job_title": "Engineer",
- "name": "Jane Smith",
- "provisional_start_date": "2022-07-10"
}, - "company_id": "20a72f86-company-id-20a72f86",
- "country_code": "AUS",
- "created_at": "2023-02-01T15:42:03",
- "employment_lifecycle_stage": "employment_creation",
- "full_name": "Jane Smith",
- "id": "663e0b79-c893-45ff-a1b2-f6dcabc098b5",
- "job_title": "Engineer",
- "personal_email": "jane@smith.com",
- "provisional_start_date": "2022-07-10",
- "type": "employee",
- "updated_at": "2023-02-01T15:42:03"
}
}
}
Completes the employee onboarding. When all tasks are completed, the employee is marked as in review
status
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Employment slug
employment_id | string |
{- "employment_id": "string"
}
{- "data": {
- "employment": {
- "address_details": { },
- "administrative_details": { },
- "bank_account_details": [ ],
- "basic_information": { },
- "billing_address_details": { },
- "company_id": "e31adae1-company-id-af5fba7dd803",
- "contract_details": { },
- "country": {
- "code": "AUT",
- "name": "Austria"
}, - "created_at": "2021-11-11T18:44:39",
- "emergency_contact_details": { },
- "files": [ ],
- "full_name": "Jane Smith",
- "id": "20a72f86-employment-id-9e4942a902ff",
- "job_title": "Engineer",
- "onboarding_tasks": {
- "address_details": {
- "description": "Primary residence.",
- "status": "completed"
}, - "administrative_details": {
- "description": "Information we need for tax purposes.",
- "status": "completed"
}, - "bank_account_details": {
- "description": "Bank account used for receiving salary payments.",
- "status": "completed"
}, - "billing_address_details": {
- "description": "Address associated with the employee's bank account.",
- "status": "completed"
}, - "contract_details": {
- "description": "Employee-specific details for their employment agreement.",
- "status": "completed"
}, - "emergency_contact_details": {
- "description": "Who should be called in an emergency.",
- "status": "completed"
}, - "employment_document_details": {
- "description": "We need some additional documents.",
- "status": "pending"
}, - "personal_details": {
- "description": "Personal details, such as name and date of birth.",
- "status": "completed"
}, - "pricing_plan_details": {
- "description": "How often Remote will bill employers for management fees.",
- "status": "completed"
}
}, - "personal_details": { },
- "personal_email": "jane@smith.com",
- "pricing_plan_details": {
- "frequency": "annually"
}, - "provisional_start_date": "2021-07-03",
- "status": "created",
- "type": "employee",
- "updated_at": "2021-11-11T18:44:39",
- "user_status": "active",
- "work_email": "jane.smith@company.com"
}
}
}
This event is triggered when a timeoff has status changed to canceled.
event_type required | string |
employment_id required | string |
timeoff_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "timeoff.canceled",
- "timeoff_id": "0073fcb5-b669-4e4a-b963-2a47744e75a1"
}
This event is triggered when a timeoff is set as taken.
event_type required | string |
employment_id required | string |
timeoff_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "timeoff.taken",
- "timeoff_id": "0073fcb5-b669-4e4a-b963-2a47744e75a1"
}
This event is triggered when a timeoff is set as approved.
event_type required | string |
employment_id required | string |
timeoff_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "timeoff.approved",
- "timeoff_id": "0073fcb5-b669-4e4a-b963-2a47744e75a1"
}
This event is triggered when a timeoff has its date changed.
event_type required | string |
employment_id required | string |
timeoff_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "timeoff.date_changed",
- "timeoff_id": "0073fcb5-b669-4e4a-b963-2a47744e75a1"
}
This event is triggered when a timeoff is updated.
event_type required | string |
employment_id required | string |
timeoff_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "timeoff.updated",
- "timeoff_id": "0073fcb5-b669-4e4a-b963-2a47744e75a1"
}
This event is triggered when a timeoff is declined
event_type required | string |
employment_id required | string |
timeoff_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "timeoff.declined",
- "timeoff_id": "0073fcb5-b669-4e4a-b963-2a47744e75a1"
}
This event is triggered when a timeoff is requested
event_type required | string |
employment_id required | string |
timeoff_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "timeoff.requested",
- "timeoff_id": "0073fcb5-b669-4e4a-b963-2a47744e75a1"
}
Shows a single Time Off record
id required | string Example: 93t3j-timeoff-id-9suej43 Timeoff ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "data": {
- "timeoff": {
- "document": {
- "id": "9880b711-file-id-ecf8f551bd78",
- "inserted_at": "2021-11-12T17:19:21",
- "name": "id.pdf",
- "sub_type": "personal_id",
- "type": "id"
}, - "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "end_date": "2021-12-21",
- "id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "notes": "Some notes",
- "start_date": "2021-12-20",
- "status": "approved",
- "timeoff_days": [
- {
- "day": "2021-12-20",
- "hours": 8
}, - {
- "day": "2021-12-21",
- "hours": 8
}
], - "timeoff_type": "paid_time_off",
- "timezone": "Asia/Kolkata"
}
}
}
Updates a Time Off record. This endpoint can also be used for cancelling a time off.
id required | string Example: 93t3j-timeoff-id-9suej43 Timeoff ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
UpdateTimeoff
approved_at | string <date-time> (DateTimeIso8601) UTC date time in ISO 8601 format. |
approver_id | string or null (NullableApproverId) The field matches the |
cancel_reason required | string The reason for cancelling a time off. Required when updating to status |
object (TimeoffDocumentParams) Timeoff document params | |
edit_reason required | string The reason for the update. Required when updating the time off data but not changing the status. |
end_date | string <date> (Date) UTC date in ISO 8601 format |
notes | string |
start_date | string <date> (Date) UTC date in ISO 8601 format |
status | string Enum: "approved" "cancelled" |
Array of objects (TimeoffDaysParams) | |
timeoff_type | string (TimeoffType) Enum: "paid_time_off" "sick_leave" "public_holiday" "unpaid_leave" "extended_leave" "in_lieu_time" "maternity_leave" "paternity_leave" "parental_leave" "bereavement" "military_leave" "other" |
timezone | string (Timezone) |
{- "approved_at": "2021-07-15T18:18:17Z",
- "approver_id": "51546f60-dd71-4223-9312-4efede68a497",
- "cancel_reason": "string",
- "document": {
- "content": "string",
- "name": "string"
}, - "edit_reason": "string",
- "end_date": "2021-07-01",
- "notes": "string",
- "start_date": "2021-07-01",
- "status": "approved",
- "timeoff_days": [
- {
- "day": "2021-07-01",
- "hours": 0
}
], - "timeoff_type": "sick_leave",
- "timezone": "Etc/UTC"
}
{- "data": {
- "timeoff": {
- "document": {
- "id": "9880b711-file-id-ecf8f551bd78",
- "inserted_at": "2021-11-12T17:19:21",
- "name": "id.pdf",
- "sub_type": "personal_id",
- "type": "id"
}, - "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "end_date": "2021-12-21",
- "id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "notes": "Some notes",
- "start_date": "2021-12-20",
- "status": "approved",
- "timeoff_days": [
- {
- "day": "2021-12-20",
- "hours": 8
}, - {
- "day": "2021-12-21",
- "hours": 8
}
], - "timeoff_type": "paid_time_off",
- "timezone": "Asia/Kolkata"
}
}
}
Updates a Time Off record. This endpoint can also be used for cancelling a time off.
id required | string Example: 93t3j-timeoff-id-9suej43 Timeoff ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
UpdateTimeoff
approved_at | string <date-time> (DateTimeIso8601) UTC date time in ISO 8601 format. |
approver_id | string or null (NullableApproverId) The field matches the |
cancel_reason required | string The reason for cancelling a time off. Required when updating to status |
object (TimeoffDocumentParams) Timeoff document params | |
edit_reason required | string The reason for the update. Required when updating the time off data but not changing the status. |
end_date | string <date> (Date) UTC date in ISO 8601 format |
notes | string |
start_date | string <date> (Date) UTC date in ISO 8601 format |
status | string Enum: "approved" "cancelled" |
Array of objects (TimeoffDaysParams) | |
timeoff_type | string (TimeoffType) Enum: "paid_time_off" "sick_leave" "public_holiday" "unpaid_leave" "extended_leave" "in_lieu_time" "maternity_leave" "paternity_leave" "parental_leave" "bereavement" "military_leave" "other" |
timezone | string (Timezone) |
{- "approved_at": "2021-07-15T18:18:17Z",
- "approver_id": "51546f60-dd71-4223-9312-4efede68a497",
- "cancel_reason": "string",
- "document": {
- "content": "string",
- "name": "string"
}, - "edit_reason": "string",
- "end_date": "2021-07-01",
- "notes": "string",
- "start_date": "2021-07-01",
- "status": "approved",
- "timeoff_days": [
- {
- "day": "2021-07-01",
- "hours": 0
}
], - "timeoff_type": "sick_leave",
- "timezone": "Etc/UTC"
}
{- "data": {
- "timeoff": {
- "document": {
- "id": "9880b711-file-id-ecf8f551bd78",
- "inserted_at": "2021-11-12T17:19:21",
- "name": "id.pdf",
- "sub_type": "personal_id",
- "type": "id"
}, - "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "end_date": "2021-12-21",
- "id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "notes": "Some notes",
- "start_date": "2021-12-20",
- "status": "approved",
- "timeoff_days": [
- {
- "day": "2021-12-20",
- "hours": 8
}, - {
- "day": "2021-12-21",
- "hours": 8
}
], - "timeoff_type": "paid_time_off",
- "timezone": "Asia/Kolkata"
}
}
}
Lists all Time Off records.
employment_id | string Example: employment_id=31b8e49b-aa1c-47af-849c-3d0a53e20e0d Only show time off for a specific employment |
timeoff_type | string (TimeoffType) Enum: "paid_time_off" "sick_leave" "public_holiday" "unpaid_leave" "extended_leave" "in_lieu_time" "maternity_leave" "paternity_leave" "parental_leave" "bereavement" "military_leave" "other" Example: timeoff_type=sick_leave Filter time off by its type |
status | string (TimeoffStatus) Enum: "approved" "cancelled" "declined" "requested" "taken" "cancel_requested" Example: status=approved Filter time off by its status |
order | string Enum: "asc" "desc" Example: order=asc Sort order |
sort_by | string Enum: "timeoff_type" "status" Example: sort_by=timeoff_type Field to sort by |
page | integer >= 1 Default: 1 Example: page=1 Starts fetching records after the given page |
page_size | integer >= 1 Default: 20 Example: page_size=20 Number of items per page |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "current_page": 1,
- "timeoffs": [
- {
- "document": {
- "id": "9880b711-file-id-ecf8f551bd78",
- "inserted_at": "2021-11-12T17:19:21",
- "name": "id.pdf",
- "sub_type": "personal_id",
- "type": "id"
}, - "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "end_date": "2021-12-21",
- "id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "notes": "Some notes",
- "start_date": "2021-12-20",
- "status": "approved",
- "timeoff_days": [
- {
- "day": "2021-12-20",
- "hours": 8
}, - {
- "day": "2021-12-21",
- "hours": 8
}
], - "timeoff_type": "paid_time_off",
- "timezone": "Asia/Kolkata"
}
], - "total_count": 1,
- "total_pages": 1
}
Creates a Time Off record
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Timeoff
object (TimeoffDocumentParams) Timeoff document params | |
employment_id required | string |
end_date required | string <datetime> |
notes | string |
start_date required | string <datetime> |
required | Array of objects (TimeoffDaysParams) |
timeoff_type required | string (TimeoffType) Enum: "paid_time_off" "sick_leave" "public_holiday" "unpaid_leave" "extended_leave" "in_lieu_time" "maternity_leave" "paternity_leave" "parental_leave" "bereavement" "military_leave" "other" |
timezone required | string (Timezone) |
approved_at required | string <date-time> (DateTimeIso8601) UTC date time in ISO 8601 format. |
approver_id required | string or null (NullableApproverId) The field matches the |
status required | string Value: "approved" |
{- "document": {
- "content": "string",
- "name": "string"
}, - "employment_id": "string",
- "end_date": "string",
- "notes": "string",
- "start_date": "string",
- "timeoff_days": [
- {
- "day": "2021-07-01",
- "hours": 0
}
], - "timeoff_type": "sick_leave",
- "timezone": "Etc/UTC",
- "approved_at": "2021-07-15T18:18:17Z",
- "approver_id": "51546f60-dd71-4223-9312-4efede68a497",
- "status": "approved"
}
{- "data": {
- "timeoff": {
- "document": {
- "id": "9880b711-file-id-ecf8f551bd78",
- "inserted_at": "2021-11-12T17:19:21",
- "name": "id.pdf",
- "sub_type": "personal_id",
- "type": "id"
}, - "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "end_date": "2021-12-21",
- "id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "notes": "Some notes",
- "start_date": "2021-12-20",
- "status": "approved",
- "timeoff_days": [
- {
- "day": "2021-12-20",
- "hours": 8
}, - {
- "day": "2021-12-21",
- "hours": 8
}
], - "timeoff_type": "paid_time_off",
- "timezone": "Asia/Kolkata"
}
}
}
Lists all time off types that can be used for the timeoff_type
parameter
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "data": {
- "description": "string",
- "name": "sick_leave"
}
}
This event is triggered when an expense is deleted by an employee or canceled by an admin.
event_type required | string |
employment_id required | string |
expense_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "expense.deleted",
- "expense_id": "129d02bc-dd6a-11ed-ac99-cb057df06a33"
}
This event is triggered when an expense is reimbursed.
event_type required | string |
employment_id required | string |
expense_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "expense.reimbursed",
- "expense_id": "129d02bc-dd6a-11ed-ac99-cb057df06a33"
}
This event is triggered when an expense is submitted by an employee.
event_type required | string |
employment_id required | string |
expense_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "expense.submitted",
- "expense_id": "129d02bc-dd6a-11ed-ac99-cb057df06a33"
}
This event is triggered when an expense is declined.
event_type required | string |
employment_id required | string |
expense_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "expense.declined",
- "expense_id": "129d02bc-dd6a-11ed-ac99-cb057df06a33"
}
This event is triggered when an expense is approved.
event_type required | string |
employment_id required | string |
expense_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "expense.approved",
- "expense_id": "129d02bc-dd6a-11ed-ac99-cb057df06a33"
}
This event is triggered whenever an expense is updated.
event_type required | string |
employment_id required | string |
expense_id required | string |
{- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "expense.updated",
- "expense_id": "129d02bc-dd6a-11ed-ac99-cb057df06a33"
}
Lists all expenses records
page | integer Example: page=1 Starts fetching records after the given page |
page_size | integer Example: page_size=30 Change the amount of records returned per page, defaults to 20, limited to 100 |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "current_page": 1,
- "expenses": [
- {
- "amount": 1000,
- "converted_amount": 1000,
- "converted_currency": {
- "code": "CZK",
- "name": "Czech Koruna",
- "symbol": "Kč"
}, - "converted_tax_amount": 500,
- "currency": {
- "code": "CZK",
- "name": "Czech Koruna",
- "symbol": "Kč"
}, - "employment_id": "ba9ead59-e471-4043-a7ea-07dbb105e72c",
- "expense_date": "2021-09-03",
- "receipts": [
- {
- "id": "9880b711-file-id-ecf8f551bd78",
- "inserted_at": "2021-11-12T17:19:21",
- "name": "id.pdf",
- "sub_type": "personal_id",
- "type": "id"
}
], - "tax_amount": 500,
- "title": "New desk"
}
], - "total_count": 1,
- "total_pages": 1
}
Creates an approved expense
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Expenses
amount required | integer |
category | string Enum: "education_training" "home_office" "meals" "other" "phone_utilities" "tech_equipment" "travel" "coworking" Categories allowed for an expense |
currency required | string The three-letter code for the expense currency. |
employment_id required | string The ID for the employment to which this expense relates. |
expense_date required | string Date of the purchase, which must be in the past |
object (Base64File) All the params needed upload a base64 file. | |
Array of objects (Base64File) <= 5 items | |
reviewed_at | string <date> The date and time that the expense was reviewed in ISO8601 format. If not provided, it defaults to the current datetime. |
reviewer_id | string If the person reviewing the expense is a user in Remote, you can provide its user id for this field. If a value is not provided, defaults to the user that generated the API token. |
tax_amount | integer |
timezone | string (Timezone) |
title required | string |
{- "amount": 8000,
- "category": "home_office",
- "currency": "EUR",
- "employment_id": "d4ebc714-4950-47a9-a464-28e1f1ab2a90",
- "expense_date": "2020-12-11",
- "receipt": {
- "content": "UGVyaW9kIEVuZCBEYXRlLFBheSBEYXRlLEVtcG...5jZSBPZiBSZXNpZGVuYdXJyZW50LEFsbG93",
- "name": "receipt.pdf"
}, - "reviewed_at": "2023-01-11T11:12:13Z",
- "reviewer_id": "14c14128-f5f4-475a-8ec0-6329b4832a61",
- "tax_amount": 0,
- "timezone": "Etc/UTC",
- "title": "new keyboard"
}
{- "data": {
- "expense": {
- "amount": 1000,
- "converted_amount": 1000,
- "converted_currency": {
- "code": "CZK",
- "name": "Czech Koruna",
- "symbol": "Kč"
}, - "converted_tax_amount": 500,
- "currency": {
- "code": "CZK",
- "name": "Czech Koruna",
- "symbol": "Kč"
}, - "employment_id": "ba9ead59-e471-4043-a7ea-07dbb105e72c",
- "expense_date": "2021-09-03",
- "receipts": [
- {
- "id": "9880b711-file-id-ecf8f551bd78",
- "inserted_at": "2021-11-12T17:19:21",
- "name": "id.pdf",
- "sub_type": "personal_id",
- "type": "id"
}
], - "tax_amount": 500,
- "title": "New desk"
}
}
}
Shows a single expense record
id required | string Expense ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "data": {
- "expense": {
- "amount": 1000,
- "converted_amount": 1000,
- "converted_currency": {
- "code": "CZK",
- "name": "Czech Koruna",
- "symbol": "Kč"
}, - "converted_tax_amount": 500,
- "currency": {
- "code": "CZK",
- "name": "Czech Koruna",
- "symbol": "Kč"
}, - "employment_id": "ba9ead59-e471-4043-a7ea-07dbb105e72c",
- "expense_date": "2021-09-03",
- "receipts": [
- {
- "id": "9880b711-file-id-ecf8f551bd78",
- "inserted_at": "2021-11-12T17:19:21",
- "name": "id.pdf",
- "sub_type": "personal_id",
- "type": "id"
}
], - "tax_amount": 500,
- "title": "New desk"
}
}
}
Updates an expense
id required | string Expense ID |
Expenses
status required | string Value: "approved" |
{- "status": "approved"
}
{- "data": {
- "expense": {
- "amount": 1000,
- "converted_amount": 1000,
- "converted_currency": {
- "code": "CZK",
- "name": "Czech Koruna",
- "symbol": "Kč"
}, - "converted_tax_amount": 500,
- "currency": {
- "code": "CZK",
- "name": "Czech Koruna",
- "symbol": "Kč"
}, - "employment_id": "ba9ead59-e471-4043-a7ea-07dbb105e72c",
- "expense_date": "2021-09-03",
- "receipts": [
- {
- "id": "9880b711-file-id-ecf8f551bd78",
- "inserted_at": "2021-11-12T17:19:21",
- "name": "id.pdf",
- "sub_type": "personal_id",
- "type": "id"
}
], - "tax_amount": 500,
- "title": "New desk"
}
}
}
Updates an expense
id required | string Expense ID |
Expenses
status required | string Value: "approved" |
{- "status": "approved"
}
{- "data": {
- "expense": {
- "amount": 1000,
- "converted_amount": 1000,
- "converted_currency": {
- "code": "CZK",
- "name": "Czech Koruna",
- "symbol": "Kč"
}, - "converted_tax_amount": 500,
- "currency": {
- "code": "CZK",
- "name": "Czech Koruna",
- "symbol": "Kč"
}, - "employment_id": "ba9ead59-e471-4043-a7ea-07dbb105e72c",
- "expense_date": "2021-09-03",
- "receipts": [
- {
- "id": "9880b711-file-id-ecf8f551bd78",
- "inserted_at": "2021-11-12T17:19:21",
- "name": "id.pdf",
- "sub_type": "personal_id",
- "type": "id"
}
], - "tax_amount": 500,
- "title": "New desk"
}
}
}
Downloads an expense receipt.
Deprecated since late February 2024 in favour of Download a receipt by id endpoint.
expense_id required | string Example: 3ab2e491-ad1c-47af-849c-3d0a53e20e0d The expense ID |
{- "message": "invalid {resource}"
}
Download a receipt by id.
expense_id required | string Example: 3ab2e491-ad1c-47af-849c-3d0a53e20e0d The expense ID |
receipt_id required | string Example: 6ab2e49o-ad1c-47af-849c-3d0a53e21e0e The receipt ID |
{- "message": "invalid {resource}"
}
This event is triggered when a new billing document is issued to the company.
event_type required | string |
document_type required | string Enum: "prefunding_invoice" "reconciliation_invoice" "supplemental_service_invoice" "prefunding_credit_note" "reconciliation_credit_note" "supplemental_service_credit_note" |
billing_document_id required | string |
{- "billing_document_id": "2f2b7ce8-3f80-47fe-a0b1-57ad9217636d",
- "document_type": "reconciliation_invoice",
- "event_type": "billing_document.issued"
}
List billing documents for a company
period | string Example: period="2023-01" The month for the billing documents (in ISO-8601 format) |
page | integer Example: page=1 Starts fetching records after the given page |
page_size | integer Example: page_size=30 Change the amount of records returned per page, defaults to 20, limited to 100 |
{- "data": {
- "billing_documents": [
- {
- "billing_document_period": "2023-12",
- "billing_document_type": "base_salary",
- "id": "8772a9f1-b43c-46be-a1ce-e50b6819f5ee"
}
], - "current_page": 1,
- "total_count": 1,
- "total_pages": 1
}
}
Downloads a billing document PDF
billing_document_id required | string Example: 93t3j-billing-doc-id-9suej43 The billing document's ID |
{- "message": "invalid {resource}"
}
Shows a billing document details.
Please contact api-support@remote.com to request access to this endpoint.
billing_document_id required | string Example: 93t3j-billing-doc-id-9suej43 The billing document's ID |
{- "data": {
- "billing_document": {
- "billing_document_currency": "EUR",
- "billing_document_period": "2021-12",
- "billing_document_type": "reconciliation_invoice",
- "company_id": "2f889520-9a21-44b0-990d-e4ae37d8db53",
- "id": "8772a9f1-b43c-46be-a1ce-e50b6819f5ee",
- "issued_date": "2023-08-22",
- "items": [
- {
- "billing_document_amount": 1000000,
- "billing_document_currency": "CAD",
- "employment_id": "0d25c513-employment-id-198557128104",
- "source_amount": 50000,
- "source_currency": "EUR",
- "type": "base_salary"
}
], - "total": 1100000
}
}
}
This event is triggered when a custom field value is updated.
event_type required | string |
employment_id required | string |
custom_field_id required | string |
{- "custom_field_id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "employment_id": "2614f814-b08e-4c8e-8c4d-ddbcc4692d99",
- "event_type": "custom_field.value_updated"
}
Returns custom fields definitions
page | integer Example: page=1 Starts fetching records after the given page |
page_size | integer Example: page_size=30 Change the amount of records returned per page, defaults to 20, limited to 100 |
{- "current_page": 1,
- "custom_fields": [
- {
- "id": "01c0e4d2-f41b-11ed-9d3f-cb3ecccebb58",
- "name": "Internal ID",
- "type": "string"
}
], - "total_count": 1,
- "total_pages": 1
}
Returns a custom field value for a given employment
custom_field_id required | string Custom field ID |
employment_id required | string Employment ID |
{- "data": {
- "custom_field_value": {
- "custom_field_id": "01c0e4d2-f41b-11ed-9d3f-cb3ecccebb58",
- "value": "UXH34HG"
}
}
}
Estimate params
employer_currency_slug required | string (Slug) Currency Slug |
required | Array of objects (CostCalculatorEmploymentParam) |
include_benefits | boolean |
include_cost_breakdowns | boolean |
{- "employer_currency_slug": "663e0b79-c893-45ff-a1b2-f6dcabc098b5",
- "employments": [
- {
- "age": 0,
- "annual_gross_salary": 0,
- "annual_gross_salary_in_employer_currency": 0,
- "employment_term": "fixed",
- "region_slug": "string",
- "regional_to_employer_exchange_rate": "string",
- "title": "string"
}
], - "include_benefits": true,
- "include_cost_breakdowns": true
}
{- "data": {
- "content": "string"
}
}
Returns required fields JSON Schema for a given region. These are required in order to calculate the cost of employment for the region. These fields are based on employer contributions that are associated with the region or any of it's parent regions.
slug required | string Slug |
{- "data": {
- "schema": {
- "properties": {
- "ssn": {
- "pattern": "^[0-9]{3}-[0-9]{2}-(?!0{4})[0-9]{4}$",
- "title": "Social security number",
- "type": "string",
- "x-jsf-presentation": {
- "inputType": "text",
- "mask": "999-99-9999",
- "maskPlaceholder": "AAA-GG-SSSS",
- "maskSecret": 4
}
}
}, - "required": [
- "ssn"
], - "type": "object",
- "x-jsf-order": [
- "ssn"
]
}, - "version": 7
}
}
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Estimate params
employer_currency_slug required | string (Slug) Currency Slug |
required | Array of objects (CostCalculatorEmploymentParam) |
include_benefits | boolean |
include_cost_breakdowns | boolean |
{- "employer_currency_slug": "663e0b79-c893-45ff-a1b2-f6dcabc098b5",
- "employments": [
- {
- "age": 0,
- "annual_gross_salary": 0,
- "annual_gross_salary_in_employer_currency": 0,
- "employment_term": "fixed",
- "region_slug": "string",
- "regional_to_employer_exchange_rate": "string",
- "title": "string"
}
], - "include_benefits": true,
- "include_cost_breakdowns": true
}
{- "data": {
- "employments": [
- {
- "country": {
- "alpha_2_code": "PT",
- "code": "PRT",
- "name": "Portugal",
- "slug": "portugal-ab18d96a-a9fd-42c0-9688-24f963d8bdc1"
}, - "employer_currency_costs": {
- "annual_benefits_breakdown": [
- {
- "amount": 1120000,
- "description": "Description of how the amount is calculated.",
- "name": "Insurance",
}
], - "annual_benefits_total": 1441200,
- "annual_contributions_breakdown": [
- {
- "amount": 1120000,
- "description": "Description of how the amount is calculated.",
- "name": "Insurance",
}
], - "annual_contributions_total": 1441200,
- "annual_gross_salary": 12000000,
- "annual_total": 13441200,
- "currency": {
- "code": "EUR",
- "name": "European Euro",
- "slug": "eur-3b840951-099f-4bd5-90b9-032f7bfe51d9",
- "symbol": "€"
}, - "extra_statutory_payments_breakdown": [
- {
- "amount": 1120000,
- "description": "Description of how the amount is calculated.",
- "name": "Insurance",
}
], - "extra_statutory_payments_total": 0,
- "monthly_benefits_breakdown": [
- {
- "amount": 1120000,
- "description": "Description of how the amount is calculated.",
- "name": "Insurance",
}
], - "monthly_benefits_total": 120100,
- "monthly_contributions_breakdown": [
- {
- "amount": 1120000,
- "description": "Description of how the amount is calculated.",
- "name": "Insurance",
}
], - "monthly_contributions_total": 120100,
- "monthly_gross_salary": 1000000,
- "monthly_tce": 1120000,
- "monthly_total": 1120100
}, - "has_extra_statutory_payment": false,
- "region": {
- "code": "USA",
- "name": "United States",
- "slug": "663e0b79-c893-45ff-a1b2-f6dcabc098b5"
}, - "regional_currency_costs": {
- "annual_benefits_breakdown": [
- {
- "amount": 1120000,
- "description": "Description of how the amount is calculated.",
- "name": "Insurance",
}
], - "annual_benefits_total": 1441200,
- "annual_contributions_breakdown": [
- {
- "amount": 1120000,
- "description": "Description of how the amount is calculated.",
- "name": "Insurance",
}
], - "annual_contributions_total": 1441200,
- "annual_gross_salary": 12000000,
- "annual_total": 13441200,
- "currency": {
- "code": "EUR",
- "name": "European Euro",
- "slug": "eur-3b840951-099f-4bd5-90b9-032f7bfe51d9",
- "symbol": "€"
}, - "extra_statutory_payments_breakdown": [
- {
- "amount": 1120000,
- "description": "Description of how the amount is calculated.",
- "name": "Insurance",
}
], - "extra_statutory_payments_total": 0,
- "monthly_benefits_breakdown": [
- {
- "amount": 1120000,
- "description": "Description of how the amount is calculated.",
- "name": "Insurance",
}
], - "monthly_benefits_total": 120100,
- "monthly_contributions_breakdown": [
- {
- "amount": 1120000,
- "description": "Description of how the amount is calculated.",
- "name": "Insurance",
}
], - "monthly_contributions_total": 120100,
- "monthly_gross_salary": 1000000,
- "monthly_tce": 1120000,
- "monthly_total": 1120100
}
}
]
}
}
Lists active and processing countries
Authorization required | string Example: Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ Authorization header with basic authentication encoded with Base64. Check the Auth & Authorization section for more information on how to create the encoded token. |
{- "data": [
- {
- "availability": "active",
- "child_regions": {
- "code": "USA",
- "name": "United States",
- "slug": "663e0b79-c893-45ff-a1b2-f6dcabc098b5"
}, - "code": "PRT",
- "currency": {
- "code": "EUR",
- "name": "European Euro",
- "slug": "eur-3b840951-099f-4bd5-90b9-032f7bfe51d9",
- "symbol": "€"
}, - "has_additional_fields": "true",
- "name": "Portugal",
- "original_country_slug": "portugal-ab18d96a-a9fd-42c0-9688-24f963d8bdc1",
- "region_slug": "663e0b79-c893-45ff-a1b2-f6dcabc098b5"
}
]
}
Endpoint to exchange tokens in the Authorization Code, Client Credentials and Refresh Token flows
Authorization required | string Example: Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ Authorization header with basic authentication encoded with Base64. Check the Auth & Authorization section for more information on how to create the encoded token. |
OAuth2Token
code required | string The authorization code generated in Authorization Code flow |
grant_type required | string Value: "authorization_code" The Authorization flow |
{- "code": "eyJhbG...xb6H0",
- "grant_type": "authorization_code"
}
{- "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.cThIIoDvwdueQB468K5xDc5633seEFoqwxjF_xSJyQQ",
- "company_id": "6e60f5f9-e6a6-4b04-b13c-84bced848bab",
- "expires_in": 7200,
- "refresh_token": "b480036a-d229-49ef-a606-7e8fba58a5eb",
- "token_type": "Bearer",
- "user_id": "6550e536-8655-4bce-8bd9-b295f786ad71"
}
Delete a Recurring Incentive, that is, a monthly paid incentive.
Internally, Remote schedules upcoming incentives. As such, when you attempt to
delete a recurring incentive, Remote will ONLY delete scheduled incentives
with the pending
status.
Incentives payments that are already scheduled and cannot be deleted will be included in the response, in case you need to reference them.
id required | string Recurring Incentive ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "data": {
- "already_scheduled_incentives": [
- {
- "amount": 50000,
- "amount_tax_type": "net",
- "effective_date": "2021-12-20",
- "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "expected_payout_date": "2021-12-31",
- "id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "note": "Signing bonus",
- "recurring_incentive_id": "1c130827-f95c-4495-b7cb-5876dce686b8",
- "status": "pending",
- "type": "signing_bonus"
}
], - "status": "string"
}
}
List all Recurring Incentives of a company.
status | string Example: status=active Filter by recurring incentive status: active or deactive. |
type | string Example: type=meal_allowance Filter by recurring incentive type. |
note | string Example: note=meal Filter by recurring incentives that contain the value in their notes. |
page | integer Example: page=1 Starts fetching records after the given page |
page_size | integer Example: page_size=30 Change the amount of records returned per page, defaults to 20, limited to 100 |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "current_page": 1,
- "recurring_incentives": [
- {
- "amount": 50000,
- "amount_tax_type": "net",
- "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "end_date": "2022-12-20",
- "id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "note": "Monthly stipend to buy food",
- "start_date": "2021-12-20",
- "status": "active",
- "type": "meal_allowance"
}
], - "total_count": 1,
- "total_pages": 1
}
Create a Recurring Incentive, that is, a monthly paid incentive.
Incentives use the currency of the employment specified provided in the employment_id
field.
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
RecurringIncentive
amount required | integer The amount (in the currency of the employment) to be given to the employee. This field accepts fractional amounts as well. However to avoid precision issues and errors that can arise from storing fractional amounts, the Remote API only accepts currencies and their fractional amounts as integers. This means you should append fractional amounts to the end of the amount you're passing in with this field. For example, if the incentive you're offering is EUR 500.25, you would specify |
amount_tax_type required | string (AmountTaxType) Enum: "gross" "net" Whether the amount given accounts for taxes or not. |
effective_date required | string <date> The date at which the incentive should take effect. Note that the incentive is not paid out on the effective date, but during the next payroll cycle. The effective date determines which payroll cycle the incentive will be paid out in. The effective date needs to be today or a future date. Note for recurring incentives: since the months don't have the same amount of days,
if day of month of |
note | string or null |
duration_in_months | string <integer> How many times the payment will repeat. At the moment we only fully support monthly frequency. This field is only necessary if the recurring incentive has an end date. |
employment_id required | string |
type required | string Enum: "acting_up_allowance" "allowance" "car_allowance" "health_and_wellness_allowance" "internet_allowance" "meal_allowance" "on_call_allowance" "parenthood_allowance" "phone_allowance" "relocation_allowance" "travel_allowance" "work_from_home_allowance" "bonus" "holiday_bonus" "referral_bonus" "retention_bonus" "commission" "other" "overtime" "stipend" |
{- "amount": 50000,
- "amount_tax_type": "net",
- "duration_in_months": 3,
- "effective_date": "2021-12-20",
- "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "note": "Bonus for moving start date to an earlier date",
- "type": "meal_allowance"
}
{- "data": {
- "recurring_incentive": {
- "amount": 50000,
- "amount_tax_type": "net",
- "employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
- "end_date": "2022-12-20",
- "id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "note": "Monthly stipend to buy food",
- "start_date": "2021-12-20",
- "status": "active",
- "type": "meal_allowance"
}
}
}
Updates an employment. Use this endpoint to modify employment states for testing in the Sandbox environment. This endpoint will respond with a 404 outside of the Sandbox environment.
For updating an employment's parameters outside of testing purposes, use this Employment update endpoint.
employment_id required | string Example: e3ee69d7-1293-4664-92fc-02625dae5247 Employment ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Employment params
status | string (EmploymentStatus) Enum: "active" "created" "created_awaiting_reserve" "created_reserve_paid" "initiated" "invited" "pending" "review" "archived" "deleted" The status of employment |
{- "status": "active"
}
{- "data": {
- "employment": {
- "address_details": { },
- "administrative_details": { },
- "bank_account_details": [ ],
- "basic_information": { },
- "billing_address_details": { },
- "company_id": "e31adae1-company-id-af5fba7dd803",
- "contract_details": { },
- "country": {
- "code": "AUT",
- "name": "Austria"
}, - "created_at": "2021-11-11T18:44:39",
- "emergency_contact_details": { },
- "files": [ ],
- "full_name": "Jane Smith",
- "id": "20a72f86-employment-id-9e4942a902ff",
- "job_title": "Engineer",
- "onboarding_tasks": {
- "address_details": {
- "description": "Primary residence.",
- "status": "completed"
}, - "administrative_details": {
- "description": "Information we need for tax purposes.",
- "status": "completed"
}, - "bank_account_details": {
- "description": "Bank account used for receiving salary payments.",
- "status": "completed"
}, - "billing_address_details": {
- "description": "Address associated with the employee's bank account.",
- "status": "completed"
}, - "contract_details": {
- "description": "Employee-specific details for their employment agreement.",
- "status": "completed"
}, - "emergency_contact_details": {
- "description": "Who should be called in an emergency.",
- "status": "completed"
}, - "employment_document_details": {
- "description": "We need some additional documents.",
- "status": "pending"
}, - "personal_details": {
- "description": "Personal details, such as name and date of birth.",
- "status": "completed"
}, - "pricing_plan_details": {
- "description": "How often Remote will bill employers for management fees.",
- "status": "completed"
}
}, - "personal_details": { },
- "personal_email": "jane@smith.com",
- "pricing_plan_details": {
- "frequency": "annually"
}, - "provisional_start_date": "2021-07-03",
- "status": "created",
- "type": "employee",
- "updated_at": "2021-11-11T18:44:39",
- "user_status": "active",
- "work_email": "jane.smith@company.com"
}
}
}
Updates an employment. Use this endpoint to modify employment states for testing in the Sandbox environment. This endpoint will respond with a 404 outside of the Sandbox environment.
For updating an employment's parameters outside of testing purposes, use this Employment update endpoint.
employment_id required | string Example: e3ee69d7-1293-4664-92fc-02625dae5247 Employment ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Employment params
status | string (EmploymentStatus) Enum: "active" "created" "created_awaiting_reserve" "created_reserve_paid" "initiated" "invited" "pending" "review" "archived" "deleted" The status of employment |
{- "status": "active"
}
{- "data": {
- "employment": {
- "address_details": { },
- "administrative_details": { },
- "bank_account_details": [ ],
- "basic_information": { },
- "billing_address_details": { },
- "company_id": "e31adae1-company-id-af5fba7dd803",
- "contract_details": { },
- "country": {
- "code": "AUT",
- "name": "Austria"
}, - "created_at": "2021-11-11T18:44:39",
- "emergency_contact_details": { },
- "files": [ ],
- "full_name": "Jane Smith",
- "id": "20a72f86-employment-id-9e4942a902ff",
- "job_title": "Engineer",
- "onboarding_tasks": {
- "address_details": {
- "description": "Primary residence.",
- "status": "completed"
}, - "administrative_details": {
- "description": "Information we need for tax purposes.",
- "status": "completed"
}, - "bank_account_details": {
- "description": "Bank account used for receiving salary payments.",
- "status": "completed"
}, - "billing_address_details": {
- "description": "Address associated with the employee's bank account.",
- "status": "completed"
}, - "contract_details": {
- "description": "Employee-specific details for their employment agreement.",
- "status": "completed"
}, - "emergency_contact_details": {
- "description": "Who should be called in an emergency.",
- "status": "completed"
}, - "employment_document_details": {
- "description": "We need some additional documents.",
- "status": "pending"
}, - "personal_details": {
- "description": "Personal details, such as name and date of birth.",
- "status": "completed"
}, - "pricing_plan_details": {
- "description": "How often Remote will bill employers for management fees.",
- "status": "completed"
}
}, - "personal_details": { },
- "personal_email": "jane@smith.com",
- "pricing_plan_details": {
- "frequency": "annually"
}, - "provisional_start_date": "2021-07-03",
- "status": "created",
- "type": "employee",
- "updated_at": "2021-11-11T18:44:39",
- "user_status": "active",
- "work_email": "jane.smith@company.com"
}
}
}
Creates an employment without provisional_start_date validation.
This endpoint is only available in Sandbox and allows creating employments which
provisional_start_date
is in the past. This is especially helpful for:
This endpoint will respond with a 404 outside of the Sandbox environment.
For creating an employment's parameters outside of testing purposes, use this Employment create endpoint
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Employment params
basic_information | object Employment basic information. When using this field, the same other root level fields (name, personal_email, job_title,
provisional_start_date, and seniority_date) will be ignored.
Its properties may vary depending on the country, you must query the Show form schema endpoint
passing the country code and |
company_id | string This optional field is deprecated. |
country_code required | string |
type | string Enum: "employee" "contractor" If not provided, it will default to |
{- "basic_information": {
- "email": "jane@smith.com",
- "has_seniority_date": "no",
- "job_title": "Engineer",
- "name": "Jane Smith",
- "provisional_start_date": "2022-07-10"
}, - "company_id": "string",
- "country_code": "AUS",
- "type": "employee",
- "full_name": "Jane Smith",
- "job_title": "Engineer",
- "personal_email": "jane@smith.com",
- "provisional_start_date": "2022-07-10"
}
{- "data": {
- "employment": {
- "basic_information": {
- "email": "jane@smith.com",
- "has_seniority_date": "no",
- "job_title": "Engineer",
- "name": "Jane Smith",
- "provisional_start_date": "2022-07-10"
}, - "company_id": "20a72f86-company-id-20a72f86",
- "country_code": "AUS",
- "created_at": "2023-02-01T15:42:03",
- "employment_lifecycle_stage": "employment_creation",
- "full_name": "Jane Smith",
- "id": "663e0b79-c893-45ff-a1b2-f6dcabc098b5",
- "job_title": "Engineer",
- "personal_email": "jane@smith.com",
- "provisional_start_date": "2022-07-10",
- "type": "employee",
- "updated_at": "2023-02-01T15:42:03"
}
}
}
Triggers a callback previously registered for webhooks. Use this endpoint to emit a webhook for testing in the Sandbox environment. This endpoint will respond with a 404 outside of the Sandbox environment.
Webhook Trigger Params
employment_id required | string |
event_type required | string Enum: "billing_document.issued" "contract_amendment.canceled" "contract_amendment.deleted" "contract_amendment.done" "contract_amendment.review_started" "contract_amendment.submitted" "custom_field.value_updated" "employment_contract.active_contract_updated" "employment.account.updated" "employment.details.updated" "employment.onboarding_task.completed" "employment.onboarding.completed" "employment.personal_information.updated" "employment.user_status.activated" "employment.user_status.deactivated" "expense.approved" "expense.declined" "expense.deleted" "expense.reimbursed" "expense.submitted" "expense.updated" "identity_verification.verification_required" "incentive.created" "incentive.deleted" "incentive.paid" "incentive.processing_started" "incentive.updated" "offboarding.deleted" "offboarding.done" "offboarding.review_started" "offboarding.submitted" "offboarding.submitted_to_payroll" "offboarding.completed" "payslip.released" "timeoff.approved" "timeoff.canceled" "timeoff.date_changed" "timeoff.declined" "timeoff.requested" "timeoff.taken" "timeoff.updated" |
{- "employment_id": "e966a8b8-1076-11ee-a5f2-9b3997a968f6",
- "event_type": "employment.onboarding_task.completed"
}
{- "data": {
- "status": "ok"
}
}
Approves a contract amendment request without the intervention of a Remote admin. Approvals done via this endpoint are effective immediately, regardless of the effective date entered on the contract amendment creation.
This endpoint is only available in Sandbox, otherwise it will respond with a 404.
contract_amendment_request_id required | string Example: 6d947344-b053-4a4f-acf0-79d296cbd082 Contract amendment request ID |
{- "data": {
- "contract_amendment": {
- "amendment_contract_id": "8772a9f1-b43c-46be-a1ce-e50b6819f5ee",
- "changes": {
- "compensation.amount": {
- "current": 500000,
- "previous": 400000
}, - "contract.job_title": {
- "current": "A new job title",
- "previous": "An old job title"
}, - "contract_details.details.contract_duration_type": {
- "current": "fixed_term",
- "previous": "indefinite"
}
}, - "employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
- "id": "ba310525-9282-40c9-8977-14d844bf891a",
- "requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
- "requested_details": {
- "additional_comments": null,
- "effective_date": "2024-03-04",
- "reason_for_change": "annual_pay_adjustment",
- "reason_for_change_description": null,
- "salary_decrease_details": null
}, - "status": "submitted",
- "submitted_at": "2023-04-13T13:35:06Z",
}
}
}
Use this endpoint to cancel an existing contract amendment request.
This endpoint is only available in Sandbox, otherwise it will respond with a 404.
contract_amendment_request_id required | string Example: 5bdc2cb9-6bda-4cf7-bc6e-0b122791e52a Contract amendment request ID |
{- "data": {
- "status": "ok"
}
}
Downloads a resignation letter from an employment request.
employment_request_id required | string Example: 3ab2e491-ad1c-47af-849c-3d0a53e20e0d The employment request ID |
{- "message": "invalid {resource}"
}
Shows the details of a resignation with status submitted
.
employment_request_id required | string Example: 3ab2e491-ad1c-47af-849c-3d0a53e20e0d The employment request ID |
{- "data": {
- "resignation": {
- "contract_currency_code": "USD",
- "contract_job_title": "Developer",
- "contract_proabtion_period_passed": true,
- "contract_probation_period_end_date": "2021-06-15",
- "contract_start_date": "2021-03-15",
- "days_of_notice": 31,
- "paid_timeoffs_breakdown_labels": [
- "Used until today: 60 days",
- "Waiting for approval: 0 days"
], - "proposed_last_day": "2024-04-12",
- "resignation_date": "2024-03-12",
- "resignation_reason_label": "Retirement"
}
}
}
Validates a resignation employment request
employment_request_id required | string Example: 3ab2e491-ad1c-47af-849c-3d0a53e20e0d The employment request ID |
ValidateResignation
accepts_proposed_notice required | boolean |
agrees_to_pto_amount required | boolean |
agrees_to_pto_amount_notes | string Required if |
agrees_to_resignation_reason required | boolean |
agrees_to_resignation_reason_notes | string required if |
has_additional_information required | boolean |
has_additional_information_notes | string required if |
has_more_salary_info required | boolean |
has_more_salary_info_notes | string required if |
is_owed_outstanding_reimbursements required | boolean |
object required if | |
object Required if | |
object (ResignationFile) Paid time off accuracy Typically, any vacation pay accrued and unpaid at the time
of termination must be paid out to the employee. To avoid overpaying or underpaying,
please make sure we have an accurate account of their paid time off by querying the
Show Time Off Balance endpoint,
filtering by the | |
will_take_more_pto required | boolean |
will_take_more_pto_notes | string required if |
{- "accepts_proposed_notice": false,
- "agrees_to_pto_amount": false,
- "agrees_to_pto_amount_notes": "I don't agree.",
- "agrees_to_resignation_reason": false,
- "agrees_to_resignation_reason_notes": "I don't agree.",
- "has_additional_information": true,
- "has_additional_information_notes": "Some extra info.",
- "has_more_salary_info": true,
- "has_more_salary_info_notes": "Some info about the salary.",
- "is_owed_outstanding_reimbursements": true,
- "owed_outstanding_reimbursements": {
- "amount": 1500,
- "notes": "Compensation."
}, - "proposed_last_date": {
- "date": "2042-04-15",
- "notes": "This date is better."
}, - "will_take_more_pto": true,
- "will_take_more_pto_notes": "3 more days."
}
{- "data": {
- "status": "ok"
}
}
Lists all departments for the authorized company specified in the request.
company_id required | string Example: company_id=d2091b1e-b1a4-437a-91ea-2809ffbb6d59 Company ID |
paginate | boolean Paginate option. Default: true. When true, paginates response; otherwise, does not. |
page | integer >= 1 Default: 1 Example: page=1 Starts fetching records after the given page |
page_size | integer >= 1 Default: 20 Example: page_size=20 Number of items per page |
{- "current_page": 1,
- "data": {
- "company_departments": [
- {
- "company_id": "669f9e18-889f-4c2c-95b8-67795a3113cc",
- "id": "89c4fbb2-cd1f-4334-8e4b-280f8795bbd8",
- "name": "Marketing"
}
]
}, - "total_count": 1,
- "total_pages": 1
}
Creates a new department in the specified company. Department names may be non-unique and must be non-empty with no more than 255 characters (Unicode code points).
Create Company Department request params
company_id required | string The Company ID. Required in all cases, whether the API credentials have access to multiple companies or just one. |
name required | string The name of the company department. May be non-unique and limited to 255 characters, maximum. |
{- "company_id": "669f9e18-889f-4c2c-95b8-67795a3113cc",
- "name": "Marketing"
}
{- "data": {
- "company_department": {
- "company_id": "669f9e18-889f-4c2c-95b8-67795a3113cc",
- "id": "89c4fbb2-cd1f-4334-8e4b-280f8795bbd8",
- "name": "Marketing"
}
}
}
List all company managers of an integration. If filtered by the company_id param, it lists only company managers belonging to the specified company.
company_id | string Example: company_id=0a8s2d1-company-id-2e3f4th A Company ID to filter the results (only applicable for Integration Partners). |
page | integer Example: page=1 Starts fetching records after the given page |
page_size | integer Example: page_size=30 Change the amount of records returned per page, defaults to 20, limited to 100 |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "company_managers": [
- {
- "company_id": "0a8s2d1-company-id-2e3f4th",
- "role": "owner",
- "user_email": "user@example.com",
- "user_id": "983088c9-user-id-023fc08b8625",
- "user_name": "Anne White"
}
], - "current_page": 1,
- "total_count": 1,
- "total_pages": 1
}
Create a Company Manager and sends the invitation email for signing in to the Remote Platform.
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Company Manager params
company_id | string The Company ID. Required if the access token can access multiple companies. Optional otherwise. |
email required | string <email> The work email of the company manager |
name required | string The name of the company manager |
role required | string The role assigned for the new manager. The value should be one of the following:
|
{- "company_id": "string",
- "email": "user@example.com",
- "name": "string",
- "role": "string"
}
{- "company_manager": {
- "company_id": "0a8s2d1-company-id-2e3f4th",
- "role": "owner",
- "user_email": "user@example.com",
- "user_id": "983088c9-user-id-023fc08b8625",
- "user_name": "Anne White"
}
}
Deletes a Company Manager user
user_id required | string Example: 1a8s2d1-user-id-2e3f4tz User ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "data": {
- "status": "ok"
}
}
Shows a single company manager user
user_id required | string Example: 1a8s2d1-user-id-2e3f4tz User ID |
{- "data": {
- "company_manager": {
- "company_id": "0a8s2d1-company-id-2e3f4th",
- "role": "owner",
- "user_email": "user@example.com",
- "user_id": "983088c9-user-id-023fc08b8625",
- "user_name": "Anne White"
}
}
}
Shows information about the entities that can be controlled by the current auth token.
Authorization required | string Example: Bearer <ANY ACCESS TOKEN> This endpoint works with any of the access tokens provided. You can use an access token obtained through the Client Credentials flow, the Authorization Code flow, or the Refresh Token flow. |
{- "data": {
- "client_id": "1pws9iw986yq1ec57h159q29l",
- "integration": {
- "contact_email": "partner_admin@example.com",
- "display_name": "Integration Display Name",
- "name": "integration_partner"
}
}
}
Downloads a file.
Please contact api-support@remote.com to request access to this endpoint.
id required | string Example: 93t3j-file-id-9suej43 File ID |
{- "message": "invalid {resource}"
}
Uploads a file associated with a specified employment.
Please contact api-support@remote.com to request access to this endpoint.
Authorization required | string Example: Bearer <ANY ACCESS TOKEN> This endpoint works with any of the access tokens provided. You can use an access token obtained through the Client Credentials flow, the Authorization Code flow, or the Refresh Token flow. |
The file to be uploaded
employment_id required | string |
file required | string <binary> |
type required | string |
{- "data": {
- "file": {
- "id": "9880b711-file-id-ecf8f551bd78",
- "inserted_at": "2021-11-12T17:19:21",
- "name": "id.pdf",
- "sub_type": "personal_id",
- "type": "id"
}
}
}
{- "data": {
- "benefit_offers_by_employment": [
- {
- "benefit_offers": [
- {
- "benefit_group": {
- "id": "54297cfd-cf60-4cf4-a70f-ac2061d72b44",
- "name": "Health",
- "policy_end_date": "2024-12-31",
- "policy_start_date": "2024-01-01"
}, - "benefit_tier": {
- "id": "66297cfd-cf60-4cf4-a70f-ac2561d92b04",
- "name": "Premium 2023 (Medical, Dental and Vision)",
- "providers": [
- {
- "id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87",
- "name": "Health Provider"
}
]
}, - "benefits": [
- {
- "costs": {
- "employee_cost": 234,
- "employer_cost": 44
}, - "coverage_end_date": "2025-02-28",
- "coverage_start_date": "2024-03-18",
- "id": "562977cfd-cf60-4cf4-a70f-ac2061d709088",
- "name": "benefit name",
- "projected_costs": null,
- "provider": {
- "id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87",
- "name": "Health Provider"
}, - "status": "enrolled",
- "type": "benefit type"
}
], - "costs": {
- "employee_cost": 234,
- "employer_cost": 44
}
}
], - "costs": {
- "employee_cost": 234,
- "employer_cost": 44
}, - "employment": {
- "country": {
- "alpha_2_code": "PT",
- "code": "PRT",
- "country_subdivisions": [
- {
- "code": "PT-06",
- "name": "Coimbra",
- "subdivision_type": "District"
}, - {
- "code": "PT-11",
- "name": "Lisboa",
- "subdivision_type": "District"
}
], - "name": "Portugal",
- "supported_json_schemas": [
- "additional_documents",
- "address_details",
- "administrative_details",
- "employment-basic-information",
- "bank_account_details",
- "contract_details",
- "emergency_contact"
]
}, - "given_name": "Given Name",
- "id": "67897cfd-cf60-4cf4-a70f-ac2061d72984",
- "name": "Name",
- "surname": "Surname"
}
}
], - "company_id": "79297cfd-cf60-4cf4-a70f-ac2061d72a74",
- "currency": [
- {
- "code": "EUR",
- "name": "European Euro",
- "slug": "eur-3b840951-099f-4bd5-90b9-032f7bfe51d9",
- "symbol": "€"
}
]
}
}
List all companies that authorized your integration to act on their behalf. In other words, these are all the companies that your integration can manage. Any company that has completed the authorization flow for your integration will be included in the response.
Authorization required | string Example: Bearer <CLIENT-CREDENTIALS ACCESS TOKEN> Requires a client credentials access token obtained through the Client Credentials flow or the Refresh Token flow. The refresh token needs to have been obtained through the Client Credentials flow. |
{- "data": {
- "companies": [
- {
- "address_details": {
- "address": "1709 Broderick St",
- "address_line_2": "Flat number 123",
- "city": "San Francisco",
- "postal_code": "94115",
- "state": "CA"
}, - "bank_account_details": {
- "account_holder": "Joe Smith",
- "account_number": "31234123123",
- "account_type": "savings",
- "name": "Bank name",
- "ownership_type": "BUSINESS",
- "routing_number": "123124123"
}, - "company_owner_email": "te@remote.com",
- "company_owner_name": "Joe Smith",
- "country_code": "USA",
- "created_at": "2021-10-29T12:39:13",
- "desired_currency": "USD",
- "external_id": "00001111",
- "id": "e5a8b061-company-id-4c5c81ac885e",
- "name": "Your Company Name",
- "phone_number": "+1123123456",
- "status": "active",
- "terms_of_service_accepted_at": "2021-10-29T12:39:15Z",
- "updated_at": "2021-10-29T12:39:15"
}
]
}
}
Creates a new company.
When you call this endpoint and omit all the optional parameters in the request body, the following resources get created upon a successful response:
pending
.initiated
. See the update a company endpoint for
more details on how to get your company and its owner to active
status.
If you'd like to create a company and its owner with active
status in a single request,
please provide the optional address_details
parameter as well.
A required step for creating a company in Remote is to accept our Terms of Service (ToS).
Company managers need to be aware of our Terms of Service and Privacy Policy, hence it's the responsibility of our partners to advise and ensure company managers read and accept the ToS. The terms have to be accepted only once, before creating a company, and the Remote API will collect the acceptance timestamp as its confirmation.
To ensure users read the most recent version of Remote's Terms of Service, their acceptance must be done within the last fifteen minutes prior the company creation action.
To retrieve this information, partners can provide an element with any text and a description explaining that by performing that action they are accepting Remote's Term of Service. For instance, the partner can add a checkbox or a "Create Remote Account" button followed by a description saying "By creating an account, you agree to Remote's Terms of Service. Also see Remote's Privacy Policy".
action | string Example: action=get_oauth_access_tokens,send_create_password_email Complementary action(s) to perform when creating a company:
If |
Authorization required | string Example: Bearer <CLIENT-CREDENTIALS ACCESS TOKEN> Requires a client credentials access token obtained through the Client Credentials flow or the Refresh Token flow. The refresh token needs to have been obtained through the Client Credentials flow. |
Create Company params
address_details | object Fields can vary depending on the country. Please, check the required fields structure using the Show form schema endpoint.
Use the desired country and |
bank_account_details | object Fields can vary depending on the country. Please, check the required fields structure using the Show form schema endpoint.
Use the desired country and |
company_owner_email required | string <email> The company owner email. This value cannot be changed once set. |
company_owner_name required | string The company owner name. This value cannot be changed from the Remote API once set. |
country_code required | string 3-letter country code of the country the company address is located in. For a list of countries supported through the Remote API, make a call to the list countries endpoint. This endpoint will also include the 3-letter country codes you can use for this field. |
desired_currency required | string Enum: "AUD" "CAD" "CHF" "DKK" "EUR" "GBP" "JPY" "NOK" "NZD" "SEK" "SGD" "USD" Desired currency for invoicing and displaying converted salaries in Remote UI regardless of the employee's country. |
email_domain | string The domain of the company. Use this field to specify the company domain name when it's different from the domain in the company owner's email. |
external_id | string Id of the company as represented in the external partner system. |
name required | string The company name |
phone_number | string A phone number the company can be contacted with. |
registration_number | string The company registration number. This field or |
tax_number | string The tax identifier of the company. This field or |
terms_of_service_accepted_at required | string <date-time> Date and time the Terms of Service were accepted. To ensure users read the most recent version of Remote's Terms of Service, their action cannot have been done more than fifteen minutes ago. The UTC offset must be included in the ISO 8601 format: |
{- "address_details": {
- "address": "1709 Broderick St",
- "address_line_2": "Flat number 123",
- "city": "San Francisco",
- "postal_code": "94115",
- "state": "CA"
}, - "bank_account_details": {
- "account_holder": "Joe Smith",
- "account_number": "31234123123",
- "account_type": "savings",
- "name": "Bank name",
- "ownership_type": "BUSINESS",
- "routing_number": "123124123"
}, - "company_owner_email": "ceo@techvision.com",
- "company_owner_name": "Joe Smith",
- "country_code": "USA",
- "desired_currency": "USD",
- "external_id": "00001111",
- "name": "Tech Vision",
- "phone_number": "+11123123456",
- "tax_number": "123456789",
- "terms_of_service_accepted_at": "2022-05-05 15:03:45Z"
}
{- "data": {
- "data": {
- "company": {
- "address_details": {
- "address": "1709 Broderick St",
- "address_line_2": "Flat number 123",
- "city": "San Francisco",
- "postal_code": "94115",
- "state": "CA"
}, - "bank_account_details": {
- "account_holder": "Joe Smith",
- "account_number": "31234123123",
- "account_type": "savings",
- "name": "Bank name",
- "ownership_type": "BUSINESS",
- "routing_number": "123124123"
}, - "company_owner_email": "te@remote.com",
- "company_owner_name": "Joe Smith",
- "country_code": "USA",
- "created_at": "2021-10-29T12:39:13",
- "desired_currency": "USD",
- "external_id": "00001111",
- "id": "e5a8b061-company-id-4c5c81ac885e",
- "name": "Your Company Name",
- "phone_number": "+1123123456",
- "status": "active",
- "terms_of_service_accepted_at": "2021-10-29T12:39:15Z",
- "updated_at": "2021-10-29T12:39:15"
}
}
}
}
Given an ID, shows a company
company_id required | string Example: 0a8s2d1-company-id-2e3f4th Company ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "data": {
- "company": {
- "address_details": {
- "address": "1709 Broderick St",
- "address_line_2": "Flat number 123",
- "city": "San Francisco",
- "postal_code": "94115",
- "state": "CA"
}, - "bank_account_details": {
- "account_holder": "Joe Smith",
- "account_number": "31234123123",
- "account_type": "savings",
- "name": "Bank name",
- "ownership_type": "BUSINESS",
- "routing_number": "123124123"
}, - "company_owner_email": "te@remote.com",
- "company_owner_name": "Joe Smith",
- "country_code": "USA",
- "created_at": "2021-10-29T12:39:13",
- "desired_currency": "USD",
- "external_id": "00001111",
- "id": "e5a8b061-company-id-4c5c81ac885e",
- "name": "Your Company Name",
- "phone_number": "+1123123456",
- "status": "active",
- "terms_of_service_accepted_at": "2021-10-29T12:39:15Z",
- "updated_at": "2021-10-29T12:39:15"
}
}
}
Given an ID and a request object with new information, updates a company.
active
statusIf you created a company using the
create a company endpoint without all the required
request body parameters, you can use this endpoint to provide the missing data. Once the company
and its owner have all the necessary data, both their statuses will be set to active
and the company
onboarding will be marked as "completed".
The following constitutes a company with "all the necessary data":
address
, with valid address
, postal_code
, country
and state
parameters (Varies by country. Use the
show form schema endpoint to see which address parameters
are required).tax_number
or registration_number
is not nilname
is not nil (already required when creating the company)desired_currency
in their bank account (already required when creating the company)company_id required | string Example: 0a8s2d1-company-id-2e3f4th Company ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Update Company params
address_details | object Fields can vary depending on the country. Please, check the required fields structure using the Show form schema endpoint.
Use the desired country and |
bank_account_details | object Fields can vary depending on the country. Please, check the required fields structure using the Show form schema endpoint.
Use the desired country and |
country_code | string Country of company address |
desired_currency | string Enum: "AUD" "CAD" "CHF" "DKK" "EUR" "GBP" "JPY" "NOK" "NZD" "SEK" "SGD" "USD" Desired currency for invoicing and displaying converted salaries in Remote UI regardless of the employee's country. This field is only accepted if company is in status |
name | string This field is only accepted if company is in status |
phone_number | string A phone number the company can be contacted with. |
registration_number | string The company registration number. This field or tax_number (but not both) should be submitted. This field is only accepted if company is in status |
tax_number | string The tax identifier of the company. This field or registration_number (but not both) should be submitted. This field is only accepted if company is in status |
{- "address_details": {
- "address": "1709 Broderick St",
- "address_line_2": "Flat number 123",
- "city": "San Francisco",
- "postal_code": "94115",
- "state": "CA"
}, - "bank_account_details": {
- "account_holder": "Joe Smith",
- "account_number": "31234123123",
- "account_type": "savings",
- "name": "Bank name",
- "ownership_type": "BUSINESS",
- "routing_number": "123124123"
}, - "country_code": "USA",
- "desired_currency": "USD",
- "name": "Tech Vision",
- "phone_number": "+11123123456",
- "tax_number": "123456789"
}
{- "data": {
- "company": {
- "address_details": {
- "address": "1709 Broderick St",
- "address_line_2": "Flat number 123",
- "city": "San Francisco",
- "postal_code": "94115",
- "state": "CA"
}, - "bank_account_details": {
- "account_holder": "Joe Smith",
- "account_number": "31234123123",
- "account_type": "savings",
- "name": "Bank name",
- "ownership_type": "BUSINESS",
- "routing_number": "123124123"
}, - "company_owner_email": "te@remote.com",
- "company_owner_name": "Joe Smith",
- "country_code": "USA",
- "created_at": "2021-10-29T12:39:13",
- "desired_currency": "USD",
- "external_id": "00001111",
- "id": "e5a8b061-company-id-4c5c81ac885e",
- "name": "Your Company Name",
- "phone_number": "+1123123456",
- "status": "active",
- "terms_of_service_accepted_at": "2021-10-29T12:39:15Z",
- "updated_at": "2021-10-29T12:39:15"
}
}
}
Given an ID and a request object with new information, updates a company.
active
statusIf you created a company using the
create a company endpoint without all the required
request body parameters, you can use this endpoint to provide the missing data. Once the company
and its owner have all the necessary data, both their statuses will be set to active
and the company
onboarding will be marked as "completed".
The following constitutes a company with "all the necessary data":
address
, with valid address
, postal_code
, country
and state
parameters (Varies by country. Use the
show form schema endpoint to see which address parameters
are required).tax_number
or registration_number
is not nilname
is not nil (already required when creating the company)desired_currency
in their bank account (already required when creating the company)company_id required | string Example: 0a8s2d1-company-id-2e3f4th Company ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
Update Company params
address_details | object Fields can vary depending on the country. Please, check the required fields structure using the Show form schema endpoint.
Use the desired country and |
bank_account_details | object Fields can vary depending on the country. Please, check the required fields structure using the Show form schema endpoint.
Use the desired country and |
country_code | string Country of company address |
desired_currency | string Enum: "AUD" "CAD" "CHF" "DKK" "EUR" "GBP" "JPY" "NOK" "NZD" "SEK" "SGD" "USD" Desired currency for invoicing and displaying converted salaries in Remote UI regardless of the employee's country. This field is only accepted if company is in status |
name | string This field is only accepted if company is in status |
phone_number | string A phone number the company can be contacted with. |
registration_number | string The company registration number. This field or tax_number (but not both) should be submitted. This field is only accepted if company is in status |
tax_number | string The tax identifier of the company. This field or registration_number (but not both) should be submitted. This field is only accepted if company is in status |
{- "address_details": {
- "address": "1709 Broderick St",
- "address_line_2": "Flat number 123",
- "city": "San Francisco",
- "postal_code": "94115",
- "state": "CA"
}, - "bank_account_details": {
- "account_holder": "Joe Smith",
- "account_number": "31234123123",
- "account_type": "savings",
- "name": "Bank name",
- "ownership_type": "BUSINESS",
- "routing_number": "123124123"
}, - "country_code": "USA",
- "desired_currency": "USD",
- "name": "Tech Vision",
- "phone_number": "+11123123456",
- "tax_number": "123456789"
}
{- "data": {
- "company": {
- "address_details": {
- "address": "1709 Broderick St",
- "address_line_2": "Flat number 123",
- "city": "San Francisco",
- "postal_code": "94115",
- "state": "CA"
}, - "bank_account_details": {
- "account_holder": "Joe Smith",
- "account_number": "31234123123",
- "account_type": "savings",
- "name": "Bank name",
- "ownership_type": "BUSINESS",
- "routing_number": "123124123"
}, - "company_owner_email": "te@remote.com",
- "company_owner_name": "Joe Smith",
- "country_code": "USA",
- "created_at": "2021-10-29T12:39:13",
- "desired_currency": "USD",
- "external_id": "00001111",
- "id": "e5a8b061-company-id-4c5c81ac885e",
- "name": "Your Company Name",
- "phone_number": "+1123123456",
- "status": "active",
- "terms_of_service_accepted_at": "2021-10-29T12:39:15Z",
- "updated_at": "2021-10-29T12:39:15"
}
}
}
Returns a list of all countries that are supported by Remote API alphabetically ordered. The supported list accounts for creating employment with basic information and it does not imply fully onboarding employment via JSON Schema.
Authorization required | string Example: Bearer <ANY ACCESS TOKEN> This endpoint works with any of the access tokens provided. You can use an access token obtained through the Client Credentials flow, the Authorization Code flow, or the Refresh Token flow. |
{- "data": [
- {
- "alpha_2_code": "PT",
- "code": "PRT",
- "name": "Portugal",
- "supported_json_schemas": [
- "additional_documents",
- "address_details",
- "administrative_details",
- "employment-basic-information",
- "bank_account_details",
- "contract_details",
- "emergency_contact"
]
}
]
}
List all holidays of a country for a specific year. Optionally, it can be filtered by country subdivision.
country_code required | string Example: PRT Country code according to ISO 3166-1 3-digit alphabetic codes |
year required | string Example: 2022 Year for the holidays |
country_subdivision_code | string Example: country_subdivision_code=PT-10 Country subdivision code according to ISO 3166-2 codes |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "data": [
- {
- "day": "2021-01-01",
- "name": "New Year's Day",
- "note": "The day after New Year's Eve",
- "observed_day": "2021-01-02"
}
]
}
Returns the json schema of a supported form. Possible form names are:
- address_details
- administrative_details
- bank_account_details
- employment_basic_information
- billing_address_details
- contract_details
- emergency_contact
- employment_document_details
- personal_details
- pricing_plan_details
This endpoint requires a company access token, as forms are dependent on certain properties of companies and their current employments.
country_code required | string Example: PRT Country code according to ISO 3-digit alphabetic codes |
form required | string Example: address_details Name of the desired form |
employment_id | string Example: employment_id=663e0b79-c893-45ff-a1b2-f6dcabc098b5 Required for |
only_for_testing_include_scheduled_benefit_groups | boolean FOR TESTING PURPOSES ONLY: Include scheduled benefit groups. |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "data": {
- "additionalProperties": false,
- "properties": {
- "address": {
- "description": "Your street name and house number. PO Box addresses are not supported.",
- "maxLength": 255,
- "title": "Address",
- "type": "string"
}, - "address_line_2": {
- "description": "(Optional) For example, apartment, block, or building number.",
- "maxLength": 255,
- "title": "Address line 2",
- "type": "string"
}, - "city": {
- "description": "Enter your city",
- "maxLength": 255,
- "title": "City",
- "type": "string"
}, - "postal_code": {
- "description": "Enter zip or postal code",
- "maxLength": 255,
- "title": "Postal code",
- "type": "string"
}
}, - "required": [
- "address",
- "city",
- "postal_code"
], - "type": "object"
}
}
Delete a callback previously registered for webhooks
id required | string Webhook Callback ID |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "data": {
- "status": "ok"
}
}
Register a callback to be used for webhooks
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
WebhookCallback
subscribed_events | Array of strings Items Enum: "billing_document.issued" "contract_amendment.canceled" "contract_amendment.deleted" "contract_amendment.done" "contract_amendment.review_started" "contract_amendment.submitted" "custom_field.value_updated" "employment_contract.active_contract_updated" "employment.account.updated" "employment.details.updated" "employment.onboarding_task.completed" "employment.onboarding.completed" "employment.personal_information.updated" "employment.user_status.activated" "employment.user_status.deactivated" "expense.approved" "expense.declined" "expense.deleted" "expense.reimbursed" "expense.submitted" "expense.updated" "identity_verification.verification_required" "incentive.created" "incentive.deleted" "incentive.paid" "incentive.processing_started" "incentive.updated" "offboarding.deleted" "offboarding.done" "offboarding.review_started" "offboarding.submitted" "offboarding.submitted_to_payroll" "offboarding.completed" "payslip.released" "timeoff.approved" "timeoff.canceled" "timeoff.date_changed" "timeoff.declined" "timeoff.requested" "timeoff.taken" "timeoff.updated" |
url required | string |
{- "subscribed_events": [
- "employment.onboarding_task.completed"
],
}
{- "data": {
- "webhook_callback": {
- "id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
- "subscribed_events": [
- "employment.onboarding_task.completed"
],
}
}
}
Shows the time off balance for the given employment_id.
Please note, this endpoint is only supported for employments in certain countries.
For countries where it's not supported, this endpoint will respond with a 404 Not Found
.
employment_id required | string Example: 03675381-50c9-492d-b8ed-e84e99046091 Employment ID for which to show the time off balance |
Authorization required | string Example: Bearer <COMPANY-SCOPED ACCESS TOKEN> Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow. The refresh token needs to have been obtained through the Authorization Code flow. |
{- "data": {
- "timeoff_balance": {
- "contractual_entitled": {
- "days": 25,
- "hours": 0
}, - "leave_entitlements": [
- {
- "entitled": {
- "days": 28,
- "hours": 0
}, - "expiry_date": "2022-12-31",
- "name": "Annual paid time off",
- "remaining": {
- "days": 25,
- "hours": 0
}, - "taken": {
- "days": 3,
- "hours": 0
}, - "type": "annual_paid_timeoff"
}, - {
- "entitled": {
- "days": 3,
- "hours": 0
}, - "expiry_date": "2022-12-31",
- "name": "Extra days for good performance",
- "remaining": {
- "days": 3,
- "hours": 0
}, - "taken": {
- "days": 0,
- "hours": 0
}, - "type": "additional_pto"
}
], - "taken": {
- "days": 3,
- "hours": 0
}, - "total_entitled_days": 31,
- "working_hours_per_day": 8
}
}
}
{- "data": {
- "company_id": "79297cfd-cf60-4cf4-a70f-ac2061d72a74",
- "country_summaries": [
- [
- {
- "country": {
- "alpha_2_code": "PT",
- "code": "PRT",
- "country_subdivisions": [
- {
- "code": "PT-06",
- "name": "Coimbra",
- "subdivision_type": "District"
}, - {
- "code": "PT-11",
- "name": "Lisboa",
- "subdivision_type": "District"
}
], - "name": "Portugal",
- "supported_json_schemas": [
- "additional_documents",
- "address_details",
- "administrative_details",
- "employment-basic-information",
- "bank_account_details",
- "contract_details",
- "emergency_contact"
]
}, - "employee_stats": {
- "number_of_employees_enrolled": 10,
- "number_of_employees_offered": 12
}, - "offered_benefit_groups": [
- {
- "benefit_group": {
- "id": "54297cfd-cf60-4cf4-a70f-ac2061d72b44",
- "name": "Health",
- "policy_end_date": "2024-12-31",
- "policy_start_date": "2024-01-01"
}, - "employee_stats": {
- "number_of_employees_enrolled": 10,
- "number_of_employees_offered": 12
}, - "offered_benefit_tiers": [
- {
- "benefit_tier": {
- "id": "66297cfd-cf60-4cf4-a70f-ac2561d92b04",
- "name": "Premium 2023 (Medical, Dental and Vision)",
- "providers": [
- {
- "id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87",
- "name": "Health Provider"
}
]
}, - "employee_stats": {
- "number_of_employees_enrolled": 10,
- "number_of_employees_offered": 12
}
}
]
}
]
}
]
]
}
}