Create a price level

Creates a new price level.

post/quickbooks-desktop/price-levels

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

namestring required

The case-insensitive unique name of this price level, unique across all price levels.

NOTE: Price levels do not have a fullName field because they are not hierarchical objects, which is why name is unique for them but not for objects that have parents.

Maximum length: 31 characters.

isActiveboolean

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

fixedPercentagestring

The fixed percentage adjustment applied to all items for this price level (instead of a per-item price level). Once you create the price level, you cannot change this.

When this price level is applied to a customer, it automatically adjusts the rate and amount columns for applicable line items in sales orders and invoices for that customer. This value supports both positive and negative values - a value of "20" increases prices by 20%, while "-10" decreases prices by 10%.

currencyIdstring

The price level's currency. For built-in currencies, the name and code are standard ISO 4217 international values. For user-defined currencies, all values are editable.

Example request

{
  "name": "Wholesale 20% Discount",
  "isActive": true,
  "fixedPercentage": "-10.0",
  "perItemPriceLevels": [
    {
      "itemId": "80000001-1234567890",
      "customPrice": "19.99",
      "customPricePercent": "15.0",
      "adjustPercentage": "-10.0",
      "adjustRelativeTo": "standard_price"
    }
  ],
  "currencyId": "80000001-1234567890"
}

Response

Returns the newly created price level.

idstring required

The unique identifier assigned by QuickBooks to this price level. This ID is unique across all price levels but not across different QuickBooks object types.

objectType'qbd_price_level' required

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

createdAtstring required

The date and time when this price level 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 price level 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 price level 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 unique name of this price level, unique across all price levels.

NOTE: Price levels do not have a fullName field because they are not hierarchical objects, which is why name is unique for them but not for objects that have parents.

isActiveboolean required

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

priceLevelType'fixed_percentage' | 'per_item' required

The price level's type.

fixedPercentagestring nullable required

The fixed percentage adjustment applied to all items for this price level (instead of a per-item price level). Once you create the price level, you cannot change this.

When this price level is applied to a customer, it automatically adjusts the rate and amount columns for applicable line items in sales orders and invoices for that customer. This value supports both positive and negative values - a value of "20" increases prices by 20%, while "-10" decreases prices by 10%.

Example response

{
  "id": "80000001-1234567890",
  "objectType": "qbd_price_level",
  "createdAt": "2025-01-01T12:34:56+00:00",
  "updatedAt": "2025-02-01T12:34:56+00:00",
  "revisionNumber": "1721172183",
  "name": "Wholesale 20% Discount",
  "isActive": true,
  "priceLevelType": "fixed_percentage",
  "fixedPercentage": "-10.0",
  "perItemPriceLevels": [
    {
      "item": {
        "id": "80000001-1234567890",
        "fullName": "Widget A"
      },
      "customPrice": "19.99",
      "customPricePercent": "15.0"
    }
  ],
  "currency": {
    "id": "80000001-1234567890",
    "fullName": "USD"
  }
}

Changes

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

    • the request property's maxLength was set to 36

      request-property-max-length-set

    • the // request property's maxLength was set to 36

      request-property-max-length-set

    • the request property // became optional

      request-property-became-optional

    • the request property // became optional

      request-property-became-optional

  • 10d4e9ebd1df81See the full diff
    • response property fixedPercentage 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 perItemPriceLevels/items/customPrice 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 perItemPriceLevels/items/customPricePercent 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 perItemPriceLevels/items/item/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 perItemPriceLevels/items/item/id list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • the response's property type changed from object null to no type for status

      response-property-type-changed

    • removed the required property / from the response with the status

      response-required-property-removed

    • removed the required property / from the response with the status

      response-required-property-removed

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

      response-property-any-of-added

  • 8e0b7df2044d78See the full diff
    • the response property became nullable for the status

      response-property-became-nullable

    • the response property became nullable for the status

      response-property-became-nullable

    • the response property // became nullable for the status

      response-property-became-nullable

    • the response property // became nullable for the status

      response-property-became-nullable

    • the response property /// became nullable for the status

      response-property-became-nullable

    • the response property /// became nullable for the status

      response-property-became-nullable

    • the response's property type changed from no type to object null for status

      response-property-type-changed

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

      response-property-any-of-removed

    • response property fixedPercentage 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 perItemPriceLevels/items/customPrice 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 perItemPriceLevels/items/customPricePercent 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 perItemPriceLevels/items/item/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 perItemPriceLevels/items/item/id 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 / to the response with the status

      response-required-property-added

    • added the required property / to the response with the status

      response-required-property-added

  • 5f832f69567581See the full diff
    • response property fixedPercentage 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 perItemPriceLevels/items/customPrice 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 perItemPriceLevels/items/customPricePercent 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 perItemPriceLevels/items/item/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 perItemPriceLevels/items/item/id list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • the response's property type changed from object null to no type for status

      response-property-type-changed

    • removed the required property / from the response with the status

      response-required-property-removed

    • removed the required property / from the response with the status

      response-required-property-removed

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

      response-property-any-of-added