Returns the payroll run with the given identifier.
GET /accounting/payroll-details/{id}
Group: Accounting › Payroll Details · Operation ID: getPayrollDetail
A payroll run is a set of payroll lines, one per employee or department, posted for one legal entity. It shares its read with POST accounting/payroll-details/search, which returns the same record. The list at GET accounting/payroll-details is header-only, so the lines come back here and on search.
Open in the interactive reference
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Api-Version |
header | "v1" |
yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1. |
id |
path | string | yes | The unique identifier for the payroll run to return. |
Response
200 Success
Under data (getPayrollDetailOutput):
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | The unique identifier for the payroll run. |
payrollDetailNumber |
string | no | The payroll run number. Absent until a number has been assigned. |
description |
string | no | A description of the payroll run. |
periodName |
string | no | The name of the payroll period this run covers, for example '2026-08'. |
payrollDate |
string (date) | yes | The date the payroll is dated. Format YYYY-MM-DD. |
startDate |
string (date) | no | The first day of the period the run covers. Format YYYY-MM-DD. |
endDate |
string (date) | no | The last day of the period the run covers. Format YYYY-MM-DD. |
currency |
string | yes | The currency the run is denominated in. Format ISO 4217, for example 'USD'. Governs openAmount and every line amount. |
grouping |
string | no | How the payroll run is grouped. Values include 'Employee', 'Department' and 'Multi-level'. |
paymentStatus |
string | no | The payment status of the run. Values include 'unpaid', 'partiallyPaid', 'fullyPaid', 'pending', 'notApplicable' and 'voided'. |
openAmount |
string (decimal) | no | The amount still unpaid on this run, in currency. |
isImported |
boolean | no | Whether the run was imported from a payroll provider rather than entered by hand. |
entityId |
string | no | The legal entity the run belongs to. See id on GET base/entities. |
entityName |
string | no | The name of the legal entity the run belongs to. |
templateId |
string | no | The payroll template this run was created from. See id on GET accounting/payroll-templates/:id. |
lastModifiedDate |
string (date-time) | yes | The date and time the payroll run last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
origin |
string | no | The source system this record came from, as free-form text. Absent when none was supplied. |
lines |
array of object | no | The payroll lines, one per employee or department depending on grouping. An empty array when the run has none. |
lines[].id |
string | yes | The unique identifier for the line. |
lines[].lineNumber |
string | no | The line number. |
lines[].lineLevel |
string | no | The level this line sits at. |
lines[].employeeName |
string | no | The name of the employee this line pays. |
lines[].unmatchedEmployeeName |
string | no | The employee name as it arrived from the payroll provider when it matched no employee on file. |
lines[].departmentName |
string | no | The name of the department this line is charged to. |
lines[].departmentCode |
string | no | The code of that department. |
lines[].departmentNumber |
string | no | The number of that department. |
lines[].totalAmount |
string (decimal) | no | The total amount on the line, in the run currency. |
lines[].totalGrossAmount |
string (decimal) | no | The gross pay on the line, in the run currency. |
lines[].totalNetAmount |
string (decimal) | no | The net pay on the line, in the run currency. |
lines[].totalEmployerAmount |
string (decimal) | no | The employer-side contributions on the line, in the run currency. |
lines[].errorMessage |
string | no | Why this line could not be processed, when it failed. |
Errors
| Code | Status |
|---|---|
NOT_FOUND |
400 |
Statuses
400— Invalid request or business failure. Codes: NOT_FOUND401— Missing or invalid access token403— Not authorized404— Not found429— Too many requests500— Internal server error