# Cancel & deactivate

Learn how to cancel insurance coverage for contractor assignments and how to disable automatic coverage.

You can use the 1099Policy API to cancel insurance coverage for a specific assignment before its start date. When you cancel an assignment, the contractor's coverage for that specific job is terminated. That said, the contractor maintains an active insurance application and continues receiving coverage for all subsequent assignments unless they explicitly opt out as explained in more detail below.

## Cancellation process

You can cancel assignments using the `assignment` API. Cancellation takes effect immediately, but there are some important limitations to keep in mind:

- Assignments can only be cancelled before their start date (contact us if you need additional options)
- Once cancelled, you cannot reactivate the assignment
- After cancellation, you can no longer update the assignment or its metadata

### Refund handling

When an assignment is cancelled, the refund process depends on the payment method:

- For credit card payments: The contractor receives an automatic refund if they've already been charged
- For entities remitting payments on behalf of contractor: The entity receives the refund directly

### Notifications

We send the following notifications when an assignment is cancelled:

- An email to the contractor notifying them of the cancellation
- A webhook event `assignment.cancelled` that you can use to update your systems

## Cancel an assignment

To cancel an assignment, you can pass the `job` id associated with the assignment to the `/assignments/cancel` endpoint as detailed below.

```python
curl -X POST "https://api.1099policy.com/v1/assignments/cancel" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "job_id": "jb_123abc",
    "reason": "client_request"
  }'
```

### Required parameters

| Parameter | Description |
| --- | --- |
| job_id | The ID of the job associated with the assignment to be cancelled |

### Optional parameters

| Parameter | Description |
| --- | --- |
| reason | A reason for the cancellation (e.g. "client_request", "contractor_request") |

### Errors

| Error Code | Description |
| --- | --- |
| assignment_already_started | The assignment cannot be cancelled because it has already started. |
| invalid_assignment_id | No assignment found for the provided job ID |
| invalid_job_id | The provided job ID is invalid |

## Cancellation events

The platform sends events when an assignment's status changes. At minimum, we recommend listening for the `assignment.cancelled` event.

| Event | Description |
| --- | --- |
| assignment.cancelled | Sent immediately when you cancel a contractor's assignment |

## Updating policy to deactivate an insurance application

As noted, cancelling an assignment only affects coverage for that specific job. The contractor's insurance application remains active and they continue receiving coverage for new assignments unless:

1. They explicitly opt out of coverage for specific assignments
2. They deactivate their application by setting `policy.is_active` to `false`

Note that you can disable automatic, per assignment coverage, at the insurance application level because we create a policy object for every new application the contractor completes. As a result, you can make a PUT request to the `policy` API as detailed below.

```python
curl -X POST "https://api.1099policy.com/v1/policies/pl_P1mqYWt7cZ" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "is_active": false,
  }'
```

Setting `policy.is_active` to `False` does not immediately impact any reported assignments. In other words, the contractor will continue to have coverage for all previously reported assignments. On the other hand, any new reported assignments associated with a `policy` where `is_active` is `False` will automatically be marked as ineligible for coverage.
