---
title: "Estimate employment dates"
method: POST
path: "/calculations/estimated_employment_dates"
tags: ["Calculations"]
---

# Estimate employment dates

`POST /calculations/estimated_employment_dates`

## Request

- Base URL: `https://sandbox.nmbr.co/services/payroll`
- URL: `https://sandbox.nmbr.co/services/payroll/calculations/estimated_employment_dates`
- Auth: HTTP bearer

Estimate the first and last day each employee worked and was employed. The estimate comes from payroll data, not from hire or termination dates. Pay periods on approved or paid payrolls set the range, ignoring historical payrolls and corrections. `estimated_first_day_worked` and `estimated_last_day_worked` ignore $0 pay stubs. `estimated_first_day_employed` and `estimated_last_day_employed` also count $0 pay stubs that record hours, such as unpaid leave. A pay rate that starts inside the first pay period moves the first day later, and a pay rate that ends inside the last pay period moves the last day earlier.

## Request body

- object[]: The body is a list of up to 100 items. Each item has an `employee_id` and an optional `work_assignment_ids` list. When `work_assignment_ids` is omitted, all of the employee's work assignments are used. The same employee may appear more than once with different work assignments. Each response row repeats its item and adds the dates.
  - `employee_id` string
  - `work_assignment_ids` string[]

## Response `200`

OK

- object
  - `data` EstimatedEmploymentDates[]
    - `employee_id` string: The employee.
    - `work_assignment_ids` string[]: The work assignments the estimate was calculated from.
    - `estimated_first_day_worked` unknown
    - `estimated_last_day_worked` unknown
    - `estimated_first_day_employed` string, nullable: The estimated first day employed, or `null` when the employee has never been paid and has no recorded hours.
    - `estimated_last_day_employed` string, nullable: The estimated last day employed. Unlike `estimated_last_day_worked`, this counts $0 pay periods that record hours, such as unpaid leave. Unpaid leave counts only when it is recorded as a line item. `null` when the employee has never been paid and has no recorded hours.

## Changes

- **2026-10-22** `e2262a86fcc4`: 2 breaking, 2 info
  - the `data/items/estimated_first_day_worked` response's property type changed from `string` to no type for status `200`
  - the `data/items/estimated_last_day_worked` response's property type changed from `string` to no type for status `200`
  - added the optional property `data/items/estimated_first_day_employed` to the response with the `200` status
  - added the optional property `data/items/estimated_last_day_employed` to the response with the `200` status
- **2026-09-19** `0b5c5f978966`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/nmbr/apis/nmbr-api/changes/calculations/estimated_employment_dates/post.md)

---

[API](https://skmtc.dev/nmbr/apis/nmbr-api.md) - [All operations](https://skmtc.dev/nmbr/apis/nmbr-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nmbr/apis/nmbr-api/revisions/3a5d58d37d2c?raw)
