curl --request POST \
--url https://sandbox.nmbr.co/services/payroll/accounting_code_rules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"business_entity_id": "<id>",
"type": "earning",
"subtype": "wage",
"expense_accounting_code_id": "<id>",
"liability_accounting_code_id": "<id>",
"expense_accounting_code_template": {
"segments": [
{
"type": "accounting_code",
"id": "<id>",
"prefix": "GL-"
},
{
"type": "tag_group",
"tag_group_id": "<id>",
"prefix": "-",
"transform": [
"uppercase"
],
"fallback": "0000"
}
]
}
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/accounting_code_rules"
payload = {
"business_entity_id": "<id>",
"type": "earning",
"subtype": "wage",
"expense_accounting_code_id": "<id>",
"liability_accounting_code_id": "<id>",
"expense_accounting_code_template": { "segments": [
{
"type": "accounting_code",
"id": "<id>",
"prefix": "GL-"
},
{
"type": "tag_group",
"tag_group_id": "<id>",
"prefix": "-",
"transform": ["uppercase"],
"fallback": "0000"
}
] }
}
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>',
type: 'earning',
subtype: 'wage',
expense_accounting_code_id: '<id>',
liability_accounting_code_id: '<id>',
expense_accounting_code_template: {
segments: [
{type: 'accounting_code', id: '<id>', prefix: 'GL-'},
{
type: 'tag_group',
tag_group_id: '<id>',
prefix: '-',
transform: ['uppercase'],
fallback: '0000'
}
]
}
})
};
fetch('https://sandbox.nmbr.co/services/payroll/accounting_code_rules', 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/accounting_code_rules",
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>',
'type' => 'earning',
'subtype' => 'wage',
'expense_accounting_code_id' => '<id>',
'liability_accounting_code_id' => '<id>',
'expense_accounting_code_template' => [
'segments' => [
[
'type' => 'accounting_code',
'id' => '<id>',
'prefix' => 'GL-'
],
[
'type' => 'tag_group',
'tag_group_id' => '<id>',
'prefix' => '-',
'transform' => [
'uppercase'
],
'fallback' => '0000'
]
]
]
]),
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/accounting_code_rules"
payload := strings.NewReader("{\n \"business_entity_id\": \"<id>\",\n \"type\": \"earning\",\n \"subtype\": \"wage\",\n \"expense_accounting_code_id\": \"<id>\",\n \"liability_accounting_code_id\": \"<id>\",\n \"expense_accounting_code_template\": {\n \"segments\": [\n {\n \"type\": \"accounting_code\",\n \"id\": \"<id>\",\n \"prefix\": \"GL-\"\n },\n {\n \"type\": \"tag_group\",\n \"tag_group_id\": \"<id>\",\n \"prefix\": \"-\",\n \"transform\": [\n \"uppercase\"\n ],\n \"fallback\": \"0000\"\n }\n ]\n }\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/accounting_code_rules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"business_entity_id\": \"<id>\",\n \"type\": \"earning\",\n \"subtype\": \"wage\",\n \"expense_accounting_code_id\": \"<id>\",\n \"liability_accounting_code_id\": \"<id>\",\n \"expense_accounting_code_template\": {\n \"segments\": [\n {\n \"type\": \"accounting_code\",\n \"id\": \"<id>\",\n \"prefix\": \"GL-\"\n },\n {\n \"type\": \"tag_group\",\n \"tag_group_id\": \"<id>\",\n \"prefix\": \"-\",\n \"transform\": [\n \"uppercase\"\n ],\n \"fallback\": \"0000\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/accounting_code_rules")
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 \"type\": \"earning\",\n \"subtype\": \"wage\",\n \"expense_accounting_code_id\": \"<id>\",\n \"liability_accounting_code_id\": \"<id>\",\n \"expense_accounting_code_template\": {\n \"segments\": [\n {\n \"type\": \"accounting_code\",\n \"id\": \"<id>\",\n \"prefix\": \"GL-\"\n },\n {\n \"type\": \"tag_group\",\n \"tag_group_id\": \"<id>\",\n \"prefix\": \"-\",\n \"transform\": [\n \"uppercase\"\n ],\n \"fallback\": \"0000\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "accounting_code_rule",
"data": {
"business_entity": {
"id": "<id>",
"object": "business_entity",
"links": {
"self": "/business_entities/<id>"
}
},
"tag_group": null,
"tag": null,
"type": "earning",
"subtype": "wage",
"business_preset": null,
"expense_accounting_code": {
"id": "<id>",
"object": "accounting_code",
"links": {
"self": "/accounting_codes/<id>"
}
},
"liability_accounting_code": {
"id": "<id>",
"object": "accounting_code",
"links": {
"self": "/accounting_codes/<id>"
}
},
"expense_accounting_code_template": {
"segments": [
{
"type": "accounting_code",
"id": "<id>",
"prefix": "GL-"
},
{
"type": "tag_group",
"tag_group_id": "<id>",
"prefix": "-",
"transform": [
"uppercase"
],
"fallback": "0000"
}
]
},
"liability_accounting_code_template": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/accounting_code_rules/<id>"
}
}Create an accounting code rule
curl --request POST \
--url https://sandbox.nmbr.co/services/payroll/accounting_code_rules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"business_entity_id": "<id>",
"type": "earning",
"subtype": "wage",
"expense_accounting_code_id": "<id>",
"liability_accounting_code_id": "<id>",
"expense_accounting_code_template": {
"segments": [
{
"type": "accounting_code",
"id": "<id>",
"prefix": "GL-"
},
{
"type": "tag_group",
"tag_group_id": "<id>",
"prefix": "-",
"transform": [
"uppercase"
],
"fallback": "0000"
}
]
}
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/accounting_code_rules"
payload = {
"business_entity_id": "<id>",
"type": "earning",
"subtype": "wage",
"expense_accounting_code_id": "<id>",
"liability_accounting_code_id": "<id>",
"expense_accounting_code_template": { "segments": [
{
"type": "accounting_code",
"id": "<id>",
"prefix": "GL-"
},
{
"type": "tag_group",
"tag_group_id": "<id>",
"prefix": "-",
"transform": ["uppercase"],
"fallback": "0000"
}
] }
}
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>',
type: 'earning',
subtype: 'wage',
expense_accounting_code_id: '<id>',
liability_accounting_code_id: '<id>',
expense_accounting_code_template: {
segments: [
{type: 'accounting_code', id: '<id>', prefix: 'GL-'},
{
type: 'tag_group',
tag_group_id: '<id>',
prefix: '-',
transform: ['uppercase'],
fallback: '0000'
}
]
}
})
};
fetch('https://sandbox.nmbr.co/services/payroll/accounting_code_rules', 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/accounting_code_rules",
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>',
'type' => 'earning',
'subtype' => 'wage',
'expense_accounting_code_id' => '<id>',
'liability_accounting_code_id' => '<id>',
'expense_accounting_code_template' => [
'segments' => [
[
'type' => 'accounting_code',
'id' => '<id>',
'prefix' => 'GL-'
],
[
'type' => 'tag_group',
'tag_group_id' => '<id>',
'prefix' => '-',
'transform' => [
'uppercase'
],
'fallback' => '0000'
]
]
]
]),
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/accounting_code_rules"
payload := strings.NewReader("{\n \"business_entity_id\": \"<id>\",\n \"type\": \"earning\",\n \"subtype\": \"wage\",\n \"expense_accounting_code_id\": \"<id>\",\n \"liability_accounting_code_id\": \"<id>\",\n \"expense_accounting_code_template\": {\n \"segments\": [\n {\n \"type\": \"accounting_code\",\n \"id\": \"<id>\",\n \"prefix\": \"GL-\"\n },\n {\n \"type\": \"tag_group\",\n \"tag_group_id\": \"<id>\",\n \"prefix\": \"-\",\n \"transform\": [\n \"uppercase\"\n ],\n \"fallback\": \"0000\"\n }\n ]\n }\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/accounting_code_rules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"business_entity_id\": \"<id>\",\n \"type\": \"earning\",\n \"subtype\": \"wage\",\n \"expense_accounting_code_id\": \"<id>\",\n \"liability_accounting_code_id\": \"<id>\",\n \"expense_accounting_code_template\": {\n \"segments\": [\n {\n \"type\": \"accounting_code\",\n \"id\": \"<id>\",\n \"prefix\": \"GL-\"\n },\n {\n \"type\": \"tag_group\",\n \"tag_group_id\": \"<id>\",\n \"prefix\": \"-\",\n \"transform\": [\n \"uppercase\"\n ],\n \"fallback\": \"0000\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/accounting_code_rules")
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 \"type\": \"earning\",\n \"subtype\": \"wage\",\n \"expense_accounting_code_id\": \"<id>\",\n \"liability_accounting_code_id\": \"<id>\",\n \"expense_accounting_code_template\": {\n \"segments\": [\n {\n \"type\": \"accounting_code\",\n \"id\": \"<id>\",\n \"prefix\": \"GL-\"\n },\n {\n \"type\": \"tag_group\",\n \"tag_group_id\": \"<id>\",\n \"prefix\": \"-\",\n \"transform\": [\n \"uppercase\"\n ],\n \"fallback\": \"0000\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "accounting_code_rule",
"data": {
"business_entity": {
"id": "<id>",
"object": "business_entity",
"links": {
"self": "/business_entities/<id>"
}
},
"tag_group": null,
"tag": null,
"type": "earning",
"subtype": "wage",
"business_preset": null,
"expense_accounting_code": {
"id": "<id>",
"object": "accounting_code",
"links": {
"self": "/accounting_codes/<id>"
}
},
"liability_accounting_code": {
"id": "<id>",
"object": "accounting_code",
"links": {
"self": "/accounting_codes/<id>"
}
},
"expense_accounting_code_template": {
"segments": [
{
"type": "accounting_code",
"id": "<id>",
"prefix": "GL-"
},
{
"type": "tag_group",
"tag_group_id": "<id>",
"prefix": "-",
"transform": [
"uppercase"
],
"fallback": "0000"
}
]
},
"liability_accounting_code_template": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/accounting_code_rules/<id>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
A tag group to scope this rule to. When set without tag_id, creates a tag-group-level rule that applies to all tags in the group.
A tag from the business entity's accounting code tag group. Optional — when omitted, the rule matches line items by type/subtype or business_preset_id alone.
The line item type to scope this rule to (e.g. earning, deduction). Mutually exclusive with business_preset_id.
allowance, deduction, earning, employee_benefit, employer_benefit, employer_statutory_withholding, reimbursement, statutory_withholding The line item subtype to further scope this rule (e.g. wage, salary). Requires type to be set.
A business preset to scope this rule to. Provides the highest specificity match. Mutually exclusive with type and subtype.
When both tag_id and tag_group_id are omitted, either type or business_preset_id must be set.
Assembles a formatted accounting code for the journal entry report: each segment resolves to a value, is wrapped and transformed, and the results are concatenated in order. Only valid on rules with no tag and no tag group; null when unset.
Hide child attributes
Hide child attributes
Ordered segments concatenated into the generated code.
1 - 20 elementsEmits the referenced accounting code's code.
- Fixed accounting code
- Tag group code
Hide child attributes
Hide child attributes
accounting_code Id of an accounting code in this business entity.
Literal text prepended to the resolved value.
255Literal text appended to the resolved value.
255Transforms applied to the resolved value in the order listed.
alphanumeric, lowercase, uppercase Truncates the resolved value to this many characters.
x >= 1Substituted when the resolved value is empty. When absent or empty, an empty segment is dropped instead — prefix and suffix included.
255Assembles a formatted accounting code for the journal entry report: each segment resolves to a value, is wrapped and transformed, and the results are concatenated in order. Only valid on rules with no tag and no tag group; null when unset.
Hide child attributes
Hide child attributes
Ordered segments concatenated into the generated code.
1 - 20 elementsEmits the referenced accounting code's code.
- Fixed accounting code
- Tag group code
Hide child attributes
Hide child attributes
accounting_code Id of an accounting code in this business entity.
Literal text prepended to the resolved value.
255Literal text appended to the resolved value.
255Transforms applied to the resolved value in the order listed.
alphanumeric, lowercase, uppercase Truncates the resolved value to this many characters.
x >= 1Substituted when the resolved value is empty. When absent or empty, an empty segment is dropped instead — prefix and suffix included.
255Response
Created
The unique identifier of the object in Nmbr.
The type of the object in Nmbr ("accounting_code_rule").
Hide child attributes
Hide child attributes
The line item type this rule applies to (e.g. earning, deduction). When combined with subtype, narrows the rule to a specific line item category. Mutually exclusive with business_preset.
255The line item subtype this rule applies to (e.g. wage, salary). Must be accompanied by a type.
255A business preset this rule applies to. Provides the highest specificity match. Mutually exclusive with type and subtype.
The liability accounting code assigned when this rule matches.
Assembles a formatted accounting code for the journal entry report: each segment resolves to a value, is wrapped and transformed, and the results are concatenated in order. Only valid on rules with no tag and no tag group; null when unset.
Hide child attributes
Hide child attributes
Ordered segments concatenated into the generated code.
1 - 20 elementsEmits the referenced accounting code's code.
- Fixed accounting code
- Tag group code
Hide child attributes
Hide child attributes
accounting_code Id of an accounting code in this business entity.
Literal text prepended to the resolved value.
255Literal text appended to the resolved value.
255Transforms applied to the resolved value in the order listed.
alphanumeric, lowercase, uppercase Truncates the resolved value to this many characters.
x >= 1Substituted when the resolved value is empty. When absent or empty, an empty segment is dropped instead — prefix and suffix included.
255Assembles a formatted accounting code for the journal entry report: each segment resolves to a value, is wrapped and transformed, and the results are concatenated in order. Only valid on rules with no tag and no tag group; null when unset.
Hide child attributes
Hide child attributes
Ordered segments concatenated into the generated code.
1 - 20 elementsEmits the referenced accounting code's code.
- Fixed accounting code
- Tag group code
Hide child attributes
Hide child attributes
accounting_code Id of an accounting code in this business entity.
Literal text prepended to the resolved value.
255Literal text appended to the resolved value.
255Transforms applied to the resolved value in the order listed.
alphanumeric, lowercase, uppercase Truncates the resolved value to this many characters.
x >= 1Substituted when the resolved value is empty. When absent or empty, an empty segment is dropped instead — prefix and suffix included.
255The date and time the object was created in Nmbr.
The date and time the object was last updated in Nmbr.

