---
title: "Update a discount item"
method: POST
path: "/quickbooks-desktop/discount-items/{id}"
---

# Update a discount item

`POST /quickbooks-desktop/discount-items/{id}`

Updates a discount item, including its linked account or discount rate. When changing the account, use `updateExistingTransactionsAccount` to control whether existing transactions that reference the item should also be updated.

## Path parameters

- `id` string, required — The QuickBooks-assigned unique identifier of the discount item to update.

## Headers

- `Conductor-End-User-Id` string, required — The ID of the End-User to receive this request.

## Request body

- object
  - `revisionNumber` string, required — The current QuickBooks-assigned revision number of the discount 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.
  - `name` string — The case-insensitive name of this discount item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two discount items could both have the `name` "10% labor discount", but they could have unique `fullName` values, such as "Discounts:10% labor discount" and "Promotions:10% labor discount". Maximum length: 31 characters.
  - `barcode` object — The discount item's barcode.
    - `value` string — The item's barcode value.
    - `assignEvenIfUsed` boolean — Indicates whether to assign the barcode even if it is already used.
    - `allowOverride` boolean — Indicates whether to allow the barcode to be overridden.
  - `isActive` boolean — Indicates whether this discount item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.
  - `classId` string — The discount 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.
  - `parentId` string — The parent discount item one level above this one in the hierarchy. For example, if this discount item has a `fullName` of "Discounts:10% labor discount", its parent has a `fullName` of "Discounts". If this discount item is at the top level, this field will be `null`.
  - `description` string — The discount item's description that will appear on sales forms that include this item.
  - `salesTaxCodeId` string — The default sales-tax code for this discount 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.
  - `discountRate` string — The monetary amount to subtract from the total or subtotal when applying this discount item to a transaction, represented as a decimal string. **NOTE**: A flat rate discount applies to ALL lines recorded above it and distributes the discount amount equally across those lines, which affects tax calculations. For example, a $10 discount applied to a $100 taxable item and $100 non-taxable item would result in a $5 taxable discount and $5 non-taxable discount. Decimal string format: up to 5 decimal places and up to 10 digits before the decimal point (for example, "123.45").
  - `discountRatePercent` string — The percentage amount to subtract from the total or subtotal when applying this discount item to a transaction. **NOTE**: A percentage discount only applies to the line immediately above it, so tax implications only affect that specific line.
  - `accountId` string — The posting account to which transactions involving this discount item are posted for tracking discounts.
  - `updateExistingTransactionsAccount` boolean — When `true`, applies the new account (specified by the `accountId` field) to all existing transactions associated with this discount item. This updates historical data and should be used with caution. The update will fail if any affected transaction falls within a closed accounting period. If this parameter is not specified, QuickBooks will prompt the user before making any changes.

## Response `200`

Returns the updated discount item.

- QbdDiscountItem
  - `id` string, required — The unique identifier assigned by QuickBooks to this discount item. This ID is unique across all discount items but not across different QuickBooks object types.
  - `objectType` 'qbd_discount_item', required — The type of object. This value is always `"qbd_discount_item"`.
  - `createdAt` string, required — The date and time when this discount 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.
  - `updatedAt` string, required — The date and time when this discount 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.
  - `revisionNumber` string, required — The current QuickBooks-assigned revision number of this discount 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.
  - `name` string, required — The case-insensitive name of this discount item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two discount items could both have the `name` "10% labor discount", but they could have unique `fullName` values, such as "Discounts:10% labor discount" and "Promotions:10% labor discount".
  - `fullName` string, required — The case-insensitive fully-qualified unique name of this discount item, formed by combining the names of its hierarchical parent objects with its own `name`, separated by colons. For example, if a discount item is under "Discounts" and has the `name` "10% labor discount", its `fullName` would be "Discounts:10% labor discount". **NOTE**: Unlike `name`, `fullName` is guaranteed to be unique across all discount item objects. However, `fullName` can still be arbitrarily changed by the QuickBooks user when they modify the underlying `name` field.
  - `barcode` string, nullable, required — The discount item's barcode.
  - `isActive` boolean, required — Indicates whether this discount item is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.
  - `class` object, nullable, required — The discount 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.
    - `id` string, nullable, required — The unique identifier assigned by QuickBooks to this object. This ID is unique across all objects of the same type, but not across different QuickBooks object types.
    - `fullName` string, nullable, required — The fully-qualified unique name for this object, formed by combining the names of its parent objects with its own `name`, separated by colons. Not case-sensitive.
  - `parent` object, nullable, required — The parent discount item one level above this one in the hierarchy. For example, if this discount item has a `fullName` of "Discounts:10% labor discount", its parent has a `fullName` of "Discounts". If this discount item is at the top level, this field will be `null`.
    - `id` string, nullable, required — The unique identifier assigned by QuickBooks to this object. This ID is unique across all objects of the same type, but not across different QuickBooks object types.
    - `fullName` string, nullable, required — The fully-qualified unique name for this object, formed by combining the names of its parent objects with its own `name`, separated by colons. Not case-sensitive.
  - `sublevel` number, required — The depth level of this discount item in the hierarchy. A top-level discount item has a `sublevel` of 0; each subsequent sublevel increases this number by 1. For example, a discount item with a `fullName` of "Discounts:10% labor discount" would have a `sublevel` of 1.
  - `description` string, nullable, required — The discount item's description that will appear on sales forms that include this item.
  - `salesTaxCode` object, nullable, required — The default sales-tax code for this discount 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.
    - `id` string, nullable, required — The unique identifier assigned by QuickBooks to this object. This ID is unique across all objects of the same type, but not across different QuickBooks object types.
    - `fullName` string, nullable, required — The fully-qualified unique name for this object, formed by combining the names of its parent objects with its own `name`, separated by colons. Not case-sensitive.
  - `discountRate` string, nullable, required — The monetary amount to subtract from the total or subtotal when applying this discount item to a transaction, represented as a decimal string. **NOTE**: A flat rate discount applies to ALL lines recorded above it and distributes the discount amount equally across those lines, which affects tax calculations. For example, a $10 discount applied to a $100 taxable item and $100 non-taxable item would result in a $5 taxable discount and $5 non-taxable discount.
  - `discountRatePercent` string, nullable, required — The percentage amount to subtract from the total or subtotal when applying this discount item to a transaction. **NOTE**: A percentage discount only applies to the line immediately above it, so tax implications only affect that specific line.
  - `account` object, required — The posting account to which transactions involving this discount item are posted for tracking discounts.
    - `id` string, nullable, required — The unique identifier assigned by QuickBooks to this object. This ID is unique across all objects of the same type, but not across different QuickBooks object types.
    - `fullName` string, nullable, required — The fully-qualified unique name for this object, formed by combining the names of its parent objects with its own `name`, separated by colons. Not case-sensitive.
  - `externalId` string, 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.
  - `customFields` QbdCustomField[], required — The custom fields for the discount item object, added as user-defined data extensions, not included in the standard QuickBooks object.
    - `ownerId` string, required — The identifier of the owner of the custom field, which QuickBooks internally calls a "data extension". For public custom fields visible in the UI, such as those added by the QuickBooks user, this is always "0". For private custom fields that are only visible to the application that created them, this is a valid GUID identifying the owning application. Internally, Conductor always fetches all public custom fields (those with an `ownerId` of "0") for all objects.
    - `name` string, required — The name of the custom field, unique for the specified `ownerId`. For public custom fields, this name is visible as a label in the QuickBooks UI.
    - `type` 'amount_type' | 'date_time_type' | 'integer_type' | 'percent_type' | 'price_type' | 'quantity_type' | 'string_1024_type' | 'string_255_type', required — The data type of this custom field.
    - `value` string, required — The value of this custom field. The maximum length depends on the field's data type.

---

[API](https://skmtc.net/conductor-is/apis/conductor-api.md) · [All operations](https://skmtc.net/conductor-is/apis/conductor-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/conductor-is/conductor-api/versions/0b07b3ebe160/schema)
