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.
Path parameters
The QuickBooks-assigned unique identifier of the non-inventory item to update.
The QuickBooks-assigned unique identifier of the non-inventory item to update.
Headers
The ID of the End-User to receive this request.
The ID of the End-User to receive this request.
Request body
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.
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"
}
]
}Changes
Changed in 5 of the 46 revisions of this API.441033
- ●
for the
pathrequest parameterid, the maxLength was set to36request-parameter-max-length-set
- ●
the
classIdrequest property's maxLength was set to36request-property-max-length-set
- ●
the
parentIdrequest property's maxLength was set to36request-property-max-length-set
- ●
the
salesAndPurchaseDetails/expenseAccountIdrequest property's maxLength was set to36request-property-max-length-set
- ●
the
salesAndPurchaseDetails/incomeAccountIdrequest property's maxLength was set to36request-property-max-length-set
- ●
the
salesAndPurchaseDetails/preferredVendorIdrequest property's maxLength was set to36request-property-max-length-set
- ●
the
salesAndPurchaseDetails/purchaseTaxCodeIdrequest property's maxLength was set to36request-property-max-length-set
- ●
the
salesOrPurchaseDetails/postingAccountIdrequest property's maxLength was set to36request-property-max-length-set
- ●
the
salesTaxCodeIdrequest property's maxLength was set to36request-property-max-length-set
- ●
the
unitOfMeasureSetIdrequest property's maxLength was set to36request-property-max-length-set
- ●
- ▲
response property
barcodelist-of-types was widened by adding typesnullto media typeapplication/jsonof response200response-property-list-of-types-widened
- ▲
response property
externalIdlist-of-types was widened by adding typesnullto media typeapplication/jsonof response200response-property-list-of-types-widened
- ▲
response property
skulist-of-types was widened by adding typesnullto media typeapplication/jsonof response200response-property-list-of-types-widened
- ▲
the
classresponse's property type/format changed fromobjectnull/to/for status200response-property-type-changed
- ▲
the
parentresponse's property type/format changed fromobjectnull/to/for status200response-property-type-changed
- ▲
the
salesTaxCoderesponse's property type/format changed fromobjectnull/to/for status200response-property-type-changed
- ▲
the
unitOfMeasureSetresponse's property type/format changed fromobjectnull/to/for status200response-property-type-changed
- ▲
removed the required property
class/fullNamefrom the response with the200statusresponse-required-property-removed
- ▲
removed the required property
class/idfrom the response with the200statusresponse-required-property-removed
- ▲
removed the required property
parent/fullNamefrom the response with the200statusresponse-required-property-removed
- ▲
removed the required property
parent/idfrom the response with the200statusresponse-required-property-removed
- ▲
removed the required property
salesTaxCode/fullNamefrom the response with the200statusresponse-required-property-removed
- ▲
removed the required property
salesTaxCode/idfrom the response with the200statusresponse-required-property-removed
- ▲
removed the required property
unitOfMeasureSet/fullNamefrom the response with the200statusresponse-required-property-removed
- ▲
removed the required property
unitOfMeasureSet/idfrom the response with the200statusresponse-required-property-removed
- ○
added
qbd_sales_and_purchase_detailssubschema #2to thesalesAndPurchaseDetailsresponse propertyanyOflist for the response status200response-property-any-of-added
- ○
added
qbd_sales_or_purchase_detailssubschema #2to thesalesOrPurchaseDetailsresponse propertyanyOflist for the response status200response-property-any-of-added
- ○
added
subschema #1subschema #2to theclassresponse propertyanyOflist for the response status200response-property-any-of-added
- ○
added
subschema #1subschema #2to theparentresponse propertyanyOflist for the response status200response-property-any-of-added
- ○
added
subschema #1subschema #2to thesalesTaxCoderesponse propertyanyOflist for the response status200response-property-any-of-added
- ○
added
subschema #1subschema #2to theunitOfMeasureSetresponse propertyanyOflist for the response status200response-property-any-of-added
- ○
removed
qbd_sales_and_purchase_detailssubschema #2from thesalesAndPurchaseDetailsresponse propertyoneOflist for the response status200response-property-one-of-removed
- ○
removed
qbd_sales_or_purchase_detailssubschema #2from thesalesOrPurchaseDetailsresponse propertyoneOflist for the response status200response-property-one-of-removed
- ▲
- ▲
the response property
barcodebecame nullable for the status200response-property-became-nullable
- ▲
the response property
classbecame nullable for the status200response-property-became-nullable
- ▲
the response property
externalIdbecame nullable for the status200response-property-became-nullable
- ▲
the response property
parentbecame nullable for the status200response-property-became-nullable
- ▲
the response property
salesTaxCodebecame nullable for the status200response-property-became-nullable
- ▲
the response property
skubecame nullable for the status200response-property-became-nullable
- ▲
the response property
unitOfMeasureSetbecame nullable for the status200response-property-became-nullable
- ▲
added
qbd_sales_and_purchase_detailssubschema #2to thesalesAndPurchaseDetailsresponse propertyoneOflist for the response status200response-property-one-of-added
- ▲
added
qbd_sales_or_purchase_detailssubschema #2to thesalesOrPurchaseDetailsresponse propertyoneOflist for the response status200response-property-one-of-added
- ▲
the
classresponse's property type/format changed from/toobjectnull/for status200response-property-type-changed
- ▲
the
parentresponse's property type/format changed from/toobjectnull/for status200response-property-type-changed
- ▲
the
salesTaxCoderesponse's property type/format changed from/toobjectnull/for status200response-property-type-changed
- ▲
the
unitOfMeasureSetresponse's property type/format changed from/toobjectnull/for status200response-property-type-changed
- ○
removed
qbd_sales_and_purchase_detailssubschema #2from thesalesAndPurchaseDetailsresponse propertyanyOflist for the response status200response-property-any-of-removed
- ○
removed
qbd_sales_or_purchase_detailssubschema #2from thesalesOrPurchaseDetailsresponse propertyanyOflist for the response status200response-property-any-of-removed
- ○
removed
subschema #1subschema #2from theclassresponse propertyanyOflist for the response status200response-property-any-of-removed
- ○
removed
subschema #1subschema #2from theparentresponse propertyanyOflist for the response status200response-property-any-of-removed
- ○
removed
subschema #1subschema #2from thesalesTaxCoderesponse propertyanyOflist for the response status200response-property-any-of-removed
- ○
removed
subschema #1subschema #2from theunitOfMeasureSetresponse propertyanyOflist for the response status200response-property-any-of-removed
- ○
response property
barcodelist-of-types was narrowed by removing typesnullfrom media typeapplication/jsonof response200response-property-list-of-types-narrowed
- ○
response property
externalIdlist-of-types was narrowed by removing typesnullfrom media typeapplication/jsonof response200response-property-list-of-types-narrowed
- ○
response property
skulist-of-types was narrowed by removing typesnullfrom media typeapplication/jsonof response200response-property-list-of-types-narrowed
- ○
added the required property
class/fullNameto the response with the200statusresponse-required-property-added
- ○
added the required property
class/idto the response with the200statusresponse-required-property-added
- ○
added the required property
parent/fullNameto the response with the200statusresponse-required-property-added
- ○
added the required property
parent/idto the response with the200statusresponse-required-property-added
- ○
added the required property
salesTaxCode/fullNameto the response with the200statusresponse-required-property-added
- ○
added the required property
salesTaxCode/idto the response with the200statusresponse-required-property-added
- ○
added the required property
unitOfMeasureSet/fullNameto the response with the200statusresponse-required-property-added
- ○
added the required property
unitOfMeasureSet/idto the response with the200statusresponse-required-property-added
- ▲
- ▲
response property
barcodelist-of-types was widened by adding typesnullto media typeapplication/jsonof response200response-property-list-of-types-widened
- ▲
response property
externalIdlist-of-types was widened by adding typesnullto media typeapplication/jsonof response200response-property-list-of-types-widened
- ▲
response property
skulist-of-types was widened by adding typesnullto media typeapplication/jsonof response200response-property-list-of-types-widened
- ▲
the
classresponse's property type/format changed fromobjectnull/to/for status200response-property-type-changed
- ▲
the
parentresponse's property type/format changed fromobjectnull/to/for status200response-property-type-changed
- ▲
the
salesTaxCoderesponse's property type/format changed fromobjectnull/to/for status200response-property-type-changed
- ▲
the
unitOfMeasureSetresponse's property type/format changed fromobjectnull/to/for status200response-property-type-changed
- ▲
removed the required property
class/fullNamefrom the response with the200statusresponse-required-property-removed
- ▲
removed the required property
class/idfrom the response with the200statusresponse-required-property-removed
- ▲
removed the required property
parent/fullNamefrom the response with the200statusresponse-required-property-removed
- ▲
removed the required property
parent/idfrom the response with the200statusresponse-required-property-removed
- ▲
removed the required property
salesTaxCode/fullNamefrom the response with the200statusresponse-required-property-removed
- ▲
removed the required property
salesTaxCode/idfrom the response with the200statusresponse-required-property-removed
- ▲
removed the required property
unitOfMeasureSet/fullNamefrom the response with the200statusresponse-required-property-removed
- ▲
removed the required property
unitOfMeasureSet/idfrom the response with the200statusresponse-required-property-removed
- ○
added
qbd_sales_and_purchase_detailssubschema #2to thesalesAndPurchaseDetailsresponse propertyanyOflist for the response status200response-property-any-of-added
- ○
added
qbd_sales_or_purchase_detailssubschema #2to thesalesOrPurchaseDetailsresponse propertyanyOflist for the response status200response-property-any-of-added
- ○
added
subschema #1subschema #2to theclassresponse propertyanyOflist for the response status200response-property-any-of-added
- ○
added
subschema #1subschema #2to theparentresponse propertyanyOflist for the response status200response-property-any-of-added
- ○
added
subschema #1subschema #2to thesalesTaxCoderesponse propertyanyOflist for the response status200response-property-any-of-added
- ○
added
subschema #1subschema #2to theunitOfMeasureSetresponse propertyanyOflist for the response status200response-property-any-of-added
- ○
removed
qbd_sales_and_purchase_detailssubschema #2from thesalesAndPurchaseDetailsresponse propertyoneOflist for the response status200response-property-one-of-removed
- ○
removed
qbd_sales_or_purchase_detailssubschema #2from thesalesOrPurchaseDetailsresponse propertyoneOflist for the response status200response-property-one-of-removed
- ▲
- ▲
the response property
salesAndPurchaseDetails/oneOf[subschema #1: The Sales-and-Purchase Details object]/incomeAccountbecame nullable for the status200response-property-became-nullable
- ▲