If your platform runs payroll on Check, 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.
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 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.
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.
| 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:
| 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.
- 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.
- Sex at birth. Not on Check’s employee object. Optional in our schema.
- 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 and forward changes to the census endpoints described in 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 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.