Worker onboarding

This guide covers the worker-side onboarding flow for EOR employees, from initial invitation through contract signing, compliance documents, KYC screening, bank account setup, and onboarding tracking.

All endpoints in this guide use a worker-scoped token, not the admin token used in employer flows. See Getting started for token generation.

1

Invite the worker

When the contract reaches waiting_for_worker_sign status, trigger the worker invitation.

MethodEndpointPurpose
POST/workers/sessionGenerate a worker token for the contract
POST/magic-linkGenerate a short-lived hosted UI link

Exchange your admin token and the contract_id for a short-lived worker token. Pass this token in the Authorization header for all subsequent worker-scoped requests. To use Deel’s hosted experience instead, pass the contract_id to POST /magic-link to generate a magic link.

Subscribe to contract.status.updated to detect when the contract transitions to waiting_for_worker_sign.

2

Review the offer letter

Before the worker signs, present the offer letter for their review.

MethodEndpointPurpose
GET/eor/workers/contracts/{contract_id}/offer-letterRetrieve the worker’s offer letter

Render this document in your UI before presenting the signature step.

3

Sign the employment agreement

MethodEndpointPurpose
POST/eor/workers/contracts/{contract_id}/signaturesSign the employment agreement as the worker

Pass the worker’s signature in the request body. This call advances the contract status to active and moves the worker into the onboarding checklist phase.

4

Complete compliance documents

Compliance document requirements vary by country. Retrieve the full list first, then process each document by type.

MethodEndpointPurpose
GET/eor/workers/compliance-documentsList compliance documents and their status
POST/eor/workers/compliance-documents/{document_id}Upload a required document
POST/eor/workers/compliance-documents/{document_id}/acknowledgementAcknowledge a review-only document

Some documents require file upload; others require only an acknowledgement. Use the type field in the list response to determine which action to take for each document.

5

Submit KYC

Start an identity verification session through Veriff and redirect the worker to the returned URL. Once the worker completes the flow, read the current verification state via the KYC details endpoint.

MethodEndpointPurpose
POST/veriff/sessionCreate a Veriff session; returns the URL to redirect the worker to
GET/screenings/kyc/detailsRetrieve the worker’s current kyc_status

The kyc_status field returns one of APPROVED, REJECTED, EXPIRED, EXPIRING_SOON, PENDING_REVIEW, NOT_REQUESTED, or NOT_SUBMITTED. Subscribe to onboarding.status.updated to know when the KYC step completes rather than polling.

6

Add a bank account

Bank field requirements vary by country and currency. Retrieve the required fields before rendering the bank setup form.

MethodEndpointPurpose
GET/eor/workers/banks-guide/country/{country}/currency/{currency}Retrieve required bank fields for a country and currency
POST/eor/workers/banksAdd a bank account

Call the guide endpoint first and use its response to render the correct form fields before submitting the bank account.

7

Submit additional employment information

Some countries require workers to provide supplementary data such as tax identifiers, emergency contacts, or national ID numbers. The required fields are country-specific.

MethodEndpointPurpose
POST/eor/workers/contracts/{contract_id}/additional-informationSubmit additional employment information
8

Track onboarding progress

Use this endpoint to let workers view their onboarding checklist and progress; it returns the same data as the employer-side tracker.

MethodEndpointPurpose
GET/onboarding/tracker/hris_profile/{hris_profile_id}Retrieve onboarding progress and checklist

The response includes summary.status, progress as a percentage, and checklist with step-level statuses. Subscribe to onboarding.status.updated on the employer side to track progress without polling.

Tax form completion (W-8, W-9, and country-equivalent forms) is not available via API. Workers must complete tax forms through the Deel-hosted UI. This is the primary gap in the Full Embedded onboarding experience.

Key webhook events

EventTrigger
contract.status.updatedContract advanced to worker signing stage
onboarding.status.updatedOnboarding step completed or status changed (covers KYC)

See the Webhooks guide for event payload structure and signature verification.

Next steps