curl --request POST \
--url https://sandbox.nmbr.co/services/payroll/bank_accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"business_entity_id": "<id>",
"account_number": "3654916",
"transit_number": "02002",
"institution_number": "320"
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/bank_accounts"
payload = {
"business_entity_id": "<id>",
"account_number": "3654916",
"transit_number": "02002",
"institution_number": "320"
}
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>',
account_number: '3654916',
transit_number: '02002',
institution_number: '320'
})
};
fetch('https://sandbox.nmbr.co/services/payroll/bank_accounts', 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/bank_accounts",
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>',
'account_number' => '3654916',
'transit_number' => '02002',
'institution_number' => '320'
]),
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/bank_accounts"
payload := strings.NewReader("{\n \"business_entity_id\": \"<id>\",\n \"account_number\": \"3654916\",\n \"transit_number\": \"02002\",\n \"institution_number\": \"320\"\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/bank_accounts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"business_entity_id\": \"<id>\",\n \"account_number\": \"3654916\",\n \"transit_number\": \"02002\",\n \"institution_number\": \"320\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/bank_accounts")
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 \"account_number\": \"3654916\",\n \"transit_number\": \"02002\",\n \"institution_number\": \"320\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "bank_account",
"data": {
"business_entity": {
"id": "<id>",
"object": "business_entity",
"links": {
"self": "/business_entities/<id>"
}
},
"institution_number": "320",
"institution_name": "President's Choice Bank",
"institution_name_translations": {
"en": "President's Choice Bank",
"fr": "Banque le Choix du Président"
},
"institution_name_translated": "President's Choice Bank",
"transit_number": "02002",
"transit_address": "600-500 Lakeshore Blvd West POBOX600, Toronto, ON M5V 2V9",
"account_number_last_3": "916",
"is_primary": true,
"is_deletable": true,
"warnings": {
"object": "list",
"data": []
},
"is_pad_signed": false,
"pad_signer_name": null,
"pad_signer_email": null,
"pad_signer_title": null,
"pad_signed_at": null,
"pad_file": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/bank_accounts/<id>"
}
}Create a bank account
curl --request POST \
--url https://sandbox.nmbr.co/services/payroll/bank_accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"business_entity_id": "<id>",
"account_number": "3654916",
"transit_number": "02002",
"institution_number": "320"
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/bank_accounts"
payload = {
"business_entity_id": "<id>",
"account_number": "3654916",
"transit_number": "02002",
"institution_number": "320"
}
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>',
account_number: '3654916',
transit_number: '02002',
institution_number: '320'
})
};
fetch('https://sandbox.nmbr.co/services/payroll/bank_accounts', 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/bank_accounts",
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>',
'account_number' => '3654916',
'transit_number' => '02002',
'institution_number' => '320'
]),
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/bank_accounts"
payload := strings.NewReader("{\n \"business_entity_id\": \"<id>\",\n \"account_number\": \"3654916\",\n \"transit_number\": \"02002\",\n \"institution_number\": \"320\"\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/bank_accounts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"business_entity_id\": \"<id>\",\n \"account_number\": \"3654916\",\n \"transit_number\": \"02002\",\n \"institution_number\": \"320\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/bank_accounts")
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 \"account_number\": \"3654916\",\n \"transit_number\": \"02002\",\n \"institution_number\": \"320\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "bank_account",
"data": {
"business_entity": {
"id": "<id>",
"object": "business_entity",
"links": {
"self": "/business_entities/<id>"
}
},
"institution_number": "320",
"institution_name": "President's Choice Bank",
"institution_name_translations": {
"en": "President's Choice Bank",
"fr": "Banque le Choix du Président"
},
"institution_name_translated": "President's Choice Bank",
"transit_number": "02002",
"transit_address": "600-500 Lakeshore Blvd West POBOX600, Toronto, ON M5V 2V9",
"account_number_last_3": "916",
"is_primary": true,
"is_deletable": true,
"warnings": {
"object": "list",
"data": []
},
"is_pad_signed": false,
"pad_signer_name": null,
"pad_signer_email": null,
"pad_signer_title": null,
"pad_signed_at": null,
"pad_file": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/bank_accounts/<id>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
The 5-digit bank transit number.
The 3-digit bank institution number.
Must be present when contractor_id and business_entity_id is either empty or not set.
Must be present when employee_id and business_entity_id is either empty or not set.
Must be present when employee_id and contractor_id is either empty or not set.
Whether this is the primary bank account for its owner.
Indicates that this bank account is the primary bank account. Optional. Cannot be set to false is there is no other bank account for the same employee, contractor or business entity.
The name of the person who signed the PAD agreement. Only applicable to Business Entity bank accounts.
The email address of the PAD agreement signer. Only applicable to Business Entity bank accounts.
The title or role of the PAD agreement signer. Only applicable to Business Entity bank accounts.
The date and time the PAD agreement was signed. Only applicable to Business Entity bank accounts.
Response
Created
The unique identifier of the object in Nmbr.
The type of the object in Nmbr ("bank_account").
Hide child attributes
Hide child attributes
The 3-digit bank institution number.
The name of the banking institution matching the institution number, or null if the number is not recognized. Always the English name; see institution_name_translated for the value in the request's locale.
The translation of the institution_name property for the request locale. Computed using the values in institution_name and institution_name_translations and the value of the request's Accept-Language header.
The 5-digit bank transit number.
The address of the branch matching the institution and transit numbers, or null if the pair is not recognized.
The last 3 digits of the bank account number.
Whether this is the primary bank account for its owner.
Whether this bank account can be deleted.
Whether a PAD agreement has been signed. Only present for Business Entity bank accounts.
The name of the person who signed the PAD agreement. Only applicable to Business Entity bank accounts.
255The email address of the PAD agreement signer. Only applicable to Business Entity bank accounts.
255The title or role of the PAD agreement signer. Only applicable to Business Entity bank accounts.
255The date and time the PAD agreement was signed. Only applicable to Business Entity bank accounts.
The signed PAD agreement file. Only present for Business Entity bank accounts.
The date and time the object was created in Nmbr.
The date and time the object was last updated in Nmbr.

