Skip to content

HRIS · Beta

Deel
API integration

Ship HRIS features without building the integration. Full Deel API access via Proxy and 170+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Built for specific customer use cases. Issues are resolved quickly.

Talk to us
Deel

Use Cases

Why integrate with Deel

Common scenarios for SaaS companies building Deel integrations for their customers.

01

Sync global headcount and org structure into your SaaS

Mirror Deel's people, departments, groups, and manager relationships into your product so customers see an always-fresh roster without manual CSV uploads. Ideal for performance, learning, or identity products where org context drives core workflows.

02

Push variable pay and reimbursements into Deel payroll

Let your customers automatically send commissions, bonuses, or approved expenses to Deel as invoice adjustments or off-cycle payments. This eliminates end-of-month CSV reconciliation between your tool and their global payroll.

03

Automate onboarding and offboarding workflows

Trigger account provisioning, device shipping, or license revocation based on Deel onboarding and offboarding tracker progress. Your customers get hands-off lifecycle automation across their globally distributed workforce.

04

Hand off hired candidates from ATS to Deel contracts

When a candidate is marked hired in your ATS, auto-draft the right Deel contract (EOR or IC), map the correct legal entity, and send the signature invite. HR teams stop re-keying offers across systems.

05

Reflect time off and entitlements in planning tools

Pull approved leave and entitlement balances from Deel into capacity, scheduling, or project tools — and push new requests back to keep payroll in sync. Useful for PSA, workforce planning, and resource management products.

What You Can Build

Ship these features with Truto + Deel

Concrete product features your team can ship faster by leveraging Truto’s Deel integration instead of building from scratch.

01

Two-way worker directory sync

Continuously sync Deel people, groups, departments, and manager relationships into your app so customer records stay aligned with their system of record.

02

Invoice adjustments engine for commissions and bonuses

Programmatically attach line items to active Deel contracts at month-end using contract adjustments and off-cycle payments — no spreadsheets, no manual uploads.

03

Webhook-driven lifecycle automations

Subscribe to Deel events to fire onboarding and offboarding workflows the moment a worker's tracker status changes.

04

ATS-to-Deel contract generation

Create Deel EOR or contractor agreements directly from a hired candidate, map them to the right legal entity, and dispatch contract invitations and signature requests in one flow.

05

Time off read and write integration

List Deel time off and entitlements to surface PTO in your UI, and create, update, or delete time off requests on behalf of users.

06

IT asset and order visibility

Read Deel IT orders and assets to display hardware assignments next to worker profiles, useful for ITSM, security, and device management products.

SuperAI

Deel AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_deel_people

List people records in Deel. Returns: id, state, emails, country, is_pwac, timezone, addresses, full_name, job_title, last_name, seniority, worker_id, birth_date, created_at, department, first_name, start_date, updated_at, employments, external_id, hiring_type, hiring_status, nationalities, person_status, work_location, direct_manager, direct_reports, completion_date, new_hiring_status,…

get_single_deel_person_by_id

Get a single Deel person record by id. Returns: id, state, emails, country, timezone, addresses, full_name, job_title, last_name, seniority, worker_id, birth_date, created_at, department, first_name, start_date, updated_at, employments, external_id, hiring_type, hiring_status, nationalities, work_location, direct_manager, direct_reports, completion_date, new_hiring_status, additional_details,…

create_a_deel_person

Create a new person record in Deel. Returns: id, employee, employment, compensation_details, created_at, updated_at.

list_all_deel_contracts

List deel contracts with optional filtering by status, type, team, country, currency, or search term. Returns: id, scale, title, client, status, worker, created_at, signatures, external_id, invitations, is_archived, is_shielded, who_reports, cost_centers, notice_period, fte_percentage, termination_date, amount, reported_by, reviewed_by, approval_requested.

get_single_deel_contract_by_id

Retrieve a single deel contract by id. Returns the full contract record including id, title, type, status, created_at, updated_at, start_date, termination_date, client, worker, signatures, invitations, is_archived, special_clause, compensation_details, employment_details, and optional cost_centers. Required: id.

create_a_deel_contract

Create a new contract in deel. Returns: id, quote, title, client, status, worker, job_title, seniority, created_at, signatures, start_date, external_id, invitations, is_archived, who_reports, custom_fields, notice_period, scope_of_work, special_clause, termination_date, work_statement_id, employment_details, compensation_details, updated_at, is_shielded, scale, fte_percentage, cost_centers,…

update_a_deel_contract_by_id

Update an existing deel contract by id using a partial PATCH request. Returns: id, quote, title, client, status, worker, job_title, seniority, created_at, signatures, start_date, updated_at, external_id, invitations, is_archived, who_reports, cost_centers, custom_fields, notice_period, scope_of_work, work_schedule, special_clause, employment_type, termination_date, contract_template,…

list_all_deel_time_offs

List time-off requests for the authenticated Deel organization with optional filtering by status, date ranges, policy types, and specific IDs. Returns: id, amount, reason, status, is_paid, end_date, created_at, start_date, updated_at, approved_at, description, contract_oid, requested_at, half_end_date, time_off_type, half_start_date, deduction_amount, entitlement_unit, time_off_dailies,…

create_a_deel_time_off

Create a new time-off request for a worker in Deel. Returns the created record including id, status, start_date, end_date, amount, is_paid, attachments, time_off_dailies, recipient_profile, created_at, and updated_at. Required: data.recipient_profile_id, data.start_date, data.end_date.

update_a_deel_time_off_by_id

Update an existing time-off request in Deel by id. Returns the updated record including id, status, start_date, end_date, amount, is_paid, entitlement_unit, time_off_type, recipient_profile, created_at, and updated_at. Required: id.

delete_a_deel_time_off_by_id

Delete a time-off request in Deel by id. Returns an empty 204 response on success. Required: id.

list_all_deel_webhooks

List Deel webhook subscriptions. Returns each subscription including id, url, description, events, signing_key, created_at, and updated_at.

get_single_deel_webhook_by_id

Get a single Deel webhook subscription by id. Returns id, url, description, events, signing_key, created_at, and updated_at. Required: id.

create_a_deel_webhook

Create a new Deel webhook subscription. Returns the created subscription including id, url, description, events, signing_key, created_at, and updated_at. Required: url, events.

update_a_deel_webhook_by_id

Edit an existing Deel webhook subscription by id. Returns the updated subscription including id, url, description, events, signing_key, created_at, and updated_at. Required: id.

delete_a_deel_webhook_by_id

Delete a Deel webhook subscription by id. Returns a 200 success response on deletion. Required: id.

list_all_deel_groups

List groups in the Deel organization. Returns: id, name, status, managers, created_at, updated_at, archived_at, external_metadata. Archived groups are included by default and can be excluded via include_archived_groups.

create_a_deel_group

Create a new group in the Deel organization. Returns: id, name, created_at, updated_at, external_metadata. Required: data.name (max 48 characters).

update_a_deel_group_by_id

Apply a partial update to an existing Deel group. Only fields included in the request body are modified; omitted fields retain their current values. Returns: id, name, created_at, updated_at, external_metadata. Required: id, data.name.

delete_a_deel_group_by_id

Soft-delete (archive) a Deel group by id. The group is not permanently removed. Returns: archived_at. Required: id.

list_all_deel_legal_entities

List deel legal entities with optional filtering by country, entity type, global payroll flag, and archived status. Returns: id, name, phone, vat_id, address, country, created_at, sic_number, updated_at, archived_at, entity_type, industry_name, entity_subtype, registrationNumber, company_identifiers.

create_a_deel_legal_entity

Create a new legal entity in deel. Returns: id, name, phone, address, created_at, sic_number, updated_at, entity_type, company_identifiers. Pass all fields inside a `data` wrapper object; Required: data (name, entity_type, address — street, city, country, zip — phone, company_identifiers — registration_number, tax_number — and sic_number).

update_a_deel_legal_entity_by_id

Apply a partial update to an existing deel legal entity by id; only fields included in the request body are modified. Returns: id, name, phone, address, sic_number, entity_type, industry_name, company_identifiers. Required: id.

delete_a_deel_legal_entity_by_id

Archive a deel legal entity by id, marking it as inactive without permanently removing it. Returns: archived_at. Required: id.

list_all_deel_departments

List all departments within the authenticated user's Deel organization. Returns: id, name, parent.

list_all_deel_invoices

List Deel invoices. By default only paid invoices are returned; pass status=all to include all statuses. Returns: id, label, total, amount, status, vat_id, paid_at, currency, deel_fee, due_date, issued_at, vat_total, created_at, is_overdue, contract_id, vat_percentage, recipient_legal_entity_id.

get_single_deel_invoice_by_id

Get a single Deel invoice by id. Returns the full invoice record including id, label, total, status, currency, created_at, paid_at, issued_at, due_date, worker_id, line_items, and recipient_legal_entity_id. Required: id.

list_all_deel_payments

List payment receipts in Deel. Returns a paginated list of payments including id, label, status, paid_at, created_at, total, total_due, payment_currency, deel_reference, workers, invoices, payment_method, and credit usage breakdowns. Optionally filter by date_from, date_to, currencies, entities, or statuses.

list_all_deel_managers

List all managers in a deel organization. Returns: id, email, last_name, first_name.

create_a_deel_manager

Create a new manager in a deel organization. Returns: id, email, last_name, first_name. Required: data (containing first_name, last_name, and email).

list_all_deel_organizations

Get the current organization in Deel associated with the authentication token. The organization is resolved automatically from the token — no additional identifier is required. Returns: id, name.

list_all_deel_onboarding_trackers

List workers currently going through onboarding in Deel. Returns: name, unique_id, hiring_type, contract, progress, hris_profile, app_experience.

get_single_deel_onboarding_tracker_by_id

Get a Deel onboarding tracker by id. Returns the full onboarding detail including profile (name, email, country, previously_onboarded), contract (id, status, created_at, employee_agreement, first_early_invoice), progress (status, reference_date, subject_to_overdue, is_action_required_from_client), checklist (steps), stepper, summary, hiring_type, and hris_profile. Required: id.

list_all_deel_offboarding_trackers

List deel offboarding trackers for contracts currently in the offboarding process. Returns: name, unique_id, hiring_type, offboarding_type, termination_id, contract, progress, hris_profile, app_experience. By default results are scoped to a 45-day date range; set ignore_date_range to true to retrieve all terminations regardless of date.

get_single_deel_offboarding_tracker_by_id

Get termination details for a specific deel offboarding tracker by its unique id. Returns: summary, contract, progress, hiring_type, termination, hris_profile, app_experience. Required: id.

list_all_deel_hris_organization_structures

List Deel HRIS organization structures, returning the organization's hierarchical structure including departments and teams. Returns: id, name, roles, teams, created_at, external_id, teams_count, enable_roles, is_multiselect, value, currency, raw_value, updated_at, is_editable, is_required, is_inherited, inherited_from.

get_single_deel_hris_organization_structure_by_id

Get a single Deel HRIS organization structure by id. Returns: id, name, roles, teams, external_id, teams_count, enable_roles, is_multiselect, value, currency, raw_value, created_at, updated_at, is_editable, is_required, is_inherited, inherited_from. Required: id.

create_a_deel_hris_organization_structure

Create a new Deel HRIS organization structure. Returns the created record including id, name, type, created_at, updated_at, external_id, enable_roles, is_multi_select, and organization_id.

update_a_deel_hris_organization_structure_by_id

Update an existing Deel HRIS organization structure including its name, settings, and teams hierarchy. Returns: id, name, teams, external_id, enable_roles, is_multiselect, value, currency, raw_value, created_at, updated_at, is_editable, is_required, is_inherited, inherited_from. Required: id.

delete_a_deel_hris_organization_structure_by_id

Delete a Deel HRIS organization structure by id. Returns an empty 204 response on success. Required: id.

list_all_deel_currencies

List the bank account form guide fields for a specific country and currency combination in Deel. Returns an array of field descriptors including key, type, is_required, ui_guide (with label, order, and helper_text), validations, and values_allowed. Required: country, currency.

list_all_deel_invoice_adjustments

List invoice adjustments in Deel, filtered by contract, type, status, invoice, reporter, or date range. Returns: id, scale, status, contract, quantity, worksheet, attachment, created_at, invoice_id, description, reported_by, reviewed_by, custom_scale, total_amount, currency_code, payment_cycle, date_submitted, hourlyReportPreset, approvers, invoice_public_id.

get_single_deel_invoice_adjustment_by_id

Get a single Deel invoice adjustment by id. Returns: id, scale, status, contract, quantity, approvers, worksheet, attachment, created_at, invoice_id, description, reported_by, reviewed_by, custom_scale, total_amount, currency_code, payment_cycle, date_submitted, invoice_public_id, hourlyReportPreset. Required: id.

create_a_deel_invoice_adjustment

Create a Deel invoice adjustment — such as a bonus, commission, VAT percentage, or deduction — against a contract. Returns: id, status, created, created_at. Required: contract_id, date_submitted, type, description, amount. Pass recurring=true in the query to apply the adjustment automatically to future invoices.

update_a_deel_invoice_adjustment_by_id

Update an existing Deel invoice adjustment by id. Returns: updated, id, scale, status, contract, quantity, worksheet, attachment, created_at, invoice_id, description, reported_by, reviewed_by, custom_scale, total_amount, currency_code, payment_cycle, date_submitted, approvers, invoice_public_id, hourlyReportPreset. Required: id.

delete_a_deel_invoice_adjustment_by_id

Delete a Deel invoice adjustment by id. Returns an empty 204 response on success. Required: id.

get_single_deel_adjustment_by_id

Retrieve a specific Deel adjustment by its id. Returns: id, file, title, amount, status, created_at, updated_at, contract_id, description, cycle_reference, move_next_cycle, date_of_adjustment, actual_end_cycle_date, adjustment_category_id, actual_start_cycle_date. Required: id.

create_a_deel_adjustment

Create a new payroll adjustment for a Deel contract, modifying the payment amount on the next payment cycle. Returns: id, file, title, amount, status, created_at, updated_at, contract_id, description, cycle_reference, move_next_cycle, date_of_adjustment, actual_end_cycle_date, adjustment_category_id, actual_start_cycle_date. Required: contract_id, amount, title, description,…

update_a_deel_adjustment_by_id

Apply a partial update to an existing Deel adjustment; only fields included in the request body are modified and omitted fields retain their current values. Returns: updated. Required: id.

delete_a_deel_adjustment_by_id

Permanently delete a Deel adjustment by its id. Returns: data. Required: id.

list_all_deel_benefits

List benefits associated with a Deel EOR contract. Returns: id, name, plan, provider, offer_status, enrollment_details. Required: contract_id.

list_all_deel_entitlements

List time-off entitlements for a Deel HRIS profile, including balances and allocations per time-off type. Returns: id, used, accrued, expired, approved, allowance, available, requested, accrual_amount, accrual_unit, balance_adjusted, upcoming_accruals, total_entitlements, is_allowance_unlimited, tracking_period, tracking_period_end_date, time_off_event_id, past_tracking_periods, events,…

list_all_deel_people_custom_fields

List all people custom field definitions configured for the organization in deel. Returns each field's id, name, type, settings (including access, required, is_enabled, countries, worker_types), placement, created_at, and description. No required parameters.

get_single_deel_people_custom_field_by_id

Get a single people custom field definition by its id in deel. Returns the field's id, name, type, settings (including access, required, is_enabled, countries, worker_types), placement, created_at, and description. Required: id.

list_all_deel_events_types

List all webhook event types available in Deel. Returns: id, module_name, module_label, name, description, payload_example, created_at, updated_at, alias, label, options, input_type, local_name, is_optional, required_by, display_order, can_be_skipped, validation_rule, validation_error_message.

list_all_deel_contract_off_cycle_payments

List all off-cycle payments for a Deel contract. Returns: id, amount, status, created_at, description, reported_by, currency_code, date_submitted. Required: contract_id.

get_single_deel_contract_off_cycle_payment_by_id

Retrieve a single off-cycle payment by id for a Deel contract. Returns: id, amount, status, created_at, description, reported_by, currency_code, date_submitted, title, reviewed_by, approval_requested. Required: contract_id, id.

create_a_deel_contract_off_cycle_payment

Create a new off-cycle payment for a Deel contract outside the regular payment schedule. Returns: id, created. Required: contract_id, data.amount, data.description, data.date_submitted.

list_all_deel_it_orders

List all IT equipment orders in Deel for the organization, spanning both historical and current procurement requests. Returns: id, status, created_at, updated_at, user, order_items.

get_single_deel_it_order_by_id

Get a single Deel IT equipment order by id. Returns: id, status, created_at, updated_at, user, order_items. Required: id.

list_all_deel_it_assets

List all IT assets historically or currently managed by the organization in Deel. Returns: id, grade, status, product, location, ownership, created_at, updated_at, assigned_user, purchase_date, serial_number, purchase_value, assigned_warehouse. Optionally filter by hris_profile_id, location, category, or status. Max 100 assets per page.

get_single_deel_it_asset_by_id

Get a single Deel IT asset by id. Returns the full asset record including id, grade, status, product details, location, ownership, assigned_user, purchase_date, serial_number, purchase_value, and assigned_warehouse. Required: id.

get_single_deel_contract_preview_by_id

Get a preview of a Deel IC or EOR contract agreement as rendered HTML. Returns the HTML string content of the contract document for the given id; the response is text/html and cannot be enumerated as structured JSON fields. Required: id. Global Payroll contract types are not supported.

get_single_deel_contract_invite_by_id

Get the worker signing invite link for a specific Deel contract. Returns the signing invitation link as a string URL. Required: id.

create_a_deel_group_clone

Clone an existing Deel group by id, creating a duplicate of the specified group. Returns: id, name, created_at, updated_at, external_metadata. Required: id.

list_all_deel_contracts_custom_fields

List all contract custom field definitions configured in deel. Returns field metadata (not per-contract values) including id, name, type, settings, placement, created_at, and description for each defined field.

get_single_deel_contracts_custom_field_by_id

Get a single contract custom field definition by id in deel. Returns the field's id, name, type, settings, placement, created_at, and description. Required: id.

list_all_deel_contract_custom_fields

List all custom fields associated with a Deel contract. Returns: id, data, name, title, amount, status, created_at, reported_by, reviewed_by, approval_requested. Required: contract_id.

update_a_deel_contract_custom_field_by_id

Create or update a custom field value on a Deel contract. This is a full replacement operation — any custom field values not included in the request body will be removed. Returns an empty 200 response on success. Required: contract_id, data.

delete_a_deel_contract_custom_field_by_id

Delete (clear) the value of a custom field on a Deel contract by custom field id. Returns an empty 204 response on success. Required: contract_id, id.

list_all_deel_eor_contract_amendments

List all amendments for a Deel EOR contract. Returns each amendment record including id, type, items, scope, salary, currency, effective_date, created_at, employment_type, fixed_adjustments, variable_compensation, and amendment_statuses. Required: contract_id.

get_single_deel_eor_contract_amendment_by_id

Get a single amendment for a Deel EOR contract by id. Returns the amendment record including id, type, items, scope, salary, currency, effective_date, created_at, employment_type, fixed_adjustments, variable_compensation, and amendment_statuses. Required: contract_id, id.

create_a_deel_eor_contract_amendment

Create a new amendment for a Deel EOR contract. Returns the created amendment record including id, type, items, scope, salary, currency, effective_date, created_at, employment_type, fixed_adjustments, variable_compensation, and amendment_statuses. Required: contract_id.

update_a_deel_eor_contract_amendment_by_id

Update an existing amendment on a Deel EOR contract. Returns: data, id, created_at, updated_at, success, contractOid, is_employee_onboarding_delayed. Required: contract_id, id.

delete_a_deel_eor_contract_amendment_by_id

Delete an amendment from a Deel EOR contract by id. Returns an empty 204 response on success. Required: contract_id, id.

list_all_deel_contract_amendments

List all amendments for a deel IC contract with optional filtering by status and sign status. Returns: id, rate, scale, status, created_at, updated_at, sign_status, contract_name, contract_type, currency_code, effective_date, title, amount, reported_by, reviewed_by, approval_requested. Required: contract_id.

create_a_deel_contract_amendment

Create an amendment for a deel IC contract, supporting changes to rate, scale, currency, effective date, scope of work, and job title. Returns: id, rate, scale, status, created, job_title, worker_id, created_at, updated_at, currency_code, scope_of_work, special_clause, termination_notice_days, amount, attachment, date_submitted. Required: contract_id.

list_all_deel_contract_milestones

List all milestones associated with a specific Deel contract, including each milestone's title, amount, status, dates, and creator/reviewer information. Returns: id, title, amount, status, created_at, description, reported_by, reviewed_by, approval_requested. Required: contract_id.

get_single_deel_contract_milestone_by_id

Get a single milestone from a Deel contract by id. Returns: id, title, amount, status, created_at, description, reported_by, reviewed_by, approval_requested. Required: contract_id, id.

create_a_deel_contract_milestone

Create a new payment milestone on a Deel milestone-based contract. After creation the milestone enters a review workflow before payment is processed. Returns: created, id, amount, status, attachment, date_submitted, description. Required: contract_id, data.

delete_a_deel_contract_milestone_by_id

Permanently delete a specific milestone from a Deel contract. This operation is irreversible. Returns: data. Required: contract_id, id.

create_a_deel_contract_invitation

Send a signing invitation email to a worker for a Deel contract, setting their email as the expected signer. If the contract was previously rejected, resets it to a signing-eligible state. Returns: created, id, amount, status, attachment, date_submitted. Required: contract_id.

delete_a_deel_contract_invitation_by_id

Remove the active signing invitation from a Deel contract, allowing a new invitation to be issued to the worker. Returns: deleted, id, amount, status, attachment, date_submitted. Required: contract_id.

create_a_deel_contract_signature

Sign a Deel employee contract on behalf of a contractor, transitioning the contract status to active and completing the contractor onboarding workflow. Returns: created, id, amount, status, attachment, date_submitted. Required: contract_id, signature.

create_a_deel_eor_worker_contract_signature

Create a signature on a deel EOR worker contract. Returns: created, id, amount, status, attachment, date_submitted. Required: contract_id.

create_a_deel_worker_contract_signature

Sign a worker contract in Deel, recording the worker's signature on the contract identified by contract_id. Returns: id, is_signed, created_at, updated_at, amount, status, attachment, date_submitted. Required: contract_id and worker_signature.

get_single_deel_personal_by_id

Get personal information for a Deel worker by id. Returns: id, kyc, ooo, addresses, worker_id, work_email, external_id, demographics, date_of_birth, nationalities, phone_numbers, personal_email, preferred_name, legal_last_name, legal_first_name, emergency_contacts. Required: id.

update_a_deel_personal_by_id

Partially update personal information for a Deel worker by id; only fields included in the request body are modified. Returns an empty 204 response on success. Required: id, data.

get_single_deel_external_personal_by_id

Get a worker's personal information record by external ID in Deel. Returns an empty 204 response on success. Required: id.

update_a_deel_external_personal_by_id

Update the personal information record for an external worker in Deel by id. Returns: id. Required: id.

list_all_deel_contract_ic_invoicing_taxes

Get the VAT and withholding tax settings configured for a Deel independent contractor contract. Returns: id, vat, withholding_tax, title, amount, status, created_at, reported_by, reviewed_by, approval_requested. Required: contract_id.

create_a_deel_contract_ic_invoicing_tax

Create an IC invoicing tax entry for a Deel independent contractor contract. Returns an empty 201 response on success. Required: contract_id, data.tax_type, data.percentage.

update_a_deel_contract_ic_invoicing_tax_by_id

Partially update an IC invoicing tax for a Deel independent contractor contract by specifying the tax type and revised percentage. Returns an empty 204 response on success. Required: contract_id, data.tax_type, data.percentage.

delete_a_deel_contract_ic_invoicing_tax_by_id

Permanently delete a specific IC invoicing tax from a Deel independent contractor contract. This action is irreversible and takes effect on future invoices. Returns an empty 204 response on success. Required: contract_id, id, tax_type.

list_all_deel_ats_candidates

List Deel ATS candidates with optional filters by search text, job IDs, department IDs, tag IDs, stage category or default type slugs, or update timestamp. Returns each candidate's id, email, first_name, last_name, numeric_id, created_at, updated_at, phone_number, applications, candidate_tags, and total_applications_count. Max 100 per page.

create_a_deel_ats_candidate

Create a new Deel ATS candidate record. Returns the created candidate object including id, first_name, last_name, email, numeric_id, source, phone_number, pic_url, linkedin_profile_url, created_at, and updated_at. Required: data.first_name, data.last_name, data.email.

create_a_deel_ats_candidate_tag

Create a tag for a candidate in Deel ATS by posting to the candidate's tags sub-resource. Returns: id, tag_id, created_at, candidate_id, tag, job, candidate, numeric_id, job_posting, source_slug, job_employment_type, submitter_ip_address, submitter_user_agent, moved_to_current_stage_at, application_form_submission, application_job_criterias_matchings, created_by_hris_organization_user_id,…

list_all_deel_ats_applications

List ATS applications in Deel across all open positions, with optional filtering by job, interview plan stage, candidate tags, source slugs, stage type, and last-updated timestamp. Returns each application's id, numeric_id, candidate, job, source_slug, created_at, moved_to_current_stage_at, and current_application_interview_plan_stage. Max 100 per page.

get_single_deel_ats_application_by_id

Retrieve a single ATS application by id in Deel. Returns the full application record including id, job, candidate (with tags and attachments), notes, source_slug, job_board, created_at, updated_at, numeric_id, application_form_submission answers, application_job_criterias_matchings, current_application_interview_plan_stage, all_application_interview_plan_stages (with offers), and…

create_a_deel_ats_application

Create a new ATS application in Deel. Returns the created application record including id, numeric_id, candidate, job, source_slug, created_at, moved_to_current_stage_at, and current_application_interview_plan_stage.

list_all_deel_ats_jobs

List ATS jobs in Deel with optional filtering by search text, interview plan, locations, teams, employment types, departments, status, and updated_after timestamp. Returns: id, title, status, job_teams, created_at, updated_at, job_locations, hiring_members, is_confidential, job_departments, approval_rule_id, applications_count, approval_request_id, current_compensation, job_employment_types,…

create_a_deel_ats_job

Create a new ATS job in Deel. Returns: id, title, status, job_teams, created_at, updated_at, job_locations, is_confidential, job_departments, approval_rule_id, approval_request_id, job_employment_types, richtext_description, created_by_hris_organization_user_id, job, candidate, numeric_id, job_posting, source_slug, job_employment_type, submitter_ip_address, submitter_user_agent,…

list_all_deel_contractors_methods

List all payout methods in deel associated with the authenticated contractor account. Returns: address, payload, is_default, method_name, payment_method, selectedOption, id, status. Optionally filter to only the default method using is_default.

create_a_deel_contractors_method

Create a new bank transfer payout method in deel. The request payload structure is dynamic and determined by the selected_option; retrieve field requirements before submitting. Returns: id, status. Required: data.

update_a_deel_contractors_method_by_id

Fully replace a bank transfer payout method in deel by id. All fields must be supplied as this is a complete replacement, not a partial update. Returns: id, status. Required: id, data.

list_all_deel_eor_workers_compliance_documents

List compliance documents required for EOR workers in Deel. Returns a documents array where each item includes id, name, status, country, is_optional, uploaded_at, has_template, fillable, filenames, rejection_message, required_in_30_days, and is_acknowledgement_only_document.

create_a_deel_eor_workers_compliance_document

Upload a compliance document for a specific EOR worker in Deel. Accepts PNG, JPG, JPEG, HEIC, or PDF files as a multipart upload. Returns: success, id, name, plan, provider, offer_status, enrollment_details. Required: id.

list_all_deel_worker_compliance_documents

List compliance documents for workers in deel. Returns a `documents` array where each item includes id, name, status, country, is_optional, uploaded_at, has_template, rejection_message, and is_acknowledgement_only_document. Applicable for both independent contractors and EOR employees.

list_all_deel_four_oh_one_k_plans

List 401k plans for a specific legal entity in deel. Returns: id, name, details, end_date, start_date, contribution_type, contribution_value, contribution_value_for_match_rate. Required: id (the legal entity identifier).

create_a_deel_four_oh_one_k_plan

Create a new 401k plan for a legal entity in deel. Returns: id, name, details, currency, start_date, contribution_type, contribution_limit, contribution_value, contribution_value_for_match_rate. Required: legal_entity_id.

update_a_deel_four_oh_one_k_plan_by_id

Update an existing 401k plan for a legal entity in deel. Returns: id, name, details, end_date, start_date, contribution_type, contribution_limit, contribution_value, contribution_value_for_match_rate. Required: legal_entity_id, id.

get_single_deel_contract_plan_enrollment_by_id

Get 401(k) enrollment settings for a Deel contract under a legal entity. Returns the enrollment object including id, type, contribution_type, contribution_limit, and contribution_value. Required: legal_entity_id, contract_id, id.

create_a_deel_contract_plan_enrollment

Enroll an employee in a Deel 401(k) plan for a specific contract under a legal entity. Returns the enrollment object including id, type, contribution_type, contribution_limit, and contribution_value. Required: legal_entity_id, contract_id, id, type, contribution_limit.

get_single_deel_onboarding_tracker_hris_profile_by_id

Get a single Deel onboarding tracker HRIS profile field by id. Returns: profile, stepper, summary, contract, progress, checklist, hiring_type, hris_profile, id, name, value, currency, raw_value, created_at, updated_at, is_editable, is_required, is_inherited, inherited_from. Required: id.

get_single_deel_offboarding_tracker_hris_profile_by_id

Get a single HRIS profile record from the Deel offboarding tracker by id. Returns: summary, contract, progress, hiring_type, termination, hris_profile, app_experience, id, name, value, currency, raw_value, created_at, updated_at, is_editable, is_required, is_inherited, inherited_from. Required: id.

list_all_deel_contract_invoice_adjustments

List invoice line items (adjustments) for a deel contract. Returns: id, scale, status, contract, quantity, worksheet, attachment, created_at, invoice_id, description, reported_by, reviewed_by, custom_scale, total_amount, currency_code, payment_cycle, date_submitted, title, amount, approval_requested. Required: contract_id. Supports optional filtering by contract_types, types, statuses,…

list_all_deel_contract_adjustments

List all adjustments associated with a specific Deel contract, optionally scoped to a date range. Returns: id, file, title, amount, status, created_at, updated_at, contract_id, description, cycle_reference, move_next_cycle, date_of_adjustment, actual_end_cycle_date, adjustment_category_id, actual_start_cycle_date, reported_by, reviewed_by, approval_requested. Required: contract_id.

list_all_deel_contract_payment_cycles

List scheduled payment cycles for a specific Deel contract. Returns: id, status, due_date, title, amount, created_at, reported_by, reviewed_by, approval_requested. Required: contract_id.

list_all_deel_contract_details

Retrieve EOR contract details for a specific Deel contract. Returns: id, status, created_at, updated_at, description, title, amount, reported_by, reviewed_by, approval_requested. Required: contract_id.

list_all_deel_lookups_seniorities

List predefined seniority levels supported by the Deel platform. Returns: id, name, level. When is_eor_contract is true, C-level seniorities are excluded from the response.

list_all_deel_adjustments_categories

List available adjustment categories in Deel, optionally filtered by contract type. Returns: id, name, label, unit_type. Category IDs returned here are required when creating adjustments.

list_all_deel_offboarding_time_offs

List time off entitlements, balances, and upcoming time offs for an employee contract in Deel, scoped to offboarding. Returns: contract_id, tracking_type, has_external_integration, remaining_balance, policy_settings, entitlements, upcoming_time_offs. Required: contract_id.

list_all_deel_eor_job_scopes

List EOR job scope templates in deel, returning predefined and custom templates available for EOR contracts. Returns: id, created_at, updated_at, name, plan, provider, offer_status, enrollment_details. Optionally filter results to a specific team using the team parameter.

list_all_deel_eor_additional_costs

List EOR additional costs available for a specified country in deel, returning the allowances and non-statutory costs eligible for inclusion in an EOR contract quote. Returns: allowances, nonStatutory, id, name, plan, provider, offer_status, enrollment_details. Required: country.

list_all_deel_eor_create_contracts

Fetch the versioned EOR contract form definition for a specified country in Deel, including fields, validation rules, and conditional logic. Returns: pages, id, title, amount, status, created_at, reported_by, reviewed_by, approval_requested. Required: country_code.

list_all_deel_validation_settings

List amendment validation settings for an EOR contract in Deel, returning the editable data points and their constraints. Returns: data_point, rules, salary, holiday, currency, probation, health_insurance. Required: contract_id.

list_all_deel_amendment_effective_date_limitations

Retrieve effective date validation rules for a specific EOR contract amendment in deel. Returns: message, is_hidden, is_disabled, max_effective_date, min_effective_date, default_effective_date. Required: contract_id, amendment_id.

list_all_deel_visa_requirement_businesses

List visa requirement businesses in Deel. Returns: id, title, fields, total_fee.

list_all_deel_knowledge_hub_country_guides

List Deel Knowledge Hub country guides for a given country, returning audience records segmented by contract type and category. Returns: name, value, categories, contract_types, allowances, nonStatutory. Required: country_code.

list_all_deel_kyc_details

Get a worker's KYC verification details in Deel by supplying either worker_profile_id or profile_id (mutually exclusive). Returns: kyc_status, identity_document_type, identity_document_name, identity_document_number, submission_date, approval_date, rejection_date, expiration_date, document_extracted_first_name, document_extracted_last_name, document_extracted_middle_name, created_at, updated_at.

list_all_deel_ats_application_sources

List available ATS application sources in Deel. Returns: id, slug, created_at, updated_at.

list_all_deel_ats_reasons

List ATS rejection and archivation reasons in Deel. Returns: id, label, created_at, jobs_count, updated_at, subgroup_slug, email_template, candidates_count, reason_group_slug, job, candidate, numeric_id, job_posting, source_slug, job_employment_type, submitter_ip_address, submitter_user_agent, moved_to_current_stage_at, application_form_submission, application_job_criterias_matchings,…

list_all_deel_ats_attachments

List ATS attachment files in Deel for a specific entity, scoped by entity type and attachment type. Returns: id, url, file_name, ai_summary, created_at, updated_at, attachable_id, file_content_type, attachable_type_slug, attachment_type_slug, created_by_hris_organization_user_id, job, candidate, numeric_id, job_posting, source_slug, job_employment_type, submitter_ip_address, submitter_user_agent,…

list_all_deel_ats_employment_types

List employment types available in the Deel ATS. Returns a paginated collection of employment type records including id, name, created_at, and updated_at.

list_all_deel_ats_offers

List ATS offers in Deel associated with the organization. Returns: id, email, job_title, created_at, start_date, updated_at, worker_type, country_code, offer_status, attachment_id, approval_rule_id, approval_request_id, compensation_amount, rejection_reason_id, compensation_currency, application_interview_plan_stage_id, job, candidate, numeric_id, job_posting, source_slug, job_employment_type,…

list_all_deel_ats_interviews

List Deel ATS interviews for the organization. Returns: id, ends_at, timezone, starts_at, created_at, updated_at, application, meeting_url, status_enum, application_activity, application_activity_id, job, candidate, numeric_id, job_posting, source_slug, job_employment_type, submitter_ip_address, submitter_user_agent, moved_to_current_stage_at, application_form_submission,…

list_all_deel_ats_locations

List all ATS work locations in Deel associated with the organization, suitable for use when constructing job postings or filtering by location. Returns: id, city, name, is_remote, created_at, updated_at, country_code, location_group, province_or_region_text, job, candidate, numeric_id, job_posting, source_slug, job_employment_type, submitter_ip_address, submitter_user_agent,…

list_all_deel_ats_openings

List job openings (requisitions/headcount requests) in Deel for the authenticated organization. Returns: id, team, title, status, job_ids, team_id, location, created_at, updated_at, location_id, opening_prefix, employment_type, filled_by_offer, is_confidential, target_hire_date, opening_type_slug, target_start_date, employment_type_id, opening_numeric_id, compensation_period,…

list_all_deel_legal_entitie_payroll_events

List payroll events (cycles) for a specified legal entity in Deel, optionally filtered by date range. Returns: id, date_end, date_start, has_g2n_report, legal_entity_id, payroll_group_id. Required: legal_entity_id. date_start must not be earlier than 5 years ago and date_end must not exceed 5 years in the future.

list_all_deel_legal_entitie_year_to_date_pays

List aggregated year-to-date payroll figures for employees in a deel legal entity over a caller-specified date range. Returns: start_date, end_date, employees. Required: legal_entity_id, date_start, date_end.

list_all_deel_payouts_auto_withdrawal_settings

Get the current auto-withdrawal configuration for the authenticated worker in deel. Returns: method_id, is_auto_withdraw_enabled, id, status, address, is_default, method_name.

update_a_deel_payouts_auto_withdrawal_setting_by_id

Update the auto-withdrawal configuration in deel, enabling or disabling auto-withdrawal and changing the target withdrawal method. Returns the updated settings object in data, containing method_id and is_auto_withdraw_enabled.

list_all_deel_bank_transfers_supported_routes

List all bank transfer supported routes available to the authenticated contractor in Deel. Returns a dynamic mapping of ISO country codes to arrays of supported currency codes — for example, AE maps to [AED, GBP, USD] and AR maps to [ARS, EUR, USD]. No required parameters.

list_all_deel_templates_downloads

Download a compliance document template in Deel by retrieving a time-limited URL for the template associated with a specific compliance document. Returns: url, expires_at, updated_at. Required: document_id.

list_all_deel_contract_cost_centers

List cost center allocations assigned to a Deel employment contract. Returns: id, title, amount, status, created_at, reported_by, reviewed_by, approval_requested. Required: contract_id.

create_a_deel_contract_cost_center

Assign cost centers to a Deel employment contract, specifying per-center allocation percentages and an effective date. Returns: id, amount, status, attachment, date_submitted. Required: contract_id, data.value (array of cost_center_id and allocation_percentage), data.effective_date.

create_a_deel_worker

Create a new worker record in Deel. Returns: user_id, profile_id, contract_id, id, to, from, status. Required: data (a wrapper object containing the worker's personal and contract details).

create_a_deel_workers_individual

Create an individual contractor profile in deel by completing address, tax details, and legal status in a single call during the IC-embedded onboarding flow. Returns: profile_id, company_type, legal_status, tax_residence, onboarding_step, street, city, zip, country, citizen, province, phone, timezone, id_type, personal_id, abn, ssn, entity_tax_residence, id, to, from, status. Required: data.

create_a_deel_eor

Create an EOR (Employee of Record) contract in Deel and receive a cost quote. Accepts employment, employee, job_title, seniority, client, and compensation_details within the data body. Returns: id, costs, name, plan, provider, offer_status, enrollment_details. Required: data.

create_a_deel_candidate

Create a candidate record in Deel for contractor onboarding outside of an ATS flow. Returns: created, id, status. Required: data.id, data.first_name, data.last_name, data.status, data.start_date, data.link.

create_a_deel_consent_token

Create a time-bounded consent token in Deel that authorizes third-party service connections on behalf of an organization. Returns: unique_consent_token, created_at, updated_at, expires_at. Requires a data object containing user_id, profile_id, and contract_id.

create_a_deel_magic_link

Create a time-limited magic link in Deel for password-free worker authentication. Returns: magic_link, expires_at. Optionally accepts a redirect_path to send the user to a specific page after login.

create_a_deel_task_review

Create a task review in Deel by submitting an approval or rejection for a task associated with a contract. Returns: id, amount, status, description, date_submitted, attachment. Required: contract_id, task_id, and data.status.

create_a_deel_terminations_resignation

Submit a resignation request for a Deel EOR contract on behalf of a team member. Returns: id. Required: oid, reason, used_time_off, is_employee_staying_with_deel.

create_a_deel_project_assignment_accept

Accept a Deel EOR project assignment as client, recording approval of the project assignment terms for a specific contract. Optionally supply a version string to validate that the PDF version matches the one received from the webhook (a mismatch returns a 409 error). Returns an empty 204 response on success. Required: contract_id.

create_a_deel_project_assignment_acknowledge

Acknowledge an assignment agreement in Deel for an EOR contract worker, confirming all terms have been reviewed before project initiation. Returns an empty 204 response on success. Required: contract_id.

create_a_deel_workers_session

Create a scoped worker access token (session) in Deel, issuing a JWT that grants a specific worker access to worker-side API endpoints. Returns: token, expires_at, id, to, from, status. Requires a data object containing the worker's profile_id.

create_a_deel_upsertions_bulk_tag

Upsert tags in bulk for candidates, jobs, or openings in Deel. Returns resolved tags grouped by group: candidate_tags, job_tags, and opening_tags, each containing tag_id and tag_name. Required: data (must include at least one of candidate_tags, job_tags, or opening_tags). Max 500 tags per group; omit tag_id to create or case-insensitively match an existing tag.

list_all_deel_bank_transfers_requirements

List bank transfer field requirements for a given contractor country and currency combination in Deel, including fee information per available transfer type. Returns: title, fields, total_fee, intermediary. Required: country, currency.

create_a_deel_bank_transfers_requirement

Retrieve progressive dynamic bank transfer requirements for employee payout method configuration in Deel based on the current state provided. Returns: steps, is_final, requirements_id.

update_a_deel_profile_by_id

Update the authenticated Deel user's profile by supplying only the fields to change. Returns the updated profile in a data object including first_name, last_name, preferred_name, phone, currency, and timezone. Required: data.

update_a_deel_delay_onboarding_by_id

Delay or un-delay an EOR employee's onboarding in Deel by updating the delay status on the specified contract. Returns: success, contractOid, is_employee_onboarding_delayed. Required: oid, data.is_employee_onboarding_delayed.

update_a_deel_task_by_id

Partially update a Deel task by id, modifying fields such as amount, description, or hourly_report_preset_id. Returns the data object containing the task's created_at and updated_at timestamps confirming the update was applied. Required: id.

delete_a_deel_worker_session_by_id

Delete (revoke) the active access token for a Deel worker, immediately terminating all API access granted by that token. Returns an empty 204 response on success. Required: worker_id.

update_a_deel_types_external_by_id

Update a Deel worker relation type by external id. Applies a partial update — only fields included in the request body are modified; omitted fields retain their current values. Returns the updated type in a data envelope containing id, child_name, parent_name, is_default, and external_id. Required: id.

delete_a_deel_types_external_by_id

Delete a Deel worker relation type by external id. Permanently removes the record. Returns an empty 204 response on success. Required: id.

list_all_deel_worker_relations_profiles

List all worker relations associated with a deel HrisProfile, returning both parent and child hierarchical relationships. Returns: id, to, from, status. Required: hris_profile_oid.

create_a_deel_worker_relations_profile

Create a hierarchical worker relation in deel linking a parent HrisProfile to one or more subordinate profiles. Returns an empty 201 response on success. Required: data.parent_hris_profile_id, data.child_hris_profile_ids, data.hris_relationship_type_id.

delete_a_deel_worker_relations_profile_by_id

Delete all worker relations associated with a deel HrisProfile by id, removing all parent and child hierarchical associations linked to that profile. Returns an empty 204 response on success. Required: id.

create_a_deel_accounts_payable_vendor_bill

Create a new vendor bill in Deel accounts payable, associating it with a vendor and subsidiary. Returns the created bill including id, vendor_id, subsidiary_id, amount, currency, reference, is_active, exchange_rate, created_at, updated_at, and line_items. Required: vendor_id, subsidiary_id, amount, subtotal, currency, date, description, due_date, reference, external_id, line_items.

Why Truto

Why use Truto’s MCP server for Deel

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 550+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Deel in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Deel account

Use Truto’s frontend SDK to connect your customer’s Deel account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Deel

Truto’s Proxy API is a 1-to-1 mapping of the Deel API. You call us, we call Deel, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Deel’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Deel on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How do end users authenticate their Deel account?

Deel uses OAuth and API token-based authentication. Truto handles the full connect flow, token storage, and refresh so your end users authorize Deel once and your product gets a stable connected account to call against.

Which Deel objects can I read and write today?

Truto exposes tools for people, contracts, time off, groups, legal entities, departments, managers, invoices, payments, invoice and contract adjustments, off-cycle payments, milestones, onboarding and offboarding trackers, IT orders and assets, ATS candidates/jobs/applications, benefits, entitlements, custom fields, and webhooks. Both read and write operations are available where Deel supports them.

Can I subscribe to Deel events for real-time updates?

Yes. You can create, update, and delete Deel webhooks through Truto and list available event types, so your product can react to hire, termination, contract, and tracker changes without polling.

Does Truto support Deel custom fields?

Yes. Truto exposes tools to list people custom fields and contract custom fields (including get, update, and delete), so customer-specific metadata flows through to your integration.

How fresh is the data Truto returns from Deel?

Reads hit Deel's API directly, so responses reflect the current state at request time. For change-driven freshness, combine list endpoints with Deel webhooks managed through Truto to receive updates as they happen.

How are pagination and rate limits handled?

Truto normalizes Deel's pagination across list endpoints and manages retries and backoff against Deel's rate limits, so you don't have to implement per-endpoint paging or throttling logic in your integration.

Deel

Get Deel integrated into your app

Our team understands what it takes to make a Deel integration successful. A short, crisp 30 minute call with folks who understand the problem.