Unified HRIS API

Retrieve all pay runs for all legal entities, across all time.

A pay run represents one payroll cycle for a legal entity, covering a single pay period and grouping the payslips paid out through it. Use this endpoint to reconcile payroll periods and read the totals paid out across each run. Filter by legal_entity_ids to scope the results to specific legal entities.

Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: (id IN ids) AND (remote_id IN remote_ids)

get/hris/pay-runs

Request

Query parameters

cursorstring

An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.

page_sizeinteger

The number of results to return per page. Maximum is 250.

updated_afterstring date-time

Filter the entries based on the modification date in format YYYY-MM-DDTHH:mm:ss.sssZ. Returns records where either the record itself OR its nested data has been updated since this timestamp, even if the record's own changed_at field remains unchanged.

If you want to track entry deletion, also set the include_deleted=true query parameter, because otherwise, deleted entries will be hidden.

For more details, see Understanding changed_at vs updated_after Behavior.

For this endpoint, only changes to the returned record itself are considered.

include_deleted'true' | 'false'

By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.

ignore_unsupported_filters'true' | 'false'

When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.

idsstring

Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.

remote_idsstring

Filter by a comma-separated list of remote IDs.

legal_entity_idsstring

Filter by a comma-separated list of legal entity IDs.

Headers

X-Integration-Idstring required

ID of the integration you want to interact with.

Response

GET /hris/pay-runs Positive response

status'success' required

Example response

{
  "data": {
    "next": "eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=",
    "results": [
      {
        "id": "HdyE3KNfcbNzXFRqwW1Wh2eP",
        "remote_id": "300000092871122",
        "start_date": "2026-01-01",
        "end_date": "2026-01-13",
        "legal_entity_id": "3Y6vdh2SPujGVx8oj4g8hdUu",
        "changed_at": "2026-01-10T12:32:01.000Z",
        "remote_deleted_at": null,
        "remote_data": null,
        "totals": {
          "gross_pay": {
            "currency": "USD",
            "value": 435300
          },
          "net_pay": {
            "currency": "USD",
            "value": 362300
          },
          "paid_amount": {
            "currency": "USD",
            "value": 306300.26
          }
        }
      }
    ]
  }
}

Changes

    • breaking

      the response property /// became nullable for the status

    • breaking

      the response property /// became nullable for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the /// response property's maxLength was unset from 24 for the response status

    • breaking

      the /// response property's minLength was decreased from 24 to 0 for the response status

    • breaking

      the /// response's property type changed from string to string null, and format from date-time to date for status

    • breaking

      the /// response's property type changed from string to string null, and format from date-time to date for status

    • breaking

      the //// response's property type changed from number null to object null, and format from double to no format for status

    • breaking

      the //// response's property type changed from number null to object null, and format from double to no format for status

    • breaking

      the //// response's property type changed from number null to object null, and format from double to no format for status

    • breaking

      removed the required property /// from the response with the status

    • breaking

      removed the required property /// from the response with the status

    • breaking

      removed the required property /// from the response with the status

    • info

      the /// response's property pattern ^\d{4}-\d{2}-\d{2}$ was added for the status

    • info

      the /// response's property pattern ^\d{4}-\d{2}-\d{2}$ was added for the status

    • info

      the /// response's property pattern ^[1-9A-HJ-NP-Za-km-z]+$ was removed for the status

    • info

      added the required property ///// to the response with the status

    • info

      added the required property ///// to the response with the status

    • info

      added the required property ///// to the response with the status

    • info

      added the required property ///// to the response with the status

    • info

      added the required property ///// to the response with the status

    • info

      added the required property ///// to the response with the status

    • info

      endpoint added