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 usUse Cases
Why integrate with Deel
Common scenarios for SaaS companies building Deel integrations for their customers.
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.
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.
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.
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.
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.
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.
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.
Webhook-driven lifecycle automations
Subscribe to Deel events to fire onboarding and offboarding workflows the moment a worker's tracker status changes.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.