---
title: "POST /api/tenants/{tenantId}/payruns/jobs/preview"
method: POST
path: "/api/tenants/{tenantId}/payruns/jobs/preview"
tags: ["Payrun jobs"]
---

# POST /api/tenants/{tenantId}/payruns/jobs/preview

`POST /api/tenants/{tenantId}/payruns/jobs/preview`

## Request

- The document declares no server URL.
- Auth: none declared
- TypeScript: <https://skmtc.dev/payroll-engine/apis/payroll-engine-backend-api-v1/docs/api/tenants/:tenantId/payruns/jobs/preview/post.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `tenantId` integer, required

## Request body

- PayrunJobInvocation
  - `id` integer
  - `status` 'Active' | 'Inactive': The object status
  - `created` string, date-time
  - `updated` string, date-time
  - `payrunName` string, required
  - `userIdentifier` string, required
  - `payrunJobId` integer
  - `parentJobId` integer, nullable
  - `name` string, required
  - `owner` string, nullable
  - `retroJobs` RetroPayrunJob[], nullable
    - `id` integer
    - `status` 'Active' | 'Inactive': The object status
    - `created` string, date-time
    - `updated` string, date-time
    - `scheduleDate` string, date-time, required
    - `resultTags` string[], nullable
  - `tags` string[], nullable
  - `forecast` string, nullable
  - `retroPayMode` 'ValueChange' | 'None': The payrun retro pay mode
  - `jobResult` 'Full' | 'Incremental': The payrun job result
  - `jobStatus` 'Draft' | 'Release' | 'Process' | 'Complete' | 'Forecast' | 'Abort' | 'Cancel': The payrun job status Supported state changes: - *: Draft | Forecast | Abort - Draft: Release | Abort - Release: Process | Abort - Process: Complete | Cancel
  - `completedJobStatus` 'Draft' | 'Release' | 'Process' | 'Complete' | 'Forecast' | 'Abort' | 'Cancel': The payrun job status Supported state changes: - *: Draft | Forecast | Abort - Draft: Release | Abort - Release: Process | Abort - Process: Complete | Cancel
  - `periodStart` string, date-time, required
  - `evaluationDate` string, date-time, nullable
  - `payDate` string, date-time, nullable
  - `reason` string, required
  - `storeEmptyResults` boolean
  - `logLevel` 'Verbose' | 'Debug' | 'Information' | 'Warning' | 'Error' | 'Fatal': Specifies the meaning and relative importance of a log event
  - `employeeIdentifiers` string[], nullable
  - `attributes` object, nullable

## Response `200`

OK

- PayrollResultSet
  - `id` integer
  - `status` 'Active' | 'Inactive': The object status
  - `created` string, date-time
  - `updated` string, date-time
  - `payrollId` integer, required
  - `payrollName` string, nullable
  - `payrunId` integer
  - `payrunName` string, nullable
  - `payrunJobId` integer, required
  - `payrunJobName` string, nullable
  - `employeeId` integer, required
  - `employeeIdentifier` string, nullable
  - `divisionId` integer, required
  - `divisionName` string, nullable
  - `cycleName` string, required
  - `cycleStart` string, date-time, required
  - `cycleEnd` string, date-time, required
  - `periodName` string, required
  - `periodStart` string, date-time, required
  - `periodEnd` string, date-time
  - `wageTypeResults` WageTypeResultSet[], nullable
    - `id` integer
    - `status` 'Active' | 'Inactive': The object status
    - `created` string, date-time
    - `updated` string, date-time
    - `payrollResultId` integer
    - `tenantId` integer
    - `employeeId` integer
    - `divisionId` integer
    - `payrunJobId` integer
    - `forecast` string, nullable
    - `parentJobId` integer, nullable
    - `payDate` string, date-time
    - `wageTypeId` integer, required
    - `wageTypeNumber` number, double, required
    - `wageTypeName` string, required
    - `wageTypeNameLocalizations` object, nullable
    - `valueType` 'String' | 'Boolean' | 'Integer' | 'NumericBoolean' | 'Decimal' | 'DateTime' | 'None' | 'Date' | 'Weekday' | 'Month' | 'Year' | 'Money' | 'Percent' | 'WebResource': The payroll value types for cases
    - `value` number, double, required
    - `culture` string, nullable
    - `start` string, date-time, required
    - `end` string, date-time, required
    - `tags` string[], nullable
    - `attributes` object, nullable
    - `customResults` WageTypeCustomResult[], nullable
      - `id` integer
      - `status` 'Active' | 'Inactive': The object status
      - `created` string, date-time
      - `updated` string, date-time
      - `wageTypeResultId` integer
      - `tenantId` integer
      - `employeeId` integer
      - `divisionId` integer
      - `payDate` string, date-time
      - `wageTypeNumber` number, double, required
      - `wageTypeName` string, nullable
      - `wageTypeNameLocalizations` object, nullable
      - `source` string, required
      - `valueType` 'String' | 'Boolean' | 'Integer' | 'NumericBoolean' | 'Decimal' | 'DateTime' | 'None' | 'Date' | 'Weekday' | 'Month' | 'Year' | 'Money' | 'Percent' | 'WebResource': The payroll value types for cases
      - `value` number, double, required
      - `culture` string, nullable
      - `start` string, date-time, required
      - `end` string, date-time, required
      - `tags` string[], nullable
      - `attributes` object, nullable
  - `collectorResults` CollectorResultSet[], nullable
    - `id` integer
    - `status` 'Active' | 'Inactive': The object status
    - `created` string, date-time
    - `updated` string, date-time
    - `payrollResultId` integer
    - `tenantId` integer
    - `employeeId` integer
    - `divisionId` integer
    - `payrunJobId` integer
    - `forecast` string, nullable
    - `parentJobId` integer, nullable
    - `payDate` string, date-time
    - `collectorId` integer, required
    - `collectorName` string, required
    - `collectorNameLocalizations` object, nullable
    - `collectMode` 'Summary' | 'Minimum' | 'Maximum' | 'Average' | 'Range' | 'Count', required: The collect mode
    - `negated` boolean, required
    - `valueType` 'String' | 'Boolean' | 'Integer' | 'NumericBoolean' | 'Decimal' | 'DateTime' | 'None' | 'Date' | 'Weekday' | 'Month' | 'Year' | 'Money' | 'Percent' | 'WebResource', required: The payroll value types for cases
    - `value` number, double, required
    - `culture` string, nullable
    - `start` string, date-time, required
    - `end` string, date-time, required
    - `tags` string[], nullable
    - `attributes` object, nullable
    - `customResults` CollectorCustomResult[], nullable
      - `id` integer
      - `status` 'Active' | 'Inactive': The object status
      - `created` string, date-time
      - `updated` string, date-time
      - `collectorResultId` integer
      - `tenantId` integer
      - `employeeId` integer
      - `divisionId` integer
      - `payDate` string, date-time
      - `collectorName` string, required
      - `collectorNameLocalizations` object, nullable
      - `source` string, required
      - `valueType` 'String' | 'Boolean' | 'Integer' | 'NumericBoolean' | 'Decimal' | 'DateTime' | 'None' | 'Date' | 'Weekday' | 'Month' | 'Year' | 'Money' | 'Percent' | 'WebResource', required: The payroll value types for cases
      - `value` number, double, required
      - `culture` string, nullable
      - `start` string, date-time, required
      - `end` string, date-time, required
      - `tags` string[], nullable
      - `attributes` object, nullable
  - `payrunResults` PayrunResult[], nullable
    - `id` integer
    - `status` 'Active' | 'Inactive': The object status
    - `created` string, date-time
    - `updated` string, date-time
    - `payrollResultId` integer
    - `tenantId` integer
    - `employeeId` integer
    - `divisionId` integer
    - `payrunJobId` integer
    - `forecast` string, nullable
    - `parentJobId` integer, nullable
    - `payDate` string, date-time
    - `source` string, required
    - `name` string, required
    - `nameLocalizations` object, nullable
    - `slot` string, nullable
    - `valueType` 'String' | 'Boolean' | 'Integer' | 'NumericBoolean' | 'Decimal' | 'DateTime' | 'None' | 'Date' | 'Weekday' | 'Month' | 'Year' | 'Money' | 'Percent' | 'WebResource', required: The payroll value types for cases
    - `value` string, required
    - `culture` string, nullable
    - `numericValue` number, double, nullable
    - `start` string, date-time, required
    - `end` string, date-time, required
    - `tags` string[], nullable
    - `attributes` object, nullable

## Other responses

- `404`: Not Found
- `422`: Unprocessable Content

## Changes

- **2026-10-13** `e3e4305cbb92`: 8 info
  - added the new optional request property `payDate` (media type: application/json)
  - added the new optional request property `payDate` (media type: text/json)
  - added the new optional request property `payDate` (media type: application/*+json)
  - added the optional property `collectorResults/items/customResults/items/payDate` to the response with the `200` status
  - …4 more
- **2026-04-01** `34e260deaa2c`: 17 info
  - added the new optional request property `completedJobStatus` (media type: application/json)
  - added the new optional request property `completedJobStatus` (media type: text/json)
  - added the new optional request property `completedJobStatus` (media type: application/*+json)
  - added the optional property `collectorResults/items/forecast` to the response with the `200` status
  - …13 more
- **2026-03-09** `97ae205209e8`: 1 info
  - endpoint added
- **2023-07-23** `fd1b5146be4a`: 1 breaking
  - api path removed without deprecation

[Operation history](https://skmtc.dev/payroll-engine/apis/payroll-engine-backend-api-v1/changes/api/tenants/:tenantId/payruns/jobs/preview/post.md)

---

[API](https://skmtc.dev/payroll-engine/apis/payroll-engine-backend-api-v1.md) - [All operations](https://skmtc.dev/payroll-engine/apis/payroll-engine-backend-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/payroll-engine/apis/payroll-engine-backend-api-v1/revisions/d1227845e767?raw)
