---
title: "List pay cycles for employer"
method: GET
path: "/payroll/hub/us/employers/{employerId}/pay-cycles"
tags: ["Pay cycles"]
---

# List pay cycles for employer

`GET /payroll/hub/us/employers/{employerId}/pay-cycles`

## Request

- Base URL: `https://api.hibob.com/v1`
- URL: `https://api.hibob.com/v1/payroll/hub/us/employers/{employerId}/pay-cycles`
- Auth: HTTP bearer

**Beta.** Discovers pay cycles for an employer. Use during partner onboarding
for historical paycheck sync, or to find a `payCycleId` to pass to the pay
cycle / paychecks endpoints. Supports optional date filters and cursor pagination.

**Rate limit:** 5 requests per minute per authenticated caller.

**Query parameter naming:** `start_date` and `end_date` use snake_case (not
camelCase like `employeeIds` elsewhere in this API). The running service
accepts only these spellings today.

## Path parameters

- `employerId` string, required

## Query parameters

- `start_date` string
- `end_date` string
- `cursor` string
- `limit` integer

## Response `200`

Success

- ListPayCyclesForEmployerOutput
  - `items` PayCycleListItem[], required: Pay cycles for the employer, in descending pay date order.
    - `payCycleId` string, required: Unique identifier of the pay cycle. Use this as the `payCycleId` path parameter on the pay cycle / paychecks endpoints.
    - `payDate` string, nullable: Date when payment is made to the employees in this cycle (ISO 8601 calendar date, `YYYY-MM-DD`). Absent for cycles that have not been paid yet.
    - `periodStart` string, required: First day of the pay period covered by this cycle.
    - `periodEnd` string, nullable: Last day of the pay period covered by this cycle. Absent for open-ended cycles.
  - `responseMetadata` ResponseMetadata, required: Pagination metadata returned with every list response. Use `nextCursor` to fetch the next page; `null` indicates there are no more results.
    - `nextCursor` string, nullable: Opaque cursor identifying the start of the next page of results. Pass this value back as the `cursor` query parameter on the next request to continue paging. `null` (or absent) when the current page is the last one.

## Other responses

- `400`: Bad request — invalid request body, validation error, or deduction rejected by US Payroll.
- `401`: Unauthorized — the OAuth 2.0 access token is missing, invalid, or expired.
- `403`: Forbidden — the authenticated caller does not have permission to perform this operation on the requested company, employer, or employee.
- `404`: Not found — the requested employer, employee, pay cycle, or deduction could not be found, or the authenticated caller is not authorized to see it.
- `429`: Too many requests — rate limit exceeded. Read the limit per operation (most reads are 5/minute, mutations 200/minute) and retry after the indicated delay.
- `500`: Internal server error — an unexpected error occurred. Retry with exponential backoff; if the error persists, contact HiBob support with the `requestId` from the response body.

---

[API](https://skmtc.dev/hibob/apis/retirement-partners-api.md) - [All operations](https://skmtc.dev/hibob/apis/retirement-partners-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hibob/apis/retirement-partners-api/revisions/5ebd2ae67958?raw)
