List payroll templates
Operation ID: payrollTemplates
Group: Accounting › Payroll Templates
Open in the interactive reference
GET /accounting/payroll-templates
Read-only: Reads and returns; changes nothing.
Lists payroll templates, without their categories. To get the categories, use GET accounting/payroll-templates/:id or POST accounting/payroll-templates/search.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Api-Version |
header | string · 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. |
Query surface
id— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likename— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likegroupBy— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likejournalEntryDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likejournalEntryGroupBy— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likedeductionsType— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likesource— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likestatus— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likelastModifiedDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, between- Orderable: id, name, groupBy, journalEntryDate, journalEntryGroupBy, deductionsType, source, status, lastModifiedDate
- Selectable: id, name, description, groupBy, journalEntryDate, journalEntryGroupBy, deductionsType, source, status, lastModifiedDate
page[size]— Page sizepage[cursor]— Opaque continuation cursor
Response
200 Success
Under data, an array of payrollTemplatesRow:
| Field | Type | Required | Filter | Sort | Description |
|---|---|---|---|---|---|
id |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The unique identifier for the payroll template. |
name |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The name of the payroll template. Unique across payroll templates. |
description |
string | null | no | no | no | A free-form description of the payroll template. |
groupBy |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The level at which payroll amounts are entered. Possible values: 'Employee', 'Department', 'Multi-level'. |
journalEntryDate |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The date the generated journal entry is posted on. Possible values: 'payrollDate', 'endDate'. |
journalEntryGroupBy |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The default consolidation level for generated journal lines. Possible values: 'account', 'accountAndPayrollCategory', 'payrollCategory', 'payrollCategoryByEmployee'. |
deductionsType |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | Whether deduction amounts in imported data arrive positive or negative. Possible values: 'positive', 'negative'. |
source |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The payroll system this template imports from. Possible values: 'datev', 'datevEmployeePayroll', 'datevEmployeePayrollPersonLevel', 'rippling', 'lexware', 'briars', 'gusto', 'adpGLReport', 'adpPayrollHistory', 'sage', 'none'. |
status |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The lifecycle status of the payroll template. Possible values: 'create', 'active', 'inactive'. It is computed from the template's categories, not set through the API. |
lastModifiedDate |
date-time | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | The date and time the payroll template last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "<name>",
"description": "<description>",
"groupBy": "<groupBy>",
"journalEntryDate": "<journalEntryDate>",
"journalEntryGroupBy": "<journalEntryGroupBy>",
"deductionsType": "<deductionsType>",
"source": "<source>",
"status": "<status>",
"lastModifiedDate": "2026-01-15T09:30:00.000Z"
}
],
"pagination": {
"hasMore": true,
"nextCursor": "<nextCursor>"
}
}
Statuses
400— Invalid request or business failure401— The request carries no valid access token.403— Not authorized404— Not found429— Too many requests from this client address. The response has no body and noRetry-Afterheader.500— Internal server error