v48

latestOpenAPI 3.1.0raw.githubusercontent.com2026-07-262621423.8 MB

Update a non-inventory item

Updates a non-inventory item. You can modify either salesOrPurchaseDetails or salesAndPurchaseDetails, but the item must keep the same configuration it was created with. When you change postingAccount, incomeAccount, or expenseAccount, include the matching updateExistingTransactions... flag so QuickBooks applies the new account to existing transactions and doesn’t reject the update when historical activity is present.

post/quickbooks-desktop/non-inventory-items/{id}

Path parameters

idstring required

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

Example:80000001-1234567890

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

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.

Request body

revisionNumberstring required

The current QuickBooks-assigned revision number of the non-inventory item object you are updating, which you can get by fetching the object first. Provide the most recent revisionNumber to ensure you're working with the latest data; otherwise, the update will return an error.

namestring

The case-insensitive name of this non-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 non-inventory items could both have the name "Printer Ink Cartridge", but they could have unique fullName values, such as "Office Supplies:Printer Ink Cartridge" and "Miscellaneous:Printer Ink Cartridge".

Maximum length: 31 characters.

isActiveboolean

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

classIdstring

The non-inventory item's class. Classes can be used to categorize objects into meaningful segments, such as department, location, or type of work. In QuickBooks, class tracking is off by default.

parentIdstring

The parent non-inventory item one level above this one in the hierarchy. For example, if this non-inventory item has a fullName of "Office Supplies:Printer Ink Cartridge", its parent has a fullName of "Office Supplies". If this non-inventory item is at the top level, this field will be null.

skustring

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

unitOfMeasureSetIdstring

The unit-of-measure set associated with this non-inventory item, which consists of a base unit and related units.

forceUnitOfMeasureChangeboolean

Indicates whether to allow changing the non-inventory item's unit-of-measure set (using the unitOfMeasureSetId field) when the base unit of the new unit-of-measure set does not match that of the currently assigned set. Without setting this field to true in this scenario, the request will fail with an error; hence, this field is equivalent to accepting the warning prompt in the QuickBooks UI.

NOTE: Changing the base unit requires you to update the item's quantities-on-hand and cost to reflect the new unit; otherwise, these values will be inaccurate. Alternatively, consider creating a new item with the desired unit-of-measure set and deactivating the old item.

salesTaxCodeIdstring

The default sales-tax code for this non-inventory item, determining whether it is taxable or non-taxable. This can be overridden at the transaction-line level.

Default codes include "Non" (non-taxable) and "Tax" (taxable), but custom codes can also be created in QuickBooks Desktop. If QuickBooks Desktop is not set up to charge sales tax (via the "Do You Charge Sales Tax?" preference), it assigns the default non-taxable sales-tax code configured in the company file to all sales.

Example request

{
  "revisionNumber": "1721172183",
  "name": "Printer Ink Cartridge",
  "barcode": {
    "value": "012345678905"
  },
  "isActive": true,
  "classId": "80000001-1234567890",
  "parentId": "80000001-1234567890",
  "sku": "MPN-123456",
  "unitOfMeasureSetId": "80000001-1234567890",
  "salesTaxCodeId": "80000001-1234567890",
  "salesOrPurchaseDetails": {
    "description": "Hourly Consulting Service",
    "price": "19.99",
    "pricePercentage": "10.5",
    "postingAccountId": "80000001-1234567890"
  },
  "salesAndPurchaseDetails": {
    "salesDescription": "High-quality steel bolts suitable for construction",
    "salesPrice": "19.99",
    "incomeAccountId": "80000001-1234567890",
    "purchaseDescription": "Bulk purchase of steel bolts for inventory",
    "purchaseCost": "15.75",
    "purchaseTaxCodeId": "80000001-1234567890",
    "expenseAccountId": "80000001-1234567890",
    "preferredVendorId": "80000001-1234567890"
  }
}

Response

Returns the updated non-inventory item.

idstring required

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

objectType'qbd_non_inventory_item' required

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

createdAtstring required

The date and time when this non-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 non-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 non-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 non-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 non-inventory items could both have the name "Printer Ink Cartridge", but they could have unique fullName values, such as "Office Supplies:Printer Ink Cartridge" and "Miscellaneous:Printer Ink Cartridge".

fullNamestring required

The case-insensitive fully-qualified unique name of this non-inventory item, formed by combining the names of its hierarchical parent objects with its own name, separated by colons. For example, if a non-inventory item is under "Office Supplies" and has the name "Printer Ink Cartridge", its fullName would be "Office Supplies:Printer Ink Cartridge".

NOTE: Unlike name, fullName is guaranteed to be unique across all non-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 non-inventory item's barcode.

isActiveboolean required

Indicates whether this non-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 non-inventory item in the hierarchy. A top-level non-inventory item has a sublevel of 0; each subsequent sublevel increases this number by 1. For example, a non-inventory item with a fullName of "Office Supplies:Printer Ink Cartridge" would have a sublevel of 1.

skustring nullable required

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

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_non_inventory_item",
  "createdAt": "2025-01-01T12:34:56+00:00",
  "updatedAt": "2025-02-01T12:34:56+00:00",
  "revisionNumber": "1721172183",
  "name": "Printer Ink Cartridge",
  "fullName": "Office Supplies:Printer Ink Cartridge",
  "barcode": "012345678905",
  "isActive": true,
  "class": {
    "id": "80000001-1234567890",
    "fullName": "Administrative"
  },
  "parent": {
    "id": "80000001-1234567890",
    "fullName": "Office Supplies"
  },
  "sublevel": 1,
  "sku": "MPN-123456",
  "unitOfMeasureSet": {
    "id": "80000001-1234567890",
    "fullName": "Weight Units"
  },
  "salesTaxCode": {
    "id": "80000001-1234567890",
    "fullName": "Non"
  },
  "salesOrPurchaseDetails": {
    "description": "Hourly Consulting Service",
    "price": "19.99",
    "pricePercentage": "10.5",
    "postingAccount": {
      "id": "80000001-1234567890",
      "fullName": "Income:Consulting Services"
    }
  },
  "salesAndPurchaseDetails": {
    "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"
    },
    "expenseAccount": {
      "id": "80000001-1234567890",
      "fullName": "Expenses:Cost of Goods Sold"
    },
    "preferredVendor": {
      "id": "80000001-1234567890",
      "fullName": "Acme Supplies Ltd."
    }
  },
  "externalId": "12345678-abcd-1234-abcd-1234567890ab",
  "customFields": [
    {
      "ownerId": "0",
      "name": "Customer Rating",
      "type": "string_1024_type",
      "value": "Premium"
    }
  ]
}