Deel logo – 1099Policy is the leading platform for contractor fractional insurance.
Deel logo – 1099Policy is the leading platform for contractor fractional insurance.

Description

Deel is a global workforce platform that enables companies to hire, manage, and pay contractors and employees across borders, offering built-in compliance, contracts, and localized payment automation.

Products

Fractional Insurance

Automated Certificate Review

Search vendor guides...

Search vendor guides...

Deel Integration Guide

Learn how to extend Deel compliance with 1099Policy to add fractional insurance options for global contractors and automatically validate COIs for active contracts.

1. Overview

Connect Deel contract data to 1099Policy to ensure that every fixed-rate, hourly, or milestone-based engagement is insured or has a validated certificate of insurance (COI) before work begins. This integration automates policy binding, COI validation, and compliance updates between both systems.

By integrating Deel and 1099Policy, you can:

  • Bind per-contract coverage once a contract is Activated
  • Validate and store uploaded Certificates of Insurance (COIs)
  • Sync coverage status with Deel lifecycle events through 1099Policy webhooks (policy.*, certificate.*)
  • Map Deel compensation to job.wage (in cents) and wage_type
  • Persist the Deel Contract ID in custom_metadata.contract_id for reconciliation

2. Integration Flow

Coverage should be bound as soon as a Deel contract is fully executed but before any services or payments occur. This ensures compliance and protection from the start of the engagement.

  • Primary trigger: contract.activated (Deel Webhooks API)
  • Alternative trigger: contract.signed (if activation is automatic)
  • Event delivery: Deel Webhooks API (contract.signed, contract.activated)
  • Required data: contract.id, worker.id, contract_rate.amount, payment_unit, start_date, end_date
  • Authentication: Deel API uses bearer tokens for all requests

3. Core Concepts

Each Deel object maps directly to a 1099Policy resource, ensuring consistent coverage tracking.

Deel Object1099Policy ObjectDescription
ContractJob + AssignmentJob defines scope and rate; Assignment binds coverage to duration
WorkerContractorRepresents the insured individual
Document (COI upload)CertificateBYO-COI intake and validation
Contract IDcustom_metadata.contract_idReconciliation key

4. End-to-End Implementation

This section shows how to retrieve Deel data and create corresponding 1099Policy records step-by-step.

4.1 Create Contractor

Each Deel Worker must exist in 1099Policy as a Contractor before you can create Quotes or Assignments. Every Contractor must include a unique contact.email to ensure tenant-level uniqueness. If Deel does not expose an email address, generate a proxy such as <worker_id>@relay.yourdomain.com.

Deel Field1099Policy ContractorNotes
worker.idcustom_metadata.deel_worker_idReconciliation key
first_name, last_namecontact.first_name, contact.last_nameRequired
emailcontact.emailRequired; use proxy if missing
countryaddress.countryOptional
region / cityaddress.region / address.cityOptional

Source: Deel (REST)


GET https://api.letsdeel.com/rest/v2/workers/{worker_id}
Authorization: Bearer deel_live_***

Destination: 1099Policy (POST /contractors)


POST https://api.1099policy.com/api/v1/contractors
Authorization: Bearer t9k_test_***
Content-Type: application/json
Idempotency-Key: deel-worker-<WORKER_ID>


{
  "contact": {
    "first_name": "Jordan",
    "last_name": "Cruz",
    "email": "w_8831@relay.yourdomain.com"
  },
  "address": {
    "country": "US",
    "region": "NY",
    "city": "New York"
  },
  "custom_metadata": {
    "deel_worker_id": "w_8831"
  }
}

4.2 Create Job

Jobs represent the contract scope, category, and compensation. Create a Job when a Deel contract transitions to Active.

1099Policy Job FieldDeel SourceNotes
namecontract.titleRole or contract title
descriptioncontract.descriptionScope of work
entityInternal client/account IDMust exist in 1099Policy
category_codejob_family → mapped codeMaintain mapping
wage (cents)contract_rate.amount × 100Required
wage_typepayment_unit"hourly" or "flatfee"Required
regionworker_countryDefaults to contractor region
custom_metadata.contract_idcontract.idReconciliation

Source: Deel (REST)


GET https://api.letsdeel.com/rest/v2/contracts/{contract_id}
Authorization: Bearer deel_live_***

Destination: 1099Policy (POST /jobs)


POST https://api.1099policy.com/api/v1/jobs
Authorization: Bearer t9k_test_***
Content-Type: application/json


{
  "name": "Marketing Design Contract #4451",
  "description": "Create campaign assets and landing pages for Q4 launch",
  "entity": "en_12AbC3",
  "category_code": "MARKETING_DESIGN",
  "wage": 500000,
  "wage_type": "flatfee",
  "region": "US",
  "custom_metadata": { "contract_id": "4451" }
}

4.3 Create Quote

Quotes determine the policy type and coverage duration for the Deel contract.

1099Policy Quote FieldDeel SourceNotes
contractorWorker → Contractor mappingMust exist first
jobReturned Job IDRequired
coverage_type[]Compliance requirementse.g., ["workers-comp","general"]
effective_datestart_date (epoch UTC)Required
end_dateend_date (epoch UTC)Required
custom_metadata.contract_idcontract.idReconciliation key

Source: Deel (REST)


GET https://api.letsdeel.com/rest/v2/contracts/{contract_id}/details
Authorization: Bearer deel_live_***

Destination: 1099Policy (POST /quotes)


POST https://api.1099policy.com/api/v1/quotes
Authorization: Bearer t9k_test_***
Content-Type: application/json


{
  "contractor": "cn_Kh18Qs",
  "job": "jb_Dl9n42",
  "coverage_type": ["workers-comp","general"],
  "effective_date": 1764300000,
  "end_date": 1766892000,
  "custom_metadata": { "contract_id": "4451" }
}

4.4 Create Insurance Application Session

The insurance application session allows the contractor to review and bind their first policy before work begins.

Destination: 1099Policy (POST /apply/sessions)


POST https://api.1099policy.com/api/v1/apply/sessions
Authorization: Bearer t9k_test_***
Content-Type: application/json


{
  "quote": "qt_Pf5LmA",
  "success_url": "https://app.deel.com/contracts/4451?coverage=active",
  "cancel_url": "https://app.deel.com/contracts/4451?coverage=canceled",
  "custom_metadata": { "contract_id": "4451" }
}

One time opt-in

The Worker completes this flow once to activate their first policy.

4.5 Create Assignment

Assignments apply coverage automatically for returning contractors who already completed their opt-in.

Destination: 1099Policy (POST /assignments)


POST https://api.1099policy.com/api/v1/assignments
Authorization: Bearer t9k_test_***
Content-Type: application/json


{
  "contractor": "cn_Kh18Qs",
  "job": "jb_Dl9n42",
  "effective_date": 1764300000,
  "end_date": 1766892000,
  "coverage_type": ["workers-comp","general"],
  "custom_metadata": { "contract_id": "4451" }
}

4.6 Upload Certificate (BYO-COI)

If a contractor provides their own COI via Deel’s Documents API, upload it to 1099Policy for validation.

Source: Deel (REST)


GET https://api.letsdeel.com/rest/v2/contracts/{contract_id}/documents
Authorization: Bearer deel_live_***

Destination: 1099Policy (POST /files/certificates)
(multipart upload)

Fields:

  • certificate=@file.pdf
  • contractor=cn_Kh18Qs
  • custom_metadata[contract_id]=4451

4.7 Record Invoice (Optional)

If the contractor’s final pay differs from the original estimate, record the actual remuneration for reconciliation and audit. This step is optional and does not affect insurance coverage.

Destination: 1099Policy (POST /invoices)


POST https://api.1099policy.com/api/v1/invoices
Authorization: Bearer t9k_test_***
Content-Type: application/json


{
  "contractor": "cn_ti8eXviE4A",
  "job": "jb_rajdrwMUKi",
  "gross_pay": 1200,
  "paycycle_startdate": 1714419793,
  "paycycle_enddate": 1714419793
}

Unix timestamp

Use Unix seconds (UTC) for paycycle_startdate and paycycle_enddate. See full API reference: https://docs.1099policy.com/group/endpoint-invoice

5. Webhooks

Webhooks synchronize insurance and contract data across both platforms.

SourceEventAction
Deelcontract.activatedCreate Job and Quote
Deelcontract.updatedAdjust Assignment coverage window
Deelcontract.completedEnd coverage
1099Policypolicy.activeMark contract as insured
1099Policypolicy.canceled / policy.expiredMark coverage inactive
1099Policycertificate.validatedMark COI as valid
1099Policycertificate.flaggedTrigger compliance review

6. Testing Checklist

Verify that your integration binds coverage and syncs correctly with Deel events.

  • Contractor created with proxy email if missing
  • Job created with wage and category mapping
  • Quote created with valid coverage window
  • Application Session launches and binds coverage
  • Assignment aligns with contract term
  • Webhook endpoint registered and verified
  • Certificate uploads validated

7. References

Was this page helpful?

Yes

No

Was this page helpful?

Yes

No

Was this page helpful?

Yes

No

Was this page helpful?

Yes

No

Was this page helpful?

Yes

No

© Copyright 2024. All rights reserved.

© Copyright 2024. All rights reserved.

© Copyright 2024. All rights reserved.

© Copyright 2024. All rights reserved.

© Copyright 2024. All rights reserved.