We are introducing a set of new API endpoints to enhance support for Employer of Record (EOR) worker operations, including compliance document management and bank account handling.
📌 New Endpoints
🗂️ Compliance Documents
GET/v2/eor/workers/compliance-documents
Returns a list of required and optional compliance documents associated with an EOR employee.
Scopes: worker:read
Allowed tokens: OAUTH2:PERSONAL
GET/v2/eor/workers/compliance-documents/:document_id/templates/download
Retrieves a downloadable template for a specific compliance document, if available.
Scopes: worker:read
Allowed tokens: OAUTH2:PERSONAL
GET/v2/eor/workers/banks/guide
Provides a structured guide (form schema) for submitting bank account details.
Scopes: worker:read
Allowed tokens: OAUTH2:PERSONAL
POST/v2/eor/workers/banks
Allows submission of bank account details for an EOR employee.
Scopes: worker:write
Allowed tokens: OAUTH2:PERSONAL
✍️ Contract Agreement Operations
POST/v2/eor/workers/contracts/:contract_id/signatures
Enables workers to sign a contract by submitting a typed signature.
Scopes: worker:write
Allowed tokens: OAUTH2:PERSONAL
GET/v2/eor/workers/contracts/:contract_id/offer-letter
Returns a rendered HTML preview of the job offer letter for a specific EOR contract.
Scopes: worker:read
Allowed tokens: OAUTH2:PERSONAL
GET/v2/eor/workers/contracts/:contract_id/employee-agreement/download
Provides a downloadable PDF link to the employee agreement associated with the given EOR contract.
Scopes: worker:read
Allowed tokens: OAUTH2:PERSONAL
📋 Key Highlights
🔍 Dynamic Field Support
Bank account forms are now dynamically defined via the guide endpoint, enabling country-specific validations and input schemas.
📎 Template-Driven Document Submission
Workers can now download blank templates for required compliance documents directly via the API.
🖊️ Contract Signing
Sign employment contracts digitally with a simple string-based signature submission.
📄 Offer Letter Rendering
Allows workers to preview the HTML-formatted job offer letter for EOR contracts.
📃 Employee Agreement Download
Enables clients to preview or download the finalized employee agreement, giving full transparency and access to finalized contractual documentation.
Added dynamic support for all countries available through Deel
All fields and constraints for the form are now dynamically fetched from our many sources of truth.
New query parameters
Added the optional query parameters state, work_hours_per_week and contract_duration_in_days.
These fields allow the form to be refreshed with updated validation rules and data.
For example, work hours can be used on-the-fly to calculate minimum salary requirements for part-time contracts in eligible countries.
state should only be sent when the GET v2/lookups/countries route returns a valid list of states.
While refreshing the form with these fields is optional, it is recommended since invalid values might prevent the user from creating new contract quotes.
Quote form data improvements
rules added to options within questions. These follow the same behavior as question rules:
When no rule passes, the option becomes disabled and its value must not be sent.
start_date and end_date now return the correct allowed date ranges.
is_disabled property added to pages, sections, questions, and options. When set to true:
Users cannot input values or select options.
The entity and its child entities (e.g., questions within a disabled section) must be excluded from the creation request payload.
All other properties (like is_required for questions) can be ignored.
For questions and options, this matches the behavior when no rules pass.
⚠️ While some properties may still be computed in the API response when is_disabled is true, these values are not guaranteed valid and should not be used or displayed.
must_request_validation added to the Job scope question to indicate whether validation through POST v2/eor/job-scopes/validate is required.
- To cover certain cases where Job scope appears as Project description instead and validation is not mandatory.
- The Currencies question now returns all supported currencies as options
Updated
Form response
Sections under the Compensation & dates page have been altered to better separate questions in the flow.
Multiple type has been renamed to Nested to better conform with design practices.
Removed currency from questions as it was redundant. Instead, use the currency as selected by the user for CURRENCY typed questions instead.
EOR Additional Fields, worker creation endpoints and legal entities
Updated: POST Create EOR Worker
We simplified the payload by removing the emailproperty from payload. We are now getting this information from the employee email provided during Create an EOR contract.
A new endpoint has been implemented to save the additional fields related to an Employee of Record (EOR) worker. The endpoint payload is dynamic and the payload available properties can be retrieved using Get worker additional fields for (EOR) endpoint .
Description: Extended scope_of_work input field to be passed as an object containing scope_template_id and scope_validation_id. New fields were added to response: costs, employment, compensation_details, client, employee, health_plan, job_title, seniority,created_at
EOR: Job Scope Templates, Job Scope Validation, EOR Additional Costs, Get and Update Organization structure
New: List of job scope templates for EOR contracts
Description: Endpoint used to fetch all pre-populated job scopes from the Deel collection. Using those job scopes will automatically approve the job scope without the need for AI or human interaction.
Description: The endpoint is in charge of validating that a job scope is valid given a job title and employee name. After the job scope passes validation, the contract should be able to be processed and return the employment costs results automatically. If job scope validation passes, it goes to manual approval. If the client uses a provided job scope template using the Fetch job scope templates endpoint, there is no need to run job scope validation.
Description: Used to gather information from the created contract together with the employment costs of the employee. This employment costs is used to display to the end-customer in order to get an accurate calculation of the amount to be paid per month;
Endpoint:GET /v2/eor/additional-costs/{country}
Parameters:
country: The two-letter ISO code of the country for which to retrieve the EOR additional costs (required)
Updated APIs: List contracts, Retrieve contract and EOR Benefits by country
Updated: List of contracts and Retrieve a single contract APIs
Introduced new query parameter expand as optional
A new field has been introduced to both of these APIs to include cost centers associated with a contract in the response.
Endpoints:GET /rest/v2/contracts and GET /rest/v2/contracts/{contract_id}
Introduced new response field is_discriminatory and updated existing is_mandatory field
A new is_discriminatory field has been introduced to response payload, which specifies if a benefit is discriminatory. Existing is_mandatory field no longer considers benefit discriminatory data.
is_discriminatory: Represents if benefit is discriminatory
Details
When invite_employee_to_app is set to true, and if the employee app is enabled for the account, the invited employee will receive an email invitation to join the platform.
This feature streamlines the onboarding process by ensuring employees are proactively included in the Deel ecosystem.
A new endpoint has been implemented to create an Employee of Record (EOR) worker with minimal required data. This EOR worker is automatically linked to the provided contract.
Use Case: Implement this endpoint to create an EOR worker and prepare them for the onboarding process in Deel. This is typically used when you already have a contract created and the worker's email address.