Unified HRIS API

Pay Runs

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

Query parameters

cursorstring

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

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.

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.

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.

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.

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.

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

remote_idsstring

Filter by a comma-separated list of remote IDs.

Filter by a comma-separated list of remote IDs.

legal_entity_idsstring

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

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

Changed in 1 of the 14 revisions of this API.159

  • 7fa930b39366159See the full diff
    • the response property data/results/items/end_date became nullable for the status 200

      response-property-became-nullable

    • the response property data/results/items/start_date became nullable for the status 200

      response-property-became-nullable

    • the response property data/results/items/totals/gross_pay became optional for the status 200

      response-property-became-optional

    • the response property data/results/items/totals/net_pay became optional for the status 200

      response-property-became-optional

    • the response property data/results/items/totals/paid_amount became optional for the status 200

      response-property-became-optional

    • the data/results/items/legal_entity_id response property's maxLength was unset from 24 for the response status 200

      response-property-max-length-unset

    • the data/results/items/legal_entity_id response property's minLength was decreased from 24 to 0 for the response status 200

      response-property-min-length-decreased

    • the data/results/items/end_date response's property type/format changed from string/date-time to string null/date for status 200

      response-property-type-changed

    • the data/results/items/start_date response's property type/format changed from string/date-time to string null/date for status 200

      response-property-type-changed

    • the data/results/items/totals/gross_pay response's property type/format changed from number null/double to object null/ for status 200

      response-property-type-changed

    • the data/results/items/totals/net_pay response's property type/format changed from number null/double to object null/ for status 200

      response-property-type-changed

    • the data/results/items/totals/paid_amount response's property type/format changed from number null/double to object null/ for status 200

      response-property-type-changed

    • removed the required property data/results/items/currency from the response with the 200 status

      response-required-property-removed

    • removed the required property data/results/items/pay_date from the response with the 200 status

      response-required-property-removed

    • removed the required property data/results/items/status from the response with the 200 status

      response-required-property-removed

    • the data/results/items/end_date response's property pattern ^\d{4}-\d{2}-\d{2}$ was added for the status 200

      response-property-pattern-added

    • the data/results/items/start_date response's property pattern ^\d{4}-\d{2}-\d{2}$ was added for the status 200

      response-property-pattern-added

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

      response-property-pattern-removed

    • added the required property data/results/items/totals/gross_pay/currency to the response with the 200 status

      response-required-property-added

    • added the required property data/results/items/totals/gross_pay/value to the response with the 200 status

      response-required-property-added

    • added the required property data/results/items/totals/net_pay/currency to the response with the 200 status

      response-required-property-added

    • added the required property data/results/items/totals/net_pay/value to the response with the 200 status

      response-required-property-added

    • added the required property data/results/items/totals/paid_amount/currency to the response with the 200 status

      response-required-property-added

    • added the required property data/results/items/totals/paid_amount/value to the response with the 200 status

      response-required-property-added

    This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog