Update a service item
Updates a service item’s details, including its accounts and unit-of-measure set. QuickBooks won’t let you convert a sell-only service into a buy-and-sell service (or the reverse); create a separate item instead. If you’re switching the unit of measure, set forceUnitOfMeasureChange so QuickBooks replaces it on existing forms.
Path parameters
The QuickBooks-assigned unique identifier of the service item to update.
The QuickBooks-assigned unique identifier of the service 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": "Web-Design",
"barcode": {
"value": "012345678905"
},
"isActive": true,
"classId": "80000001-1234567890",
"parentId": "80000001-1234567890",
"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 service item.
Example response
{
"id": "80000001-1234567890",
"objectType": "qbd_service_item",
"createdAt": "2025-01-01T12:34:56+00:00",
"updatedAt": "2025-02-01T12:34:56+00:00",
"revisionNumber": "1721172183",
"name": "Web-Design",
"fullName": "Consulting:Web-Design",
"barcode": "012345678905",
"isActive": true,
"class": {
"id": "80000001-1234567890",
"fullName": "Professional-Services"
},
"parent": {
"id": "80000001-1234567890",
"fullName": "Consulting"
},
"sublevel": 1,
"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.411032
- ●
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
- ▲
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
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
- ○
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
- ▲
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
- ▲