> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getprescience.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Partner-run enrollment

> Send final elections when you run enrollment and payroll deductions yourself.

Some brokers run elections and payroll deductions themselves and have
Prescience set up member accounts. Prescience sets this per partner
(`benefitsAdmin`: `prescience`, the default, or `partner`).

## Submit elections

After the group's enrollment exists, send each employee's final election. This
is also the MCP tool `submit_elections`.

```json POST /groups/{groupId}/elections theme={null}
{
  "elections": [
    {
      "externalId": "emp_1",
      "election": "enrolled",
      "tier": "employeeSpouse",
      "dependents": [{ "relationship": "spouse" }],
      "effectiveDate": "2026-11-01"
    },
    { "externalId": "emp_2", "election": "waived", "waiverReason": "other_employer_group" }
  ]
}
```

* Identify each employee by `memberId` or `externalId`.
* `election` is `enrolled` or `waived`. `effectiveDate` (`YYYY-MM-DD`) is
  required for an enrolled election; `waiverReason` is optional on a waiver.
* `tier` (`employeeOnly`, `employeeSpouse`, `employeeChildren`, `family`) must
  match the covered `dependents` (`relationship`: `spouse`, `domestic_partner`,
  `child` or `other`; `dob` and `name` optional).
* Up to 10,000 elections per request. Send an `Idempotency-Key` to make a retry
  safe.
* Valid rows are applied; invalid rows come back in `errors` by `index`. The
  response is `400 invalid_request` when no row is valid, and `409 conflict`
  until the group's enrollment exists.

```json Response (200) theme={null}
{
  "groupId": "grp_8c2f41d09a3e",
  "received": 2,
  "accepted": 2,
  "enrolled": 1,
  "waived": 1,
  "invited": 0,
  "invitesSuppressed": "test-mode",
  "deductionsWebhook": true,
  "errors": []
}
```

Prescience marks the elections on the group's census, records each coverage
effective date and emails each enrolled member a login (`invited` counts them).
Test-mode groups never send email (`invitesSuppressed: "test-mode"`). The
endpoint is also the MCP tool `submit_elections`.

## Payroll deductions

When `benefitsAdmin` is `partner`, Prescience sends a `deductions.changed`
[webhook](/guides/webhooks) after elections are applied (`deductionsWebhook` is
`true`), with each submitted member's `coverage` and `deduction` exactly as
`GET /groups/{groupId}/members` shows them (see
[Payroll deductions](/guides/payroll-deductions)):

```json theme={null}
{
  "groupId": "grp_8c2f41d09a3e",
  "reason": "elections",
  "members": [
    {
      "memberId": "mem_41b7c20d9e3a",
      "externalId": "emp_1",
      "coverage": { "status": "enrolled", "tier": "family", "effectiveDate": "2026-11-01" },
      "deduction": { "medical": { "employeeMonthlyCents": 12240 } }
    }
  ]
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.