curl --request GET \
--url https://api.kombo.dev/v1/hris/payslips \
--header 'Authorization: Bearer <token>' \
--header 'X-Integration-Id: <x-integration-id>'import requests
url = "https://api.kombo.dev/v1/hris/payslips"
headers = {
"X-Integration-Id": "<x-integration-id>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Integration-Id': '<x-integration-id>', Authorization: 'Bearer <token>'}
};
fetch('https://api.kombo.dev/v1/hris/payslips', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kombo.dev/v1/hris/payslips",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"X-Integration-Id: <x-integration-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kombo.dev/v1/hris/payslips"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Integration-Id", "<x-integration-id>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.kombo.dev/v1/hris/payslips")
.header("X-Integration-Id", "<x-integration-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kombo.dev/v1/hris/payslips")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Integration-Id"] = '<x-integration-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"next": "eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=",
"results": [
{
"id": "E4q8YceHEtPWeGwBAEcd9xPs",
"remote_id": "300000331094861",
"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
}
},
"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",
"amount": {
"currency": "USD",
"value": 2207.75
}
},
{
"id": "CELfyfzuHs6Dz1MDPdoSCY3U",
"remote_id": "300000331094861:FIT_WITHHELD",
"name": "FIT Withheld",
"amount": {
"currency": "USD",
"value": 235.94
}
},
{
"id": "H1gPqyuZTK3y75NRxe4QZ3u7",
"remote_id": "300000331094861:SOCIAL_SECURITY_EMPLOYEE_WITHHELD",
"name": "Social Security Employee Withheld",
"amount": {
"currency": "USD",
"value": 136.88
}
},
{
"id": "HEnJXik92Qqph5SX4NtK6NRM",
"remote_id": "300000331094861:MEDICARE_EMPLOYEE_WITHHELD",
"name": "Medicare Employee Withheld",
"amount": {
"currency": "USD",
"value": 32.01
}
},
{
"id": "Ho16emGY5zVYeEc2nN9CWeKv",
"remote_id": "300000331094861:SIT_WITHHELD_CA",
"name": "SIT Withheld (CA)",
"amount": {
"currency": "USD",
"value": 71.47
}
},
{
"id": "9D24qXFEp1pSQ2Y3jaRFSTBQ",
"remote_id": "300000331094861:VPDI_EMPLOYEE_WITHHELD_CA",
"name": "VPDI Employee Withheld (CA)",
"amount": {
"currency": "USD",
"value": 1.1
}
}
]
}
]
}
}Payslips
Retrieve all payslips for all employees, across all time.
curl --request GET \
--url https://api.kombo.dev/v1/hris/payslips \
--header 'Authorization: Bearer <token>' \
--header 'X-Integration-Id: <x-integration-id>'import requests
url = "https://api.kombo.dev/v1/hris/payslips"
headers = {
"X-Integration-Id": "<x-integration-id>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Integration-Id': '<x-integration-id>', Authorization: 'Bearer <token>'}
};
fetch('https://api.kombo.dev/v1/hris/payslips', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kombo.dev/v1/hris/payslips",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"X-Integration-Id: <x-integration-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kombo.dev/v1/hris/payslips"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Integration-Id", "<x-integration-id>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.kombo.dev/v1/hris/payslips")
.header("X-Integration-Id", "<x-integration-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kombo.dev/v1/hris/payslips")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Integration-Id"] = '<x-integration-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"next": "eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=",
"results": [
{
"id": "E4q8YceHEtPWeGwBAEcd9xPs",
"remote_id": "300000331094861",
"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
}
},
"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",
"amount": {
"currency": "USD",
"value": 2207.75
}
},
{
"id": "CELfyfzuHs6Dz1MDPdoSCY3U",
"remote_id": "300000331094861:FIT_WITHHELD",
"name": "FIT Withheld",
"amount": {
"currency": "USD",
"value": 235.94
}
},
{
"id": "H1gPqyuZTK3y75NRxe4QZ3u7",
"remote_id": "300000331094861:SOCIAL_SECURITY_EMPLOYEE_WITHHELD",
"name": "Social Security Employee Withheld",
"amount": {
"currency": "USD",
"value": 136.88
}
},
{
"id": "HEnJXik92Qqph5SX4NtK6NRM",
"remote_id": "300000331094861:MEDICARE_EMPLOYEE_WITHHELD",
"name": "Medicare Employee Withheld",
"amount": {
"currency": "USD",
"value": 32.01
}
},
{
"id": "Ho16emGY5zVYeEc2nN9CWeKv",
"remote_id": "300000331094861:SIT_WITHHELD_CA",
"name": "SIT Withheld (CA)",
"amount": {
"currency": "USD",
"value": 71.47
}
},
{
"id": "9D24qXFEp1pSQ2Y3jaRFSTBQ",
"remote_id": "300000331094861:VPDI_EMPLOYEE_WITHHELD_CA",
"name": "VPDI Employee Withheld (CA)",
"amount": {
"currency": "USD",
"value": 1.1
}
}
]
}
]
}
}Supported integrations
Supported integrations
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)Authorizations
Headers
ID of the integration you want to interact with.
Query Parameters
An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.
The number of results to return per page. Maximum is 250.
1 <= x <= 250Filter 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.
| Path | Added/Removed | Linked 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.
^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.
true, false When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
true, false Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.
Filter by a comma-separated list of remote IDs.
Filter by a comma-separated list of legal entity IDs.
Filter by a comma-separated list of employee IDs.
Filter by a comma-separated list of payrun IDs.
Response
GET /hris/payslips Positive response
"success"Show child attributes
Show child attributes
{
"next": "eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=",
"results": [
{
"id": "E4q8YceHEtPWeGwBAEcd9xPs",
"remote_id": "300000331094861",
"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 }
},
"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",
"amount": { "currency": "USD", "value": 2207.75 }
},
{
"id": "CELfyfzuHs6Dz1MDPdoSCY3U",
"remote_id": "300000331094861:FIT_WITHHELD",
"name": "FIT Withheld",
"amount": { "currency": "USD", "value": 235.94 }
},
{
"id": "H1gPqyuZTK3y75NRxe4QZ3u7",
"remote_id": "300000331094861:SOCIAL_SECURITY_EMPLOYEE_WITHHELD",
"name": "Social Security Employee Withheld",
"amount": { "currency": "USD", "value": 136.88 }
},
{
"id": "HEnJXik92Qqph5SX4NtK6NRM",
"remote_id": "300000331094861:MEDICARE_EMPLOYEE_WITHHELD",
"name": "Medicare Employee Withheld",
"amount": { "currency": "USD", "value": 32.01 }
},
{
"id": "Ho16emGY5zVYeEc2nN9CWeKv",
"remote_id": "300000331094861:SIT_WITHHELD_CA",
"name": "SIT Withheld (CA)",
"amount": { "currency": "USD", "value": 71.47 }
},
{
"id": "9D24qXFEp1pSQ2Y3jaRFSTBQ",
"remote_id": "300000331094861:VPDI_EMPLOYEE_WITHHELD_CA",
"name": "VPDI Employee Withheld (CA)",
"amount": { "currency": "USD", "value": 1.1 }
}
]
}
]
}
Was this page helpful?