Skip to main content
When your payroll withholds an employee’s HSA contribution, Prescience moves that money into the employee’s HSA. Prescience deposits only what you report as actually withheld, so after every completed payroll, post its results:
The group must be enrolled. Nothing on this endpoint moves money by itself: results become payroll evidence, and deposits follow Prescience’s own checks and approvals.

One completed payroll

Responses

  • 202 with the stored event, and what happened to each employee (employees[].outcome):
    • recorded: accepted as payroll evidence. needs_review: accepted, and Prescience’s team reviews it.
    • payday_in_future, busy, not_tracked: kept and retried automatically when you post your next payroll.
    • not_on_roster: the email isn’t one of this employer’s employees on Prescience.
    • rejected: the facts didn’t pass validation; Prescience’s team reviews it.
    • validated: sandbox only. The report was checked, and nothing was recorded.
  • 200 with the same body when you send the same eventId and version again. Retrying is always safe.
  • 409 conflict when an eventId and version you already sent arrives with different content. Send it as a new version.
  • 400 / 422 when fields are missing or inconsistent, for example a companyId that isn’t this group’s.

What is held

These are stored with status: "held" and are never used as payroll evidence: a payroll that is still draft, pending or processing, rosterComplete: false, or no employees. Post the results once the payroll is paid.

Sandbox

With a psk_test_ key the same checks run, and every employee comes back validated. Nothing is recorded and no money is involved.