curl --request PUT \
--url https://sandbox.nmbr.co/services/payroll/form_batches/{form_batch} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"note": "Updated note for the form batch."
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/form_batches/{form_batch}"
payload = { "note": "Updated note for the form batch." }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({note: 'Updated note for the form batch.'})
};
fetch('https://sandbox.nmbr.co/services/payroll/form_batches/{form_batch}', 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/form_batches/{form_batch}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'note' => 'Updated note for the form batch.'
]),
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/form_batches/{form_batch}"
payload := strings.NewReader("{\n \"note\": \"Updated note for the form batch.\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://sandbox.nmbr.co/services/payroll/form_batches/{form_batch}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"note\": \"Updated note for the form batch.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/form_batches/{form_batch}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"note\": \"Updated note for the form batch.\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "form_batch",
"data": {
"owner": {
"id": "<id>",
"object": "business_entity",
"links": {
"self": "/business_entities/<id>"
}
},
"form_type": "t4",
"form_stage": "original",
"effective_date": "2026-01-01",
"status": "draft",
"contact_name": "Prof. Brody Ernser III",
"contact_email": "weber.pierre@example.net",
"contact_area_code": "657",
"contact_phone_number": "3654916",
"contact_extension": null,
"note": "Updated note for the form batch.",
"metadata": {
"counts": {
"total": 0,
"valid": 0,
"invalid": 0,
"draft": 0,
"approved": 0,
"processing": 0,
"submitted": 0,
"done": 0,
"rejected": 0
},
"flags": {
"is_submittable": false
},
"timestamps": {
"submitted_at": null,
"completed_at": null
},
"identifiers": {
"confirmation_number": null
}
},
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/form_batches/<id>"
}
}Update a form batch
curl --request PUT \
--url https://sandbox.nmbr.co/services/payroll/form_batches/{form_batch} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"note": "Updated note for the form batch."
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/form_batches/{form_batch}"
payload = { "note": "Updated note for the form batch." }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({note: 'Updated note for the form batch.'})
};
fetch('https://sandbox.nmbr.co/services/payroll/form_batches/{form_batch}', 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/form_batches/{form_batch}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'note' => 'Updated note for the form batch.'
]),
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/form_batches/{form_batch}"
payload := strings.NewReader("{\n \"note\": \"Updated note for the form batch.\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://sandbox.nmbr.co/services/payroll/form_batches/{form_batch}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"note\": \"Updated note for the form batch.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/form_batches/{form_batch}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"note\": \"Updated note for the form batch.\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "form_batch",
"data": {
"owner": {
"id": "<id>",
"object": "business_entity",
"links": {
"self": "/business_entities/<id>"
}
},
"form_type": "t4",
"form_stage": "original",
"effective_date": "2026-01-01",
"status": "draft",
"contact_name": "Prof. Brody Ernser III",
"contact_email": "weber.pierre@example.net",
"contact_area_code": "657",
"contact_phone_number": "3654916",
"contact_extension": null,
"note": "Updated note for the form batch.",
"metadata": {
"counts": {
"total": 0,
"valid": 0,
"invalid": 0,
"draft": 0,
"approved": 0,
"processing": 0,
"submitted": 0,
"done": 0,
"rejected": 0
},
"flags": {
"is_submittable": false
},
"timestamps": {
"submitted_at": null,
"completed_at": null
},
"identifiers": {
"confirmation_number": null
}
},
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/form_batches/<id>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
Read-only after creation.
The type of Forms in this batch (e.g. T4, RL-1).
Read-only after creation.
The lifecycle stage of the Forms in this batch: original, amendment, or cancellation.
Read-only after creation.
The effective date used to determine the form variant for all Forms in this batch.
Read-only after creation.
The submission status of this batch.
Read-only after creation.
The name of the contact person responsible for this submission.
255The email address of the contact person.
255The 3-digit area code of the contact's phone number.
The 7-digit phone number of the contact.
The optional extension for the contact's phone number.
An optional note for this form batch.
65000Response
OK
The unique identifier of the object in Nmbr.
The type of the object in Nmbr ("form_batch").
Hide child attributes
Hide child attributes
The type of Forms in this batch (e.g. T4, RL-1).
rl1, roe, t4, t4a, td1, td1ab, td1bc, td1mb, td1nb, td1nl, td1ns, td1nt, td1nu, td1on, td1pe, td1sk, td1x, td1yt, tp_1015_3_v, tp_1015_r_13_v 255The lifecycle stage of the Forms in this batch: original, amendment, or cancellation.
amendment, cancellation, original The effective date used to determine the form variant for all Forms in this batch.
The submission status of this batch.
done, draft, processing, submitted The name of the contact person responsible for this submission.
255The email address of the contact person.
255The 3-digit area code of the contact's phone number.
255The 7-digit phone number of the contact.
255The optional extension for the contact's phone number.
255An optional note for this form batch.
Form-type-specific metadata for this batch. Structure varies by form type.
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
The date and time the object was created in Nmbr.
The date and time the object was last updated in Nmbr.

