Retrieve an inventory item

Retrieves an inventory item by ID.

IMPORTANT: If you need to fetch multiple specific inventory items by ID, use the list endpoint instead with the ids parameter. It accepts an array of IDs so you can batch the request into a single call, which is significantly faster.

get/quickbooks-desktop/inventory-items/{id}

Path parameters

idstring required

The QuickBooks-assigned unique identifier of the inventory item to retrieve.

Example:80000001-1234567890

The QuickBooks-assigned unique identifier of the inventory item to retrieve.

Headers

Conductor-End-User-Idstring required

The ID of the End-User to receive this request.

Example:end_usr_1234567abcdefg

The ID of the End-User to receive this request.

Response

Returns the specified inventory item.

idstring required

The unique identifier assigned by QuickBooks to this inventory item. This ID is unique across all inventory items but not across different QuickBooks object types.

objectType'qbd_inventory_item' required

The type of object. This value is always "qbd_inventory_item".

createdAtstring required

The date and time when this inventory item 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.

updatedAtstring required

The date and time when this inventory item 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.

revisionNumberstring required

The current QuickBooks-assigned revision number of this inventory item 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.

namestring required

The case-insensitive name of this inventory item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like fullName does. For example, two inventory items could both have the name "Cabinet", but they could have unique fullName values, such as "Kitchen:Cabinet" and "Inventory:Cabinet".

fullNamestring required

The case-insensitive fully-qualified unique name of this inventory item, formed by combining the names of its hierarchical parent objects with its own name, separated by colons. For example, if an inventory item is under "Kitchen" and has the name "Cabinet", its fullName would be "Kitchen:Cabinet".

NOTE: Unlike name, fullName is guaranteed to be unique across all inventory item objects. However, fullName can still be arbitrarily changed by the QuickBooks user when they modify the underlying name field.

barcodestring nullable required

The inventory item's barcode.

isActiveboolean required

Indicates whether this inventory item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to true.

sublevelnumber required

The depth level of this inventory item in the hierarchy. A top-level inventory item has a sublevel of 0; each subsequent sublevel increases this number by 1. For example, an inventory item with a fullName of "Kitchen:Cabinet" would have a sublevel of 1.

skustring nullable required

The inventory item's stock keeping unit (SKU), which is sometimes the manufacturer's part number.

salesDescriptionstring nullable required

The description of this inventory item that appears on sales forms (e.g., invoices, sales receipts) when sold to customers.

salesPricestring nullable required

The price at which this inventory item is sold to customers, represented as a decimal string.

purchaseDescriptionstring nullable required

The description of this inventory item that appears on purchase forms (e.g., checks, bills, item receipts) when it is ordered or bought from vendors.

purchaseCoststring nullable required

The cost at which this inventory item is purchased from vendors, represented as a decimal string.

reorderPointnumber nullable required

The minimum quantity of this inventory item at which QuickBooks prompts for reordering.

maximumQuantityOnHandnumber nullable required

The maximum quantity of this inventory item desired in inventory.

quantityOnHandnumber nullable required

The number of units of this inventory item currently in inventory. quantityOnHand multiplied by averageCost equals totalValue for inventory item lists. To change the quantityOnHand for an inventory item, you must use an inventory-adjustment instead of updating the inventory item directly.

averageCoststring nullable required

The average cost per unit of this inventory item, represented as a decimal string.

quantityOnPurchaseOrdernumber nullable required

The number of units of this inventory item that have been ordered from vendors (as recorded in purchase orders) but not yet received.

quantityOnSalesOrdernumber nullable required

The number of units of this inventory item that have been sold (as recorded in sales orders) but not yet fulfilled or delivered to customers.

externalIdstring nullable required

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.

Example response

{
  "id": "80000001-1234567890",
  "objectType": "qbd_inventory_item",
  "createdAt": "2025-01-01T12:34:56+00:00",
  "updatedAt": "2025-02-01T12:34:56+00:00",
  "revisionNumber": "1721172183",
  "name": "Cabinet",
  "fullName": "Kitchen:Cabinet",
  "barcode": "012345678905",
  "isActive": true,
  "class": {
    "id": "80000001-1234567890",
    "fullName": "Furniture"
  },
  "parent": {
    "id": "80000001-1234567890",
    "fullName": "Kitchen"
  },
  "sublevel": 1,
  "sku": "MPN-123456",
  "unitOfMeasureSet": {
    "id": "80000001-1234567890",
    "fullName": "Weight Units"
  },
  "salesTaxCode": {
    "id": "80000001-1234567890",
    "fullName": "Non"
  },
  "salesDescription": "High-quality steel bolts suitable for construction",
  "salesPrice": "19.99",
  "incomeAccount": {
    "id": "80000001-1234567890",
    "fullName": "Income:Product Sales"
  },
  "purchaseDescription": "Bulk purchase of steel bolts for inventory",
  "purchaseCost": "15.75",
  "purchaseTaxCode": {
    "id": "80000001-1234567890",
    "fullName": "GST"
  },
  "cogsAccount": {
    "id": "80000001-1234567890",
    "fullName": "Expenses:COGS"
  },
  "preferredVendor": {
    "id": "80000001-1234567890",
    "fullName": "Acme Supplies Ltd."
  },
  "assetAccount": {
    "id": "80000001-1234567890",
    "fullName": "Assets:Inventory"
  },
  "reorderPoint": 50,
  "maximumQuantityOnHand": 200,
  "quantityOnHand": 150,
  "averageCost": "16.50",
  "quantityOnPurchaseOrder": 10,
  "quantityOnSalesOrder": 10,
  "externalId": "12345678-abcd-1234-abcd-1234567890ab",
  "customFields": [
    {
      "ownerId": "0",
      "name": "Customer Rating",
      "type": "string_1024_type",
      "value": "Premium"
    }
  ]
}

Changes

Changed in 5 of the 46 revisions of this API.108152

    • for the path request parameter id, the maxLength was set to 36

      request-parameter-max-length-set

  • 10d4e9ebd1df387See the full diff
    • response property assetAccount/fullName list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property assetAccount/id list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property averageCost list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property barcode list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property cogsAccount/fullName list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property cogsAccount/id list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property externalId list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property maximumQuantityOnHand list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property purchaseCost list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property purchaseDescription list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property quantityOnHand list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property quantityOnPurchaseOrder list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property quantityOnSalesOrder list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property reorderPoint list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property salesDescription list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property salesPrice list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property sku list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • the class response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the incomeAccount response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the parent response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the preferredVendor response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the purchaseTaxCode response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the salesTaxCode response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the unitOfMeasureSet response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • removed the required property class/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property class/id from the response with the 200 status

      response-required-property-removed

    • removed the required property incomeAccount/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property incomeAccount/id from the response with the 200 status

      response-required-property-removed

    • removed the required property parent/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property parent/id from the response with the 200 status

      response-required-property-removed

    • removed the required property preferredVendor/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property preferredVendor/id from the response with the 200 status

      response-required-property-removed

    • removed the required property purchaseTaxCode/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property purchaseTaxCode/id from the response with the 200 status

      response-required-property-removed

    • removed the required property salesTaxCode/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property salesTaxCode/id from the response with the 200 status

      response-required-property-removed

    • removed the required property unitOfMeasureSet/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property unitOfMeasureSet/id from the response with the 200 status

      response-required-property-removed

    • added subschema #1 subschema #2 to the class response property anyOf list for the response status 200

      response-property-any-of-added

    • added subschema #1 subschema #2 to the incomeAccount response property anyOf list for the response status 200

      response-property-any-of-added

    • added subschema #1 subschema #2 to the parent response property anyOf list for the response status 200

      response-property-any-of-added

    • added subschema #1 subschema #2 to the preferredVendor response property anyOf list for the response status 200

      response-property-any-of-added

    • added subschema #1 subschema #2 to the purchaseTaxCode response property anyOf list for the response status 200

      response-property-any-of-added

    • added subschema #1 subschema #2 to the salesTaxCode response property anyOf list for the response status 200

      response-property-any-of-added

    • added subschema #1 subschema #2 to the unitOfMeasureSet response property anyOf list for the response status 200

      response-property-any-of-added

  • 8e0b7df2044d3138See the full diff
    • the response property assetAccount/fullName became nullable for the status 200

      response-property-became-nullable

    • the response property assetAccount/id became nullable for the status 200

      response-property-became-nullable

    • the response property averageCost became nullable for the status 200

      response-property-became-nullable

    • the response property barcode became nullable for the status 200

      response-property-became-nullable

    • the response property class became nullable for the status 200

      response-property-became-nullable

    • the response property cogsAccount/fullName became nullable for the status 200

      response-property-became-nullable

    • the response property cogsAccount/id became nullable for the status 200

      response-property-became-nullable

    • the response property externalId became nullable for the status 200

      response-property-became-nullable

    • the response property incomeAccount became nullable for the status 200

      response-property-became-nullable

    • the response property maximumQuantityOnHand became nullable for the status 200

      response-property-became-nullable

    • the response property parent became nullable for the status 200

      response-property-became-nullable

    • the response property preferredVendor became nullable for the status 200

      response-property-became-nullable

    • the response property purchaseCost became nullable for the status 200

      response-property-became-nullable

    • the response property purchaseDescription became nullable for the status 200

      response-property-became-nullable

    • the response property purchaseTaxCode became nullable for the status 200

      response-property-became-nullable

    • the response property quantityOnHand became nullable for the status 200

      response-property-became-nullable

    • the response property quantityOnPurchaseOrder became nullable for the status 200

      response-property-became-nullable

    • the response property quantityOnSalesOrder became nullable for the status 200

      response-property-became-nullable

    • the response property reorderPoint became nullable for the status 200

      response-property-became-nullable

    • the response property salesDescription became nullable for the status 200

      response-property-became-nullable

    • the response property salesPrice became nullable for the status 200

      response-property-became-nullable

    • the response property salesTaxCode became nullable for the status 200

      response-property-became-nullable

    • the response property sku became nullable for the status 200

      response-property-became-nullable

    • the response property unitOfMeasureSet became nullable for the status 200

      response-property-became-nullable

    • the class response's property type/format changed from / to object null/ for status 200

      response-property-type-changed

    • the incomeAccount response's property type/format changed from / to object null/ for status 200

      response-property-type-changed

    • the parent response's property type/format changed from / to object null/ for status 200

      response-property-type-changed

    • the preferredVendor response's property type/format changed from / to object null/ for status 200

      response-property-type-changed

    • the purchaseTaxCode response's property type/format changed from / to object null/ for status 200

      response-property-type-changed

    • the salesTaxCode response's property type/format changed from / to object null/ for status 200

      response-property-type-changed

    • the unitOfMeasureSet response's property type/format changed from / to object null/ for status 200

      response-property-type-changed

    • removed subschema #1 subschema #2 from the class response property anyOf list for the response status 200

      response-property-any-of-removed

    • removed subschema #1 subschema #2 from the incomeAccount response property anyOf list for the response status 200

      response-property-any-of-removed

    • removed subschema #1 subschema #2 from the parent response property anyOf list for the response status 200

      response-property-any-of-removed

    • removed subschema #1 subschema #2 from the preferredVendor response property anyOf list for the response status 200

      response-property-any-of-removed

    • removed subschema #1 subschema #2 from the purchaseTaxCode response property anyOf list for the response status 200

      response-property-any-of-removed

    • removed subschema #1 subschema #2 from the salesTaxCode response property anyOf list for the response status 200

      response-property-any-of-removed

    • removed subschema #1 subschema #2 from the unitOfMeasureSet response property anyOf list for the response status 200

      response-property-any-of-removed

    • response property assetAccount/fullName list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property assetAccount/id list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property averageCost list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property barcode list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property cogsAccount/fullName list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property cogsAccount/id list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property externalId list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property maximumQuantityOnHand list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property purchaseCost list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property purchaseDescription list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property quantityOnHand list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property quantityOnPurchaseOrder list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property quantityOnSalesOrder list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property reorderPoint list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property salesDescription list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property salesPrice list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • response property sku list-of-types was narrowed by removing types null from media type application/json of response 200

      response-property-list-of-types-narrowed

    • added the required property class/fullName to the response with the 200 status

      response-required-property-added

    • added the required property class/id to the response with the 200 status

      response-required-property-added

    • added the required property incomeAccount/fullName to the response with the 200 status

      response-required-property-added

    • added the required property incomeAccount/id to the response with the 200 status

      response-required-property-added

    • added the required property parent/fullName to the response with the 200 status

      response-required-property-added

    • added the required property parent/id to the response with the 200 status

      response-required-property-added

    • added the required property preferredVendor/fullName to the response with the 200 status

      response-required-property-added

    • added the required property preferredVendor/id to the response with the 200 status

      response-required-property-added

    • added the required property purchaseTaxCode/fullName to the response with the 200 status

      response-required-property-added

    • added the required property purchaseTaxCode/id to the response with the 200 status

      response-required-property-added

    • added the required property salesTaxCode/fullName to the response with the 200 status

      response-required-property-added

    • added the required property salesTaxCode/id to the response with the 200 status

      response-required-property-added

    • added the required property unitOfMeasureSet/fullName to the response with the 200 status

      response-required-property-added

    • added the required property unitOfMeasureSet/id to the response with the 200 status

      response-required-property-added

  • 5f832f695675387See the full diff
    • response property assetAccount/fullName list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property assetAccount/id list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property averageCost list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property barcode list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property cogsAccount/fullName list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property cogsAccount/id list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property externalId list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property maximumQuantityOnHand list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property purchaseCost list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property purchaseDescription list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property quantityOnHand list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property quantityOnPurchaseOrder list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property quantityOnSalesOrder list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property reorderPoint list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property salesDescription list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property salesPrice list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • response property sku list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • the class response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the incomeAccount response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the parent response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the preferredVendor response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the purchaseTaxCode response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the salesTaxCode response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the unitOfMeasureSet response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • removed the required property class/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property class/id from the response with the 200 status

      response-required-property-removed

    • removed the required property incomeAccount/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property incomeAccount/id from the response with the 200 status

      response-required-property-removed

    • removed the required property parent/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property parent/id from the response with the 200 status

      response-required-property-removed

    • removed the required property preferredVendor/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property preferredVendor/id from the response with the 200 status

      response-required-property-removed

    • removed the required property purchaseTaxCode/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property purchaseTaxCode/id from the response with the 200 status

      response-required-property-removed

    • removed the required property salesTaxCode/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property salesTaxCode/id from the response with the 200 status

      response-required-property-removed

    • removed the required property unitOfMeasureSet/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property unitOfMeasureSet/id from the response with the 200 status

      response-required-property-removed

    • added subschema #1 subschema #2 to the class response property anyOf list for the response status 200

      response-property-any-of-added

    • added subschema #1 subschema #2 to the incomeAccount response property anyOf list for the response status 200

      response-property-any-of-added

    • added subschema #1 subschema #2 to the parent response property anyOf list for the response status 200

      response-property-any-of-added

    • added subschema #1 subschema #2 to the preferredVendor response property anyOf list for the response status 200

      response-property-any-of-added

    • added subschema #1 subschema #2 to the purchaseTaxCode response property anyOf list for the response status 200

      response-property-any-of-added

    • added subschema #1 subschema #2 to the salesTaxCode response property anyOf list for the response status 200

      response-property-any-of-added

    • added subschema #1 subschema #2 to the unitOfMeasureSet response property anyOf list for the response status 200

      response-property-any-of-added

    • the response property incomeAccount became nullable for the status 200

      response-property-became-nullable