import Conductor from 'conductor-node';
const conductor = new Conductor({
apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted
});
const itemGroup = await conductor.qbd.itemGroups.create({
name: 'Office Supplies Bundle',
shouldPrintItemsInGroup: true,
conductorEndUserId: 'end_usr_1234567abcdefg',
});
console.log(itemGroup.id);import os
from conductor import Conductor
conductor = Conductor(
api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted
)
item_group = conductor.qbd.item_groups.create(
name="Office Supplies Bundle",
should_print_items_in_group=True,
conductor_end_user_id="end_usr_1234567abcdefg",
)
print(item_group.id)curl --request POST \
--url https://api.conductor.is/v1/quickbooks-desktop/item-groups \
--header 'Authorization: Bearer <token>' \
--header 'Conductor-End-User-Id: <conductor-end-user-id>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Office Supplies Bundle",
"shouldPrintItemsInGroup": true,
"barcode": {
"value": "012345678905",
"assignEvenIfUsed": false,
"allowOverride": false
},
"isActive": true,
"description": "Complete office starter kit with essential supplies for new employees.",
"unitOfMeasureSetId": "80000001-1234567890",
"externalId": "12345678-abcd-1234-abcd-1234567890ab",
"lines": [
{
"itemId": "80000001-1234567890",
"quantity": 5,
"unitOfMeasure": "Each"
}
]
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.conductor.is/v1/quickbooks-desktop/item-groups",
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([
'name' => 'Office Supplies Bundle',
'shouldPrintItemsInGroup' => true,
'barcode' => [
'value' => '012345678905',
'assignEvenIfUsed' => false,
'allowOverride' => false
],
'isActive' => true,
'description' => 'Complete office starter kit with essential supplies for new employees.',
'unitOfMeasureSetId' => '80000001-1234567890',
'externalId' => '12345678-abcd-1234-abcd-1234567890ab',
'lines' => [
[
'itemId' => '80000001-1234567890',
'quantity' => 5,
'unitOfMeasure' => 'Each'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Conductor-End-User-Id: <conductor-end-user-id>",
"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://api.conductor.is/v1/quickbooks-desktop/item-groups"
payload := strings.NewReader("{\n \"name\": \"Office Supplies Bundle\",\n \"shouldPrintItemsInGroup\": true,\n \"barcode\": {\n \"value\": \"012345678905\",\n \"assignEvenIfUsed\": false,\n \"allowOverride\": false\n },\n \"isActive\": true,\n \"description\": \"Complete office starter kit with essential supplies for new employees.\",\n \"unitOfMeasureSetId\": \"80000001-1234567890\",\n \"externalId\": \"12345678-abcd-1234-abcd-1234567890ab\",\n \"lines\": [\n {\n \"itemId\": \"80000001-1234567890\",\n \"quantity\": 5,\n \"unitOfMeasure\": \"Each\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Conductor-End-User-Id", "<conductor-end-user-id>")
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://api.conductor.is/v1/quickbooks-desktop/item-groups")
.header("Conductor-End-User-Id", "<conductor-end-user-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Office Supplies Bundle\",\n \"shouldPrintItemsInGroup\": true,\n \"barcode\": {\n \"value\": \"012345678905\",\n \"assignEvenIfUsed\": false,\n \"allowOverride\": false\n },\n \"isActive\": true,\n \"description\": \"Complete office starter kit with essential supplies for new employees.\",\n \"unitOfMeasureSetId\": \"80000001-1234567890\",\n \"externalId\": \"12345678-abcd-1234-abcd-1234567890ab\",\n \"lines\": [\n {\n \"itemId\": \"80000001-1234567890\",\n \"quantity\": 5,\n \"unitOfMeasure\": \"Each\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.conductor.is/v1/quickbooks-desktop/item-groups")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Conductor-End-User-Id"] = '<conductor-end-user-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Office Supplies Bundle\",\n \"shouldPrintItemsInGroup\": true,\n \"barcode\": {\n \"value\": \"012345678905\",\n \"assignEvenIfUsed\": false,\n \"allowOverride\": false\n },\n \"isActive\": true,\n \"description\": \"Complete office starter kit with essential supplies for new employees.\",\n \"unitOfMeasureSetId\": \"80000001-1234567890\",\n \"externalId\": \"12345678-abcd-1234-abcd-1234567890ab\",\n \"lines\": [\n {\n \"itemId\": \"80000001-1234567890\",\n \"quantity\": 5,\n \"unitOfMeasure\": \"Each\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "80000001-1234567890",
"objectType": "qbd_item_group",
"createdAt": "2025-01-01T12:34:56.000Z",
"updatedAt": "2025-02-01T12:34:56.000Z",
"revisionNumber": "1721172183",
"name": "Office Supplies Bundle",
"barcode": "012345678905",
"isActive": true,
"description": "Complete office starter kit with essential supplies for new employees.",
"unitOfMeasureSet": {
"id": "80000001-1234567890",
"fullName": "Weight Units"
},
"shouldPrintItemsInGroup": true,
"specialItemType": "finance_charge",
"externalId": "12345678-abcd-1234-abcd-1234567890ab",
"lines": [
{
"item": {
"id": "80000001-1234567890",
"fullName": "Widget A"
},
"quantity": 5,
"unitOfMeasure": "Each"
}
],
"customFields": [
{
"ownerId": "0",
"name": "Customer Rating",
"type": "string_1024_type",
"value": "Premium"
}
]
}Create an item group
Creates a new item group.
import Conductor from 'conductor-node';
const conductor = new Conductor({
apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted
});
const itemGroup = await conductor.qbd.itemGroups.create({
name: 'Office Supplies Bundle',
shouldPrintItemsInGroup: true,
conductorEndUserId: 'end_usr_1234567abcdefg',
});
console.log(itemGroup.id);import os
from conductor import Conductor
conductor = Conductor(
api_key=os.environ.get("CONDUCTOR_SECRET_KEY"), # This is the default and can be omitted
)
item_group = conductor.qbd.item_groups.create(
name="Office Supplies Bundle",
should_print_items_in_group=True,
conductor_end_user_id="end_usr_1234567abcdefg",
)
print(item_group.id)curl --request POST \
--url https://api.conductor.is/v1/quickbooks-desktop/item-groups \
--header 'Authorization: Bearer <token>' \
--header 'Conductor-End-User-Id: <conductor-end-user-id>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Office Supplies Bundle",
"shouldPrintItemsInGroup": true,
"barcode": {
"value": "012345678905",
"assignEvenIfUsed": false,
"allowOverride": false
},
"isActive": true,
"description": "Complete office starter kit with essential supplies for new employees.",
"unitOfMeasureSetId": "80000001-1234567890",
"externalId": "12345678-abcd-1234-abcd-1234567890ab",
"lines": [
{
"itemId": "80000001-1234567890",
"quantity": 5,
"unitOfMeasure": "Each"
}
]
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.conductor.is/v1/quickbooks-desktop/item-groups",
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([
'name' => 'Office Supplies Bundle',
'shouldPrintItemsInGroup' => true,
'barcode' => [
'value' => '012345678905',
'assignEvenIfUsed' => false,
'allowOverride' => false
],
'isActive' => true,
'description' => 'Complete office starter kit with essential supplies for new employees.',
'unitOfMeasureSetId' => '80000001-1234567890',
'externalId' => '12345678-abcd-1234-abcd-1234567890ab',
'lines' => [
[
'itemId' => '80000001-1234567890',
'quantity' => 5,
'unitOfMeasure' => 'Each'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Conductor-End-User-Id: <conductor-end-user-id>",
"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://api.conductor.is/v1/quickbooks-desktop/item-groups"
payload := strings.NewReader("{\n \"name\": \"Office Supplies Bundle\",\n \"shouldPrintItemsInGroup\": true,\n \"barcode\": {\n \"value\": \"012345678905\",\n \"assignEvenIfUsed\": false,\n \"allowOverride\": false\n },\n \"isActive\": true,\n \"description\": \"Complete office starter kit with essential supplies for new employees.\",\n \"unitOfMeasureSetId\": \"80000001-1234567890\",\n \"externalId\": \"12345678-abcd-1234-abcd-1234567890ab\",\n \"lines\": [\n {\n \"itemId\": \"80000001-1234567890\",\n \"quantity\": 5,\n \"unitOfMeasure\": \"Each\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Conductor-End-User-Id", "<conductor-end-user-id>")
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://api.conductor.is/v1/quickbooks-desktop/item-groups")
.header("Conductor-End-User-Id", "<conductor-end-user-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Office Supplies Bundle\",\n \"shouldPrintItemsInGroup\": true,\n \"barcode\": {\n \"value\": \"012345678905\",\n \"assignEvenIfUsed\": false,\n \"allowOverride\": false\n },\n \"isActive\": true,\n \"description\": \"Complete office starter kit with essential supplies for new employees.\",\n \"unitOfMeasureSetId\": \"80000001-1234567890\",\n \"externalId\": \"12345678-abcd-1234-abcd-1234567890ab\",\n \"lines\": [\n {\n \"itemId\": \"80000001-1234567890\",\n \"quantity\": 5,\n \"unitOfMeasure\": \"Each\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.conductor.is/v1/quickbooks-desktop/item-groups")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Conductor-End-User-Id"] = '<conductor-end-user-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Office Supplies Bundle\",\n \"shouldPrintItemsInGroup\": true,\n \"barcode\": {\n \"value\": \"012345678905\",\n \"assignEvenIfUsed\": false,\n \"allowOverride\": false\n },\n \"isActive\": true,\n \"description\": \"Complete office starter kit with essential supplies for new employees.\",\n \"unitOfMeasureSetId\": \"80000001-1234567890\",\n \"externalId\": \"12345678-abcd-1234-abcd-1234567890ab\",\n \"lines\": [\n {\n \"itemId\": \"80000001-1234567890\",\n \"quantity\": 5,\n \"unitOfMeasure\": \"Each\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "80000001-1234567890",
"objectType": "qbd_item_group",
"createdAt": "2025-01-01T12:34:56.000Z",
"updatedAt": "2025-02-01T12:34:56.000Z",
"revisionNumber": "1721172183",
"name": "Office Supplies Bundle",
"barcode": "012345678905",
"isActive": true,
"description": "Complete office starter kit with essential supplies for new employees.",
"unitOfMeasureSet": {
"id": "80000001-1234567890",
"fullName": "Weight Units"
},
"shouldPrintItemsInGroup": true,
"specialItemType": "finance_charge",
"externalId": "12345678-abcd-1234-abcd-1234567890ab",
"lines": [
{
"item": {
"id": "80000001-1234567890",
"fullName": "Widget A"
},
"quantity": 5,
"unitOfMeasure": "Each"
}
],
"customFields": [
{
"ownerId": "0",
"name": "Customer Rating",
"type": "string_1024_type",
"value": "Premium"
}
]
}Authorizations
Your Conductor secret key using Bearer auth (e.g., "Authorization: Bearer {{YOUR_SECRET_KEY}}").
Headers
The ID of the End-User to receive this request.
"end_usr_1234567abcdefg"
Body
The case-insensitive unique name of this item group, unique across all item groups.
NOTE: Item groups do not have a fullName field because they are not hierarchical objects, which is why name is unique for them but not for objects that have parents.
Maximum length: 31 characters.
31"Office Supplies Bundle"
Indicates whether the individual items in this item group and their separate amounts appear on printed forms.
true
The item group's barcode.
Show child attributes
Show child attributes
Indicates whether this item group is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to true.
true
The item group's description that will appear on sales forms that include this item.
"Complete office starter kit with essential supplies for new employees."
The unit-of-measure set associated with this item group, which consists of a base unit and related units.
36"80000001-1234567890"
A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.
IMPORTANT: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.
"12345678-abcd-1234-abcd-1234567890ab"
The item lines in this item group.
1Show child attributes
Show child attributes
Response
Returns the newly created item group.
The unique identifier assigned by QuickBooks to this item group. This ID is unique across all item groups but not across different QuickBooks object types.
"80000001-1234567890"
The type of object. This value is always "qbd_item_group".
"qbd_item_group""qbd_item_group"
The date and time when this item group was created, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm), which QuickBooks Desktop interprets in the local timezone of the end-user's computer.
"2025-01-01T12:34:56.000Z"
The date and time when this item group was last updated, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm), which QuickBooks Desktop interprets in the local timezone of the end-user's computer.
"2025-02-01T12:34:56.000Z"
The current QuickBooks-assigned revision number of this item group object, which changes each time the object is modified. When updating this object, you must provide the most recent revisionNumber to ensure you're working with the latest data; otherwise, the update will return an error.
"1721172183"
The case-insensitive unique name of this item group, unique across all item groups.
NOTE: Item groups do not have a fullName field because they are not hierarchical objects, which is why name is unique for them but not for objects that have parents.
"Office Supplies Bundle"
The item group's barcode.
"012345678905"
Indicates whether this item group is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to true.
true
The item group's description that will appear on sales forms that include this item.
"Complete office starter kit with essential supplies for new employees."
The unit-of-measure set associated with this item group, which consists of a base unit and related units.
Show child attributes
Show child attributes
{
"id": "80000001-1234567890",
"fullName": "Weight Units"
}
Indicates whether the individual items in this item group and their separate amounts appear on printed forms.
true
The type of special item for this item group.
finance_charge, reimbursable_expense_group, reimbursable_expense_subtotal "finance_charge"
A globally unique identifier (GUID) you, the developer, can provide for tracking this object in your external system. This field is immutable and can only be set during object creation.
"12345678-abcd-1234-abcd-1234567890ab"
The item lines in this item group.
Show child attributes
Show child attributes
The custom fields for the item group object, added as user-defined data extensions, not included in the standard QuickBooks object.
Show child attributes
Show child attributes

