Agent Skills: deel

Deel API for global payroll and contractors. Use when user mentions "Deel",

UncategorizedID: vm0-ai/vm0-skills/deel

Install this agent skill to your local

pnpm dlx add-skill https://github.com/vm0-ai/vm0-skills/tree/HEAD/deel

Skill Files

Browse the full folder contents for deel.

Download Skill

Loading file tree…

deel/SKILL.md

Skill Metadata

Name
deel
Description
Deel API for global payroll and contractors. Use when user mentions "Deel",

Troubleshooting

If requests fail, run zero doctor check-connector --env-name DEEL_TOKEN or zero doctor check-connector --url https://api.letsdeel.com/rest/v2/contracts --method GET

Contracts

List Contracts

curl -s "https://api.letsdeel.com/rest/v2/contracts?limit=20" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Params: limit (max 100), offset, statuses (comma-separated), types, worker_name, team_id.

Get Contract Details

curl -s "https://api.letsdeel.com/rest/v2/contracts/<contract-id>" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Create Contractor Contract

curl -s -X POST "https://api.letsdeel.com/rest/v2/contracts" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"type\": \"pay_as_you_go\", \"title\": \"Software Developer\", \"worker_email\": \"contractor@example.com\", \"currency\": \"USD\", \"rate\": 5000, \"cycle\": \"monthly\", \"start_date\": \"2026-05-01\", \"scope\": \"Full-stack development\"}"

Contract types: pay_as_you_go (contractor), ongoing (employee/EOR), milestone (project-based).

Update Contract

curl -s -X PATCH "https://api.letsdeel.com/rest/v2/contracts/<contract-id>" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"title\": \"Senior Software Developer\"}"

Get Contract Amendments

curl -s "https://api.letsdeel.com/rest/v2/contracts/<contract-id>/amendments" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Create Contract Amendment

curl -s -X POST "https://api.letsdeel.com/rest/v2/contracts/<contract-id>/amendments" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"rate\": 6000, \"effective_date\": \"2026-07-01\"}"

Terminate Contract

curl -s -X POST "https://api.letsdeel.com/rest/v2/contracts/<contract-id>/terminations" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"termination_date\": \"2026-06-30\", \"reason\": \"End of project\"}"

Send Contract Invitation

curl -s -X POST "https://api.letsdeel.com/rest/v2/contracts/<contract-id>/invitations" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Get Contract Preview

curl -s "https://api.letsdeel.com/rest/v2/contracts/<contract-id>/preview" \
  --header "Authorization: Bearer $DEEL_TOKEN"

EOR Contracts

Create EOR Contract

curl -s -X POST "https://api.letsdeel.com/rest/v2/eor" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"country\": \"DE\", \"worker_email\": \"employee@example.com\", \"job_title\": \"Product Manager\", \"salary\": 80000, \"currency\": \"EUR\", \"start_date\": \"2026-06-01\"}"

Get EOR Contract Details

curl -s "https://api.letsdeel.com/rest/v2/eor/contracts/<contract-id>/details" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Get EOR Start Date Availability

curl -s "https://api.letsdeel.com/rest/v2/eor/start-date" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Get EOR Country Validations

curl -s "https://api.letsdeel.com/rest/v2/eor/validations/<country-code>" \
  --header "Authorization: Bearer $DEEL_TOKEN"

People

List People

curl -s "https://api.letsdeel.com/rest/v2/people?limit=20" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Get Person Details

curl -s "https://api.letsdeel.com/rest/v2/people/<hris-profile-id>" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Get Current User

curl -s "https://api.letsdeel.com/rest/v2/people/me" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Get Person's Custom Fields

curl -s "https://api.letsdeel.com/rest/v2/people/<worker-id>/custom_fields" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Update Person's Department

curl -s -X PUT "https://api.letsdeel.com/rest/v2/people/<id>/department" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"department_id\": \"<department-id>\"}"

Update Personal Info

curl -s -X PATCH "https://api.letsdeel.com/rest/v2/people/<worker-id>/personal" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"first_name\": \"Jane\", \"last_name\": \"Doe\"}"

Time Off

List All Time Off Requests

curl -s "https://api.letsdeel.com/rest/v2/time_offs?limit=20" \
  --header "Authorization: Bearer $DEEL_TOKEN"

List Time Off by Profile

curl -s "https://api.letsdeel.com/rest/v2/time_offs/profile/<hris-profile-id>" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Get Time Off Entitlements

curl -s "https://api.letsdeel.com/rest/v2/time_offs/profile/<hris-profile-id>/entitlements" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Get Time Off Policies

curl -s "https://api.letsdeel.com/rest/v2/time_offs/profile/<hris-profile-id>/policies" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Create Time Off Request

curl -s -X POST "https://api.letsdeel.com/rest/v2/time_offs" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"contract_id\": \"<contract-id>\", \"type\": \"vacation\", \"start_date\": \"2026-04-01\", \"end_date\": \"2026-04-05\", \"reason\": \"Family vacation\"}"

Types: vacation, sick_leave, personal, parental, etc. Use GET /time_offs/profile/{id}/policies to discover available types.

Review Time Off Request

curl -s -X POST "https://api.letsdeel.com/rest/v2/time_offs/review" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"time_off_id\": \"<time-off-id>\", \"status\": \"approved\"}"

Update Time Off Request

curl -s -X PATCH "https://api.letsdeel.com/rest/v2/time_offs/<time-off-id>" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"end_date\": \"2026-04-07\"}"

Delete Time Off Request

curl -s -X DELETE "https://api.letsdeel.com/rest/v2/time_offs/<time-off-id>" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Invoice Adjustments

List Invoice Adjustments

curl -s "https://api.letsdeel.com/rest/v2/invoice-adjustments?limit=20" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Get Invoice Adjustment

curl -s "https://api.letsdeel.com/rest/v2/invoice-adjustments/<id>" \
  --header "Authorization: Bearer $DEEL_TOKEN"

List Adjustments for Contract

curl -s "https://api.letsdeel.com/rest/v2/contracts/<contract-id>/invoice-adjustments" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Create Invoice Adjustment

curl -s -X POST "https://api.letsdeel.com/rest/v2/invoice-adjustments" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"contract_id\": \"<contract-id>\", \"amount\": 500, \"currency\": \"USD\", \"type\": \"bonus\", \"description\": \"Performance bonus Q1 2026\"}"

Update Invoice Adjustment

curl -s -X PATCH "https://api.letsdeel.com/rest/v2/invoice-adjustments/<id>" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"amount\": 750, \"description\": \"Updated performance bonus\"}"

Delete Invoice Adjustment

curl -s -X DELETE "https://api.letsdeel.com/rest/v2/invoice-adjustments/<id>" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Adjustments (Generic)

List Adjustment Categories

curl -s "https://api.letsdeel.com/rest/v2/adjustments/categories" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Create Adjustment

curl -s -X POST "https://api.letsdeel.com/rest/v2/adjustments" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"contract_id\": \"<contract-id>\", \"category_id\": \"<category-id>\", \"amount\": 200, \"description\": \"Expense reimbursement\"}"

Accounting

List Invoices

curl -s "https://api.letsdeel.com/rest/v2/invoices" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Get Invoice Details

curl -s "https://api.letsdeel.com/rest/v2/invoices/<invoice-id>" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Download Invoice

curl -s "https://api.letsdeel.com/rest/v2/invoices/<id>/download" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  -o invoice.pdf

List Deel Invoices

curl -s "https://api.letsdeel.com/rest/v2/invoices/deel" \
  --header "Authorization: Bearer $DEEL_TOKEN"

List Payments

curl -s "https://api.letsdeel.com/rest/v2/payments" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Get Payment Breakdown

curl -s "https://api.letsdeel.com/rest/v2/payments/<payment-id>/breakdown" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Payslips

List EOR Payslips

curl -s "https://api.letsdeel.com/rest/v2/eor/workers/<worker-id>/payslips" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Download Payslip

curl -s "https://api.letsdeel.com/rest/v2/eor/workers/<worker-id>/payslips/<payslip-id>/download" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  -o payslip.pdf

List GP Payslips

curl -s "https://api.letsdeel.com/rest/v2/gp/workers/<worker-id>/payslips" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Milestones

List Milestones

curl -s "https://api.letsdeel.com/rest/v2/contracts/<contract-id>/milestones" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Create Milestone

curl -s -X POST "https://api.letsdeel.com/rest/v2/contracts/<contract-id>/milestones" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"title\": \"Phase 1 Delivery\", \"amount\": 2000, \"currency\": \"USD\", \"due_date\": \"2026-05-15\"}"

Delete Milestone

curl -s -X DELETE "https://api.letsdeel.com/rest/v2/contracts/<contract-id>/milestones/<milestone-id>" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Timesheets

List Timesheets

curl -s "https://api.letsdeel.com/rest/v2/timesheets?limit=20" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Get Timesheet

curl -s "https://api.letsdeel.com/rest/v2/timesheets/<id>" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Create Timesheet

curl -s -X POST "https://api.letsdeel.com/rest/v2/timesheets" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"contract_id\": \"<contract-id>\", \"description\": \"Development work\", \"quantity\": 8, \"date\": \"2026-04-08\"}"

Update Timesheet

curl -s -X PATCH "https://api.letsdeel.com/rest/v2/timesheets/<id>" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"quantity\": 10}"

Review Timesheet

curl -s -X POST "https://api.letsdeel.com/rest/v2/timesheets/<id>/reviews" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"status\": \"approved\"}"

Delete Timesheet

curl -s -X DELETE "https://api.letsdeel.com/rest/v2/timesheets/<id>" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Organization

Get Organization Info

curl -s "https://api.letsdeel.com/rest/v2/organizations" \
  --header "Authorization: Bearer $DEEL_TOKEN"

List Teams

curl -s "https://api.letsdeel.com/rest/v2/teams" \
  --header "Authorization: Bearer $DEEL_TOKEN"

List Departments

curl -s "https://api.letsdeel.com/rest/v2/departments" \
  --header "Authorization: Bearer $DEEL_TOKEN"

List Managers

curl -s "https://api.letsdeel.com/rest/v2/managers" \
  --header "Authorization: Bearer $DEEL_TOKEN"

List Roles

curl -s "https://api.letsdeel.com/rest/v2/roles" \
  --header "Authorization: Bearer $DEEL_TOKEN"

List Legal Entities

curl -s "https://api.letsdeel.com/rest/v2/legal-entities" \
  --header "Authorization: Bearer $DEEL_TOKEN"

List Working Locations

curl -s "https://api.letsdeel.com/rest/v2/working-locations" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Onboarding & Offboarding Tracker

List Onboarding Tracker

curl -s "https://api.letsdeel.com/rest/v2/onboarding/tracker" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Get Onboarding by Profile

curl -s "https://api.letsdeel.com/rest/v2/onboarding/tracker/hris_profile/<hris-profile-id>" \
  --header "Authorization: Bearer $DEEL_TOKEN"

List Offboarding Tracker

curl -s "https://api.letsdeel.com/rest/v2/offboarding/tracker" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Lookups

List Countries

curl -s "https://api.letsdeel.com/rest/v2/lookups/countries" \
  --header "Authorization: Bearer $DEEL_TOKEN"

List Currencies

curl -s "https://api.letsdeel.com/rest/v2/lookups/currencies" \
  --header "Authorization: Bearer $DEEL_TOKEN"

List Job Titles

curl -s "https://api.letsdeel.com/rest/v2/lookups/job-titles" \
  --header "Authorization: Bearer $DEEL_TOKEN"

List Seniorities

curl -s "https://api.letsdeel.com/rest/v2/lookups/seniorities" \
  --header "Authorization: Bearer $DEEL_TOKEN"

List Time Off Types

curl -s "https://api.letsdeel.com/rest/v2/lookups/time-off-types" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Webhooks

List Webhooks

curl -s "https://api.letsdeel.com/rest/v2/webhooks" \
  --header "Authorization: Bearer $DEEL_TOKEN"

List Webhook Event Types

curl -s "https://api.letsdeel.com/rest/v2/webhooks/events/types" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Create Webhook

curl -s -X POST "https://api.letsdeel.com/rest/v2/webhooks" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"name\": \"Contract Updates\", \"url\": \"https://example.com/webhook\", \"events\": [\"contract.created\", \"contract.updated\"]}"

Update Webhook

curl -s -X PATCH "https://api.letsdeel.com/rest/v2/webhooks/<id>" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"name\": \"Updated Webhook\", \"events\": [\"contract.created\"]}"

Delete Webhook

curl -s -X DELETE "https://api.letsdeel.com/rest/v2/webhooks/<id>" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Groups

List Groups

curl -s "https://api.letsdeel.com/rest/v2/groups" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Create Group

curl -s -X POST "https://api.letsdeel.com/rest/v2/groups" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"name\": \"Engineering Team\"}"

Update Group

curl -s -X PATCH "https://api.letsdeel.com/rest/v2/groups/<id>" \
  --header "Authorization: Bearer $DEEL_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"name\": \"Engineering Team v2\"}"

Delete Group

curl -s -X DELETE "https://api.letsdeel.com/rest/v2/groups/<id>" \
  --header "Authorization: Bearer $DEEL_TOKEN"

Guidelines

  1. API versioning: All endpoints use /rest/v2/.
  2. Contract types: pay_as_you_go (contractor), ongoing (employee/EOR), milestone (project-based), gp (global payroll).
  3. Pagination: Use limit (max 100) and offset query params. Default limit is 20.
  4. Time off types: Discover available types per profile via GET /time_offs/profile/{id}/policies.
  5. Rate limits: Back off on 429 responses with Retry-After header.
  6. Sandbox: Use https://api-sandbox.demo.deel.com for testing (same endpoints, test data).
  7. Invoice adjustments: Available for contractor contracts. Use the generic adjustments endpoints for broader adjustment types.
  8. EOR vs Contractor: EOR contracts have separate endpoints under /eor/ for country-specific compliance, amendments, and offboarding.
  9. HRIS Profile ID: Many people/time-off endpoints use the HRIS profile ID, not the contract ID. Get it from the people endpoint.

How to Look Up More API Details

  • API Reference: https://developer.deel.com/reference
  • Contracts: https://developer.deel.com/reference/list-contracts
  • People: https://developer.deel.com/reference/list-people
  • Time Off: https://developer.deel.com/reference/get-time-off-requests
  • Invoices: https://developer.deel.com/reference/list-invoices
  • Webhooks: https://developer.deel.com/reference/get-webhooks
  • Sandbox: https://developer.deel.com/docs/sandbox