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

# Check-powered platforms

> Map Check payroll objects onto the Prescience census API. Every required field is already in Check.

If your platform runs payroll on [Check](https://www.checkhq.com), this page maps Check's API objects onto the Prescience census schema field by field. The short version: Check natively stores every field the census API requires, so the integration is a data-mapping exercise against records you already hold.

<Check>
  The Prescience Partner API is fully compatible with Check-powered payroll platforms. Names, email, date of birth, ZIP, hire date, and employment status all come straight off Check's `Employee` object; legal name, address, and contact details come off `Company`. Check's `employee.*` webhooks give you real-time census-sync triggers, and its benefits API carries employer HSA contributions through payroll with IRS limits enforced.
</Check>

Check also runs an established third-party benefits integration program (health insurance and retirement providers attach deductions to Check payrolls today), so this integration shape is well-trodden on their side. See [Check's benefits documentation](https://docs.checkhq.com/docs/defining-benefits).

## Employee field mapping

Each census member submitted to `PUT /groups/{groupId}/census` maps from Check as follows. Field references come from [Check's Employee object](https://docs.checkhq.com/reference/the-employee-object).

| Prescience field | Check source                                      | Notes                                                                                                                                                     |
| ---------------- | ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `externalId`     | `Employee.id`                                     | Check's `em_...` ID is the natural stable identifier.                                                                                                     |
| `firstName`      | `Employee.first_name`                             | Required in Check.                                                                                                                                        |
| `lastName`       | `Employee.last_name`                              | Required in Check.                                                                                                                                        |
| `email`          | `Employee.email`                                  | Required in Check. Required by Prescience before enrollment, not for quoting.                                                                             |
| `dob`            | `Employee.dob`                                    | `YYYY-MM-DD`, same format both sides. Optional in Check's schema, so validate population before submitting (see gaps below).                              |
| `zip`            | `Employee.residence.postal_code`                  | Optional at creation in Check, but payroll-ready employees have a residence since it drives tax withholding.                                              |
| `hireDate`       | `Employee.start_date`                             | Required in Check.                                                                                                                                        |
| `status`         | `Employee.active` and `Employee.termination_date` | `active: true` maps to `active`; a set `termination_date` maps to `terminated`.                                                                           |
| `employmentType` | Partial                                           | Contractors are a separate Check object (exclude them, or submit as `contractor`). Full-time vs part-time is not in Check; source it from your app layer. |
| `sexAtBirth`     | Not in Check                                      | Source from your app layer. Optional for quoting.                                                                                                         |
| `dependents[]`   | Not in Check                                      | Source from your app layer. See gaps below.                                                                                                               |

## Company field mapping

For `POST /groups`, from [Check's Company object](https://docs.checkhq.com/docs/company-enrollment):

| Prescience field  | Check source                     | Notes                                                                                                                                                                |
| ----------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `companyName`     | `Company.trade_name`             | The DBA name.                                                                                                                                                        |
| `legalEntityName` | `Company.legal_name`             | Matches IRS records on the Check side.                                                                                                                               |
| `domain`          | `Company.website`                |                                                                                                                                                                      |
| `ein`             | Your app layer                   | The FEIN is submitted to Check at company enrollment, but Check does not document reading the value back. Pass it from your own records. Optional at group creation. |
| `address`         | `Company.address`                | `line1`, `city`, `state`, `postal_code` are required in Check.                                                                                                       |
| `contact`         | `Company.email`, `Company.phone` | Check holds the payroll administrator's contact.                                                                                                                     |

## What Check does not model

Three census fields live in your application layer rather than in Check. Every benefits provider integrating with Check-powered platforms collects these the same way.

1. **Dependents.** Check has no dependents object. Collect spouse and child records (relationship, name, date of birth) in your enrollment UI and include them as `dependents[]`. Quoting works without them, but premiums for covered dependents only price correctly when they are present.
2. **Sex at birth.** Not on Check's employee object. Optional in our schema.
3. **Full-time vs part-time.** Check classifies pay (hourly, salaried) on earnings, not employment class on the employee. Source `employmentType` from your own HRIS data.

Also note: `dob` and `residence` are optional in Check's schema. Both are required for quoting, so validate them before calling `PUT /census`. The endpoint returns per-row errors for anything missing, so a dry-run submission doubles as a completeness check.

## Census sync triggers

Subscribe to Check's [webhook events](https://docs.checkhq.com/docs/webhook-event-types) and forward changes to the census endpoints described in [Census sync](/guides/census-sync):

| Check event                                      | Prescience call                                                                                 |
| ------------------------------------------------ | ----------------------------------------------------------------------------------------------- |
| `employee.created`                               | `POST /groups/{groupId}/members`                                                                |
| `employee.updated`                               | `PATCH /groups/{groupId}/members/{memberId}`                                                    |
| `employee.updated` with a new `termination_date` | `PATCH .../members/{memberId}` with `status: "terminated"` (and `cobra: true` where applicable) |
| `employee.deleted`                               | `PATCH .../members/{memberId}` with `status: "terminated"`                                      |
| `company.updated`                                | `PATCH /groups/{groupId}`                                                                       |

Check has no dedicated termination event; terminations surface as `employee.updated` with `termination_date` set, so inspect that field in your `employee.updated` handler.

## HSA contributions through payroll

The Diamond plan has a \$0 employee premium, so there are no per-paycheck premium deductions to configure. Employer HSA contributions can flow through Check directly: create an `hsa` [benefit](https://docs.checkhq.com/reference/types-of-benefits) with `company_contribution_amount` set and no employee contribution. Check enforces IRS annual limits, including catch-up contributions, on its side.

## Sandbox parity

Check's sandbox and the Prescience test mode compose cleanly: point your Check sandbox employee data at our test-mode endpoints with a `psk_test_` key, and the full census, quote, and enrollment flow runs end to end with no live money movement on either side. See [Environments](/test-mode).
