curl --request POST \
--url https://sandbox.nmbr.co/services/payroll/reports/journal-entry \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"business_entity_id": "<id>",
"payroll_id": "<id>"
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/reports/journal-entry"
payload = {
"business_entity_id": "<id>",
"payroll_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({business_entity_id: '<id>', payroll_id: '<id>'})
};
fetch('https://sandbox.nmbr.co/services/payroll/reports/journal-entry', 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/journal-entry",
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([
'business_entity_id' => '<id>',
'payroll_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/journal-entry"
payload := strings.NewReader("{\n \"business_entity_id\": \"<id>\",\n \"payroll_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/journal-entry")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"business_entity_id\": \"<id>\",\n \"payroll_id\": \"<id>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/reports/journal-entry")
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 \"business_entity_id\": \"<id>\",\n \"payroll_id\": \"<id>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "report",
"data": {
"type": "journal-entry",
"business_entity": {
"id": "<id>",
"object": "business_entity",
"links": {
"self": "/business_entities/<id>"
}
},
"pay_schedule": null,
"payroll": {
"id": "<id>",
"object": "payroll",
"links": {
"self": "/payrolls/<id>"
}
},
"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 journal entry report
When a Journal Entry Report is created, the report content will be created asynchronously. It may then be retrieved asynchronously from the GET endpoint using an “accept: text/csv”, or “accept: application/vnd.ms-excel”, header.
curl --request POST \
--url https://sandbox.nmbr.co/services/payroll/reports/journal-entry \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"business_entity_id": "<id>",
"payroll_id": "<id>"
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/reports/journal-entry"
payload = {
"business_entity_id": "<id>",
"payroll_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({business_entity_id: '<id>', payroll_id: '<id>'})
};
fetch('https://sandbox.nmbr.co/services/payroll/reports/journal-entry', 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/journal-entry",
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([
'business_entity_id' => '<id>',
'payroll_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/journal-entry"
payload := strings.NewReader("{\n \"business_entity_id\": \"<id>\",\n \"payroll_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/journal-entry")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"business_entity_id\": \"<id>\",\n \"payroll_id\": \"<id>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/reports/journal-entry")
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 \"business_entity_id\": \"<id>\",\n \"payroll_id\": \"<id>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "report",
"data": {
"type": "journal-entry",
"business_entity": {
"id": "<id>",
"object": "business_entity",
"links": {
"self": "/business_entities/<id>"
}
},
"pay_schedule": null,
"payroll": {
"id": "<id>",
"object": "payroll",
"links": {
"self": "/payrolls/<id>"
}
},
"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
Sets the output format for /download: csv or xlsx. Required to use /download. When omitted, both are rendered.
csv, xlsx Selects which sheet the CSV output covers: summary or detail. When omitted, a CSV of each is rendered. The Excel workbook always contains both sheets, so this does not narrow it.
detail, summary 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.

