curl --request POST \
--url https://sandbox.nmbr.co/services/payroll/adjustments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"correction_pay_stub_id": "<id>",
"source_line_item_id": "<id>",
"expected_amount": 50,
"admin_note": "Admin note"
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/adjustments"
payload = {
"correction_pay_stub_id": "<id>",
"source_line_item_id": "<id>",
"expected_amount": 50,
"admin_note": "Admin note"
}
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({
correction_pay_stub_id: '<id>',
source_line_item_id: '<id>',
expected_amount: 50,
admin_note: 'Admin note'
})
};
fetch('https://sandbox.nmbr.co/services/payroll/adjustments', 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/adjustments",
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([
'correction_pay_stub_id' => '<id>',
'source_line_item_id' => '<id>',
'expected_amount' => 50,
'admin_note' => 'Admin note'
]),
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/adjustments"
payload := strings.NewReader("{\n \"correction_pay_stub_id\": \"<id>\",\n \"source_line_item_id\": \"<id>\",\n \"expected_amount\": 50,\n \"admin_note\": \"Admin note\"\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/adjustments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"correction_pay_stub_id\": \"<id>\",\n \"source_line_item_id\": \"<id>\",\n \"expected_amount\": 50,\n \"admin_note\": \"Admin note\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/adjustments")
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 \"correction_pay_stub_id\": \"<id>\",\n \"source_line_item_id\": \"<id>\",\n \"expected_amount\": 50,\n \"admin_note\": \"Admin note\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "adjustment",
"data": {
"source_line_item": {
"id": "<id>",
"object": "earning_line_item",
"data": {
"pay_stub": {
"id": "<id>",
"object": "pay_stub",
"links": {
"self": "/pay_stubs/<id>"
}
},
"amount": 10000,
"custom_amount": null,
"managed_amount": 10000,
"is_managed": true,
"line_item_type": "earning",
"earning_type": {
"id": "<id>",
"object": "earning_type",
"data": {
"type": "salary",
"label": "Salary",
"supported_payroll_types": {
"regular": true,
"historical": true,
"off_cycle": true,
"correction": true
}
},
"links": {
"self": "/earning_types/salary"
}
},
"hours": 173.33,
"managed_hours": 173.33,
"custom_hours": null,
"accrued_vacation_pay": 0,
"recurrence": {
"id": "<id>",
"object": "pay_rate",
"links": {
"self": "/pay_rates/<id>"
}
},
"pay_rate": {
"id": "<id>",
"object": "pay_rate",
"links": {
"self": "/pay_rates/<id>"
}
},
"overtime_rate": null,
"title": "Salary Rate",
"title_translations": null,
"title_translated": "Salary Rate",
"expense_accounting_code": null,
"managed_expense_accounting_code": null,
"custom_expense_accounting_code": null,
"expense_accounting_code_rule": null,
"liability_accounting_code": null,
"managed_liability_accounting_code": null,
"custom_liability_accounting_code": null,
"liability_accounting_code_rule": null,
"business_preset": null,
"source_adjustment": null,
"component_settings": {
"attributes_locked": false
},
"earned_on": null,
"managed_earned_on": null,
"custom_earned_on": null,
"external_ref": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/earning_line_items/<id>"
}
},
"correction_line_item": {
"id": "<id>",
"object": "earning_line_item",
"data": {
"pay_stub": {
"id": "<id>",
"object": "pay_stub",
"links": {
"self": "/pay_stubs/<id>"
}
},
"amount": -9950,
"custom_amount": null,
"managed_amount": -9950,
"is_managed": false,
"line_item_type": "earning",
"earning_type": {
"id": "<id>",
"object": "earning_type",
"data": {
"type": "salary",
"label": "Salary",
"supported_payroll_types": {
"regular": true,
"historical": true,
"off_cycle": true,
"correction": true
}
},
"links": {
"self": "/earning_types/salary"
}
},
"hours": null,
"managed_hours": null,
"custom_hours": null,
"accrued_vacation_pay": 0,
"recurrence": null,
"pay_rate": null,
"overtime_rate": null,
"title": "Salary Rate Adjustment",
"title_translations": {
"en": "Salary Rate Adjustment",
"fr": "Rajustement Salary Rate"
},
"title_translated": "Salary Rate Adjustment",
"expense_accounting_code": null,
"managed_expense_accounting_code": null,
"custom_expense_accounting_code": null,
"expense_accounting_code_rule": null,
"liability_accounting_code": null,
"managed_liability_accounting_code": null,
"custom_liability_accounting_code": null,
"liability_accounting_code_rule": null,
"business_preset": null,
"source_adjustment": {
"id": "<id>",
"object": "adjustment",
"links": {
"self": "/adjustments/<id>"
}
},
"component_settings": {
"attributes_locked": false
},
"earned_on": null,
"managed_earned_on": null,
"custom_earned_on": null,
"external_ref": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/earning_line_items/<id>"
}
},
"correction_pay_stub": {
"id": "<id>",
"object": "pay_stub",
"links": {
"self": "/pay_stubs/<id>"
}
},
"type": "earning",
"subtype": "salary",
"expected_amount": 50,
"admin_note": "Admin note",
"external_ref": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/adjustments/<id>"
}
}Create an adjustment
curl --request POST \
--url https://sandbox.nmbr.co/services/payroll/adjustments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"correction_pay_stub_id": "<id>",
"source_line_item_id": "<id>",
"expected_amount": 50,
"admin_note": "Admin note"
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/adjustments"
payload = {
"correction_pay_stub_id": "<id>",
"source_line_item_id": "<id>",
"expected_amount": 50,
"admin_note": "Admin note"
}
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({
correction_pay_stub_id: '<id>',
source_line_item_id: '<id>',
expected_amount: 50,
admin_note: 'Admin note'
})
};
fetch('https://sandbox.nmbr.co/services/payroll/adjustments', 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/adjustments",
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([
'correction_pay_stub_id' => '<id>',
'source_line_item_id' => '<id>',
'expected_amount' => 50,
'admin_note' => 'Admin note'
]),
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/adjustments"
payload := strings.NewReader("{\n \"correction_pay_stub_id\": \"<id>\",\n \"source_line_item_id\": \"<id>\",\n \"expected_amount\": 50,\n \"admin_note\": \"Admin note\"\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/adjustments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"correction_pay_stub_id\": \"<id>\",\n \"source_line_item_id\": \"<id>\",\n \"expected_amount\": 50,\n \"admin_note\": \"Admin note\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/adjustments")
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 \"correction_pay_stub_id\": \"<id>\",\n \"source_line_item_id\": \"<id>\",\n \"expected_amount\": 50,\n \"admin_note\": \"Admin note\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "adjustment",
"data": {
"source_line_item": {
"id": "<id>",
"object": "earning_line_item",
"data": {
"pay_stub": {
"id": "<id>",
"object": "pay_stub",
"links": {
"self": "/pay_stubs/<id>"
}
},
"amount": 10000,
"custom_amount": null,
"managed_amount": 10000,
"is_managed": true,
"line_item_type": "earning",
"earning_type": {
"id": "<id>",
"object": "earning_type",
"data": {
"type": "salary",
"label": "Salary",
"supported_payroll_types": {
"regular": true,
"historical": true,
"off_cycle": true,
"correction": true
}
},
"links": {
"self": "/earning_types/salary"
}
},
"hours": 173.33,
"managed_hours": 173.33,
"custom_hours": null,
"accrued_vacation_pay": 0,
"recurrence": {
"id": "<id>",
"object": "pay_rate",
"links": {
"self": "/pay_rates/<id>"
}
},
"pay_rate": {
"id": "<id>",
"object": "pay_rate",
"links": {
"self": "/pay_rates/<id>"
}
},
"overtime_rate": null,
"title": "Salary Rate",
"title_translations": null,
"title_translated": "Salary Rate",
"expense_accounting_code": null,
"managed_expense_accounting_code": null,
"custom_expense_accounting_code": null,
"expense_accounting_code_rule": null,
"liability_accounting_code": null,
"managed_liability_accounting_code": null,
"custom_liability_accounting_code": null,
"liability_accounting_code_rule": null,
"business_preset": null,
"source_adjustment": null,
"component_settings": {
"attributes_locked": false
},
"earned_on": null,
"managed_earned_on": null,
"custom_earned_on": null,
"external_ref": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/earning_line_items/<id>"
}
},
"correction_line_item": {
"id": "<id>",
"object": "earning_line_item",
"data": {
"pay_stub": {
"id": "<id>",
"object": "pay_stub",
"links": {
"self": "/pay_stubs/<id>"
}
},
"amount": -9950,
"custom_amount": null,
"managed_amount": -9950,
"is_managed": false,
"line_item_type": "earning",
"earning_type": {
"id": "<id>",
"object": "earning_type",
"data": {
"type": "salary",
"label": "Salary",
"supported_payroll_types": {
"regular": true,
"historical": true,
"off_cycle": true,
"correction": true
}
},
"links": {
"self": "/earning_types/salary"
}
},
"hours": null,
"managed_hours": null,
"custom_hours": null,
"accrued_vacation_pay": 0,
"recurrence": null,
"pay_rate": null,
"overtime_rate": null,
"title": "Salary Rate Adjustment",
"title_translations": {
"en": "Salary Rate Adjustment",
"fr": "Rajustement Salary Rate"
},
"title_translated": "Salary Rate Adjustment",
"expense_accounting_code": null,
"managed_expense_accounting_code": null,
"custom_expense_accounting_code": null,
"expense_accounting_code_rule": null,
"liability_accounting_code": null,
"managed_liability_accounting_code": null,
"custom_liability_accounting_code": null,
"liability_accounting_code_rule": null,
"business_preset": null,
"source_adjustment": {
"id": "<id>",
"object": "adjustment",
"links": {
"self": "/adjustments/<id>"
}
},
"component_settings": {
"attributes_locked": false
},
"earned_on": null,
"managed_earned_on": null,
"custom_earned_on": null,
"external_ref": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/earning_line_items/<id>"
}
},
"correction_pay_stub": {
"id": "<id>",
"object": "pay_stub",
"links": {
"self": "/pay_stubs/<id>"
}
},
"type": "earning",
"subtype": "salary",
"expected_amount": 50,
"admin_note": "Admin note",
"external_ref": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/adjustments/<id>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Up to 2 decimal places.
-99999 <= x <= 99999Must be a multiple of 0.01Must be present when type and subtype is either empty or not set.
Must be present when source_line_item_id is either empty or not set.
allowance, deduction, earning, employee_benefit, employer_benefit, employer_statutory_withholding, reimbursement, statutory_withholding Must be present when source_line_item_id is either empty or not set.
255Response
Created
The unique identifier of the object in Nmbr.
The type of the object in Nmbr ("adjustment").
Hide child attributes
Hide child attributes
255255A reference to the object in an external system, e.g. the primary key of the object in your application's database. Nmbr doesn't use, validate, parse, or require this value to be unique - it simply stores it for your reference.
255The date and time the object was created in Nmbr.
The date and time the object was last updated in Nmbr.

