Unified HRIS API

Retrieve all payslips for all employees, across all time.

A payslip is the individual pay statement an employee receives for one pay run, detailing what they were paid. Each payslip embeds the employee it belongs to and the pay_run it was paid out through, its totals, and the line_items that make it up (earnings, deductions, and contributions). Filter by employee_ids, payrun_ids, or legal_entity_ids to narrow the results.

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/payslips

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, updated_after matches when the returned record changed, or when related data changed as described below.

PathAdded/RemovedLinked Record
employee✗ No✗ No
pay_run✗ No✗ No
line_items✓ Yes✓ Yes
line_items → salary_type✗ No✗ No

Added/Removed: Whether adding or removing entries from this list triggers an update (n/a for single records). Linked Record: Whether changes to the linked record itself trigger an update.

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.

employee_idsstring

Filter by a comma-separated list of employee IDs.

payrun_idsstring

Filter by a comma-separated list of payrun IDs.

Headers

X-Integration-Idstring required

ID of the integration you want to interact with.

Response

GET /hris/payslips Positive response

status'success' required

Example response

{
  "data": {
    "next": "eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=",
    "results": [
      {
        "id": "E4q8YceHEtPWeGwBAEcd9xPs",
        "remote_id": "300000331094861",
        "custom_fields": {},
        "integration_fields": [],
        "changed_at": "2026-01-10T12:32:01.000Z",
        "remote_deleted_at": null,
        "remote_data": null,
        "totals": {
          "gross_pay": {
            "currency": "USD",
            "value": 2207.75
          },
          "net_pay": {
            "currency": "USD",
            "value": 1730.35
          },
          "paid_amount": {
            "currency": "USD",
            "value": 1730.35
          },
          "gross_pay_ytd": {
            "currency": "USD",
            "value": 4415.5
          },
          "net_pay_ytd": {
            "currency": "USD",
            "value": 3460.7
          },
          "paid_amount_ytd": {
            "currency": "USD",
            "value": 3460.7
          }
        },
        "employee": {
          "id": "26vafvWSRmbhNcxJYqjCzuJg",
          "remote_id": "32",
          "first_name": "John",
          "last_name": "Doe",
          "display_full_name": "John Doe",
          "work_email": "john.doe@acme.com",
          "remote_deleted_at": null
        },
        "pay_run": {
          "id": "HdyE3KNfcbNzXFRqwW1Wh2eP",
          "remote_id": "300000092871122",
          "start_date": "2026-01-01",
          "end_date": "2026-01-13",
          "legal_entity_id": "3Y6vdh2SPujGVx8oj4g8hdUu"
        },
        "line_items": [
          {
            "id": "8TMenmF8QVyP1EqagstHhsPG",
            "remote_id": "300000331094861:REGULAR_SALARY",
            "name": "Regular Salary",
            "pay_code": {
              "remote_id": "200",
              "remote_label": "Regular Salary"
            },
            "amount": {
              "currency": "USD",
              "value": 2207.75
            },
            "amount_ytd": {
              "currency": "USD",
              "value": 4415.5
            },
            "custom_fields": {},
            "integration_fields": []
          },
          {
            "id": "CELfyfzuHs6Dz1MDPdoSCY3U",
            "remote_id": "300000331094861:FIT_WITHHELD",
            "name": "FIT Withheld",
            "pay_code": {
              "remote_id": "FIT",
              "remote_label": "FIT Withheld"
            },
            "amount": {
              "currency": "USD",
              "value": 235.94
            },
            "amount_ytd": {
              "currency": "USD",
              "value": 471.88
            },
            "custom_fields": {},
            "integration_fields": []
          },
          {
            "id": "H1gPqyuZTK3y75NRxe4QZ3u7",
            "remote_id": "300000331094861:SOCIAL_SECURITY_EMPLOYEE_WITHHELD",
            "name": "Social Security Employee Withheld",
            "pay_code": {
              "remote_id": "SOCSEC",
              "remote_label": "Social Security Employee Withheld"
            },
            "amount": {
              "currency": "USD",
              "value": 136.88
            },
            "amount_ytd": {
              "currency": "USD",
              "value": 273.76
            },
            "custom_fields": {},
            "integration_fields": []
          },
          {
            "id": "HEnJXik92Qqph5SX4NtK6NRM",
            "remote_id": "300000331094861:MEDICARE_EMPLOYEE_WITHHELD",
            "name": "Medicare Employee Withheld",
            "pay_code": {
              "remote_id": "MEDICARE",
              "remote_label": "Medicare Employee Withheld"
            },
            "amount": {
              "currency": "USD",
              "value": 32.01
            },
            "amount_ytd": {
              "currency": "USD",
              "value": 64.02
            },
            "custom_fields": {},
            "integration_fields": []
          },
          {
            "id": "Ho16emGY5zVYeEc2nN9CWeKv",
            "remote_id": "300000331094861:SIT_WITHHELD_CA",
            "name": "SIT Withheld (CA)",
            "pay_code": {
              "remote_id": "SIT_CA",
              "remote_label": "SIT Withheld (CA)"
            },
            "amount": {
              "currency": "USD",
              "value": 71.47
            },
            "amount_ytd": {
              "currency": "USD",
              "value": 142.94
            },
            "custom_fields": {},
            "integration_fields": []
          },
          {
            "id": "9D24qXFEp1pSQ2Y3jaRFSTBQ",
            "remote_id": "300000331094861:VPDI_EMPLOYEE_WITHHELD_CA",
            "name": "VPDI Employee Withheld (CA)",
            "pay_code": {
              "remote_id": "VPDI_CA",
              "remote_label": "VPDI Employee Withheld (CA)"
            },
            "amount": {
              "currency": "USD",
              "value": 1.1
            },
            "amount_ytd": {
              "currency": "USD",
              "value": 2.2
            },
            "custom_fields": {},
            "integration_fields": []
          }
        ]
      }
    ]
  }
}

Changes

    • info

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

    • info

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

    • info

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

    • info

      added the optional 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

    • breaking

      the response property ///// became nullable for the status

    • breaking

      the response property ///// became nullable for the status

    • breaking

      the response property /// became nullable for the status

    • 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 //// 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 number to object null, and format from double to no format 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 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

    • warning

      deleted the query request parameter cost_center_ids

    • 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

      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