canonical: https://jentic.com/apis/letsdeel.com/deel

# Letsdeel Deel REST API

Jentic publishes the only available OpenAPI specification for Deel REST API, keeping it validated and agent-ready. The Deel REST API covers global hiring, contracts, payroll, EOR, and contractor operations across 150+ countries. It exposes endpoints for managing contracts (gig, EOR, time-based, global payroll), running invoice and adjustment workflows, syncing HRIS employee data, and orchestrating onboarding for international workforce. The 153 endpoints span people, contracts, invoices, timesheets, time off, candidates, and webhooks, with OAuth scopes that align tightly to each resource group.

## For AI agents

Hire, onboard, and pay international contractors and EOR employees through Deel - manage contracts, invoices, timesheets, and global payroll across 150+ countries.

## Scope

Does not handle equity administration, applicant tracking pipelines, or device/IT provisioning - use for global hiring, contracts, and payroll only.

## Capabilities

- Create and amend contractor, EOR, and global-payroll contracts via `/contracts/gp`, `/contracts/time-based`, and /eor
- Approve and adjust contractor invoices and post off-cycle payments through /invoices and /adjustments
- Sync HRIS employee records and direct employee data with `/hris/direct-employees`
- Submit, review, and approve timesheets for time-based contracts via the /timesheets resource
- Onboard candidates and convert them to employees through the /candidates and partner-managed contract endpoints
- Retrieve gross-to-net payroll reports and download payslips through `/gp/reports` and `/gp/workers/{worker_id}/payslips`
- Subscribe to Deel events with the /webhooks endpoints to react to contract, invoice, and payroll changes

## Use cases

### Global contractor onboarding

An operations team needs to onboard contractors across multiple countries with compliant agreements and local payment rails. The Deel REST API creates the contract via `/contracts/gp` or `/contracts/time-based`, attaches the worker, and triggers Deel's onboarding workflow including KYC, tax forms, and bank details. The team avoids per-country legal work and gets contractors paid in their local currency within Deel's normal payout cycle.

Example prompt: Create a time-based contract via POST `/contracts/time-based` for a contractor in Argentina at $40 USD/hour, then attach the worker and trigger the onboarding flow.

### EOR hiring and payroll

A growing company wants to hire full-time employees in countries where it has no legal entity. Using POST /eor with `/eor/employment_cost` to forecast burdened cost, `/eor/validations/{country_code}` to check local compliance, and `/gp/reports/{gp_report_id}/gross_to_net` to reconcile payroll, the team runs compliant EOR payroll through Deel without setting up local entities. Onboarding is handled in days rather than the weeks a self-managed entity setup would require.

Example prompt: Call POST `/eor/employment_cost` with country_code 'DE' and gross salary 80000 EUR to forecast employer cost, then create the EOR contract via POST /eor.

### Invoice and timesheet automation

Finance teams need to ingest contractor invoices and timesheets into their accounting system. The Deel REST API exposes /invoices, /timesheets, and /adjustments so an integration can pull approved invoices, download PDFs at `/invoices/{invoice_id}/download`, and sync to QuickBooks, Xero, or NetSuite. This eliminates manual export and keeps contractor cost data continuously reconciled.

Example prompt: List approved invoices via GET /invoices with status filter, download each PDF from `/invoices/{invoice_id}/download`, and post matching journal entries to the company ledger.

### AI agent payroll operations via Jentic

An AI HR agent handles payroll questions and routine actions for a distributed team. Through Jentic the agent searches for 'create a contract' or 'retrieve a payslip', loads the matching Deel operation, and executes with bearer credentials held in your Jentic One instance. The agent can answer 'where is my last payslip?' or 'create a $5,000 milestone for contractor X' without ever holding raw Deel tokens.

Example prompt: Use Jentic to search 'download a payslip', load GET `/gp/workers/{worker_id}/payslips/{payslip_id}/download`, and return the PDF for the worker's most recent payslip.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/contracts/time-based` | Create a new time-based contract. |
| POST | `/contracts/gp` | Create a global payroll contract. |
| POST | `/eor` | Create an EOR contract. |
| POST | `/eor/employment_cost` | Calculate burdened employer cost for an EOR hire. |
| GET | `/invoices` | Retrieve contractor invoices. |
| POST | `/adjustments` | Create a pay adjustment for a worker. |
| GET | `/gp/reports/{gp_report_id}/gross_to_net` | List gross-to-net payroll report rows. |

## Key resources

- **Contracts** — Create and amend EOR, global payroll, time-based, and contractor agreements.
- **Invoices** — List, retrieve, and download contractor invoices and Deel-issued invoices.
- **Timesheets** — Submit, approve, and manage timesheets for time-based contracts.
- **EOR** — Create EOR contracts, retrieve country guides, and calculate employer cost.
- **Global Payroll** — Manage worker compensation, banks, addresses, and payslips for GP workers.
- **Adjustments** — Create and edit one-off pay adjustments for workers.
- **Webhooks** — Subscribe to events for contracts, invoices, timesheets, and payroll changes.

## Why Jentic

- **Setup:** Wiring the Deel REST API by hand means managing its bearer token auth, tracking which of the 153 operations covers hiring, contracts, invoices, or payroll, and calling api.letsdeel.com yourself. Through Jentic you install once, import the Deel REST API from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Deel's write operations like `/contracts/time-based`, /eor, and /adjustments post their targets in the request body, so scope the agent by the operations it needs, such as creating a contract or reading invoices. You leave out operations you do not want it to run, so it only calls the ones you allow.
- **Credential handling:** Your Deel bearer token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a contractor invoice' or 'read a gross-to-net report', and Jentic returns the matching Deel operation with its input schema so the agent calls the right endpoint without browsing the developer.letsdeel.com docs.

## Related APIs

- **Rippling API** — Workforce platform covering payroll, HR, and IT for full-time employees, with US-first global payroll.
- **Gusto API** — US payroll, benefits, and HR platform aimed at small and mid-sized US employers.
- **BambooHR API** — HRIS for employee records, time off, and performance - pairs with Deel for payroll and contracts.

## FAQ

### Why is there no official OpenAPI spec for Deel REST API?

Deel does not publish a maintained OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Deel via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Deel REST API use?

Two schemes are supported: a bearer token (JWT) generated from Apps & Perks > Developer Center, and OAuth 2.0 authorization code flow against https://auth.deel.com with scoped permissions like contracts:read, payslips:read, and timesheets:write. Through Jentic the bearer token or OAuth tokens are held in your Jentic One instance and never exposed to agent context.

### Can I run global payroll and download payslips with the Deel REST API?

Yes. The /gp/* endpoints cover global payroll workers - update compensation via PATCH `/gp/workers/{worker_id}/compensation`, manage bank accounts at `/gp/workers/{worker_id}/banks`, retrieve payslips with GET `/gp/workers/{worker_id}/payslips`, and pull gross-to-net reports from `/gp/reports/{gp_report_id}/gross_to_net.` EOR workers have parallel endpoints under `/eor/workers.`

### What are the rate limits for the Deel REST API?

Deel applies per-token rate limits but does not publish exact figures in the public spec. Plan for bursty workloads (invoice sync, payroll close) by paginating, throttling concurrent requests, and respecting any 429 Retry-After headers. Jentic's execution layer handles standard exponential backoff for you.

### How do I create a contractor contract through Jentic?

Install with 'pip install jentic', search for 'create a contract for a contractor', and Jentic returns the POST `/contracts/time-based` or POST `/contracts/gp` operation. Load the schema, supply contractor details, rate, and currency, then execute. Jentic injects the bearer token automatically and runs validation against Deel's expected request shape.

### Can I subscribe to events for contract signatures or payroll runs?

Yes. The /webhooks endpoints let you register a callback URL for events such as contract signed, invoice paid, and timesheet approved. Each subscription targets specific event types and your handler receives the payload over HTTPS, which is the standard pattern for keeping downstream systems in sync without polling.

### Can I limit what my agent is allowed to do with the Deel REST API?

Yes. Because you run Jentic One yourself, your own rules decide which of Deel's 153 operations and which stored credentials the agent may use. You can allow read-only calls like GET /invoices or GET `/gp/reports/{gp_report_id}/gross_to_net` while withholding write operations such as POST `/contracts/time-based`, POST /eor, and POST /adjustments that create contracts or post pay adjustments. The agent can only invoke the operations you have granted it, so it never touches endpoints you leave out.
