curl --request POST \
--url https://sandbox.nmbr.co/services/payroll/reports/vacation-accrual \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"pay_schedule_id": "<id>"
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/reports/vacation-accrual"
payload = { "pay_schedule_id": "<id>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({pay_schedule_id: '<id>'})
};
fetch('https://sandbox.nmbr.co/services/payroll/reports/vacation-accrual', 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://sandbox.nmbr.co/services/payroll/reports/vacation-accrual",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'pay_schedule_id' => '<id>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.nmbr.co/services/payroll/reports/vacation-accrual"
payload := strings.NewReader("{\n \"pay_schedule_id\": \"<id>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.nmbr.co/services/payroll/reports/vacation-accrual")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"pay_schedule_id\": \"<id>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/reports/vacation-accrual")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"pay_schedule_id\": \"<id>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "report",
"data": {
"type": "vacation-accrual",
"business_entity": null,
"pay_schedule": {
"id": "<id>",
"object": "pay_schedule",
"links": {
"self": "/pay_schedules/<id>"
}
},
"payroll": null,
"filters": {
"payroll_type": [
"regular",
"off_cycle",
"historical",
"correction"
],
"payroll_status": [
"paid"
],
"pay_date_from": null,
"pay_date_to": null,
"year": null
},
"has_results": false,
"format": null,
"sheet": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/reports/<id>"
}
}Create vacation accrual report
When a Vacation Accrual Report is created, the report content will be created asynchronously. It may then be retrieved from the GET endpoint using an “accept: text/csv” header.
To filter which payrolls should be included in the report, you may pass a filters object here, which may contain: pay_date_from: Limits payrolls to only from this pay-date and after. pay_date_to: Limits payrolls to only from this pay-date and before.
curl --request POST \
--url https://sandbox.nmbr.co/services/payroll/reports/vacation-accrual \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"pay_schedule_id": "<id>"
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/reports/vacation-accrual"
payload = { "pay_schedule_id": "<id>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({pay_schedule_id: '<id>'})
};
fetch('https://sandbox.nmbr.co/services/payroll/reports/vacation-accrual', 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://sandbox.nmbr.co/services/payroll/reports/vacation-accrual",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'pay_schedule_id' => '<id>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.nmbr.co/services/payroll/reports/vacation-accrual"
payload := strings.NewReader("{\n \"pay_schedule_id\": \"<id>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.nmbr.co/services/payroll/reports/vacation-accrual")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"pay_schedule_id\": \"<id>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/reports/vacation-accrual")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"pay_schedule_id\": \"<id>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "report",
"data": {
"type": "vacation-accrual",
"business_entity": null,
"pay_schedule": {
"id": "<id>",
"object": "pay_schedule",
"links": {
"self": "/pay_schedules/<id>"
}
},
"payroll": null,
"filters": {
"payroll_type": [
"regular",
"off_cycle",
"historical",
"correction"
],
"payroll_status": [
"paid"
],
"pay_date_from": null,
"pay_date_to": null,
"year": null
},
"has_results": false,
"format": null,
"sheet": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/reports/<id>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
One of business_entity_id, pay_schedule_id or payroll_id must be set.
Must be present when payroll_id is either empty or not set.
One of business_entity_id, pay_schedule_id or payroll_id must be set.
Must be present when pay_schedule_id is either empty or not set.
Response
Created
The unique identifier of the object in Nmbr.
The type of the object in Nmbr ("report").
Hide child attributes
Hide child attributes
cra-remittance, ei-cpp-balance, ei-qpp-qpip-balance, employer-health-tax, journal-entry, journal-entry-line-item, liability, payroll-register, rl1-preview, rq-remittance, t4-preview, vacation-accrual, workers-compensation, year-end-forms, year-to-date The output format set at creation for /download. One of csv or xlsx. null when no format was specified — required to use /download.
csv, pdf, xlsx 255The sheet selected at creation for multi-sheet reports (e.g. summary or detail for Payroll Register). null when the report has a single sheet or no sheet was specified.
255The date and time the object was created in Nmbr.
The date and time the object was last updated in Nmbr.

