Create an other charge item

Creates a new other charge item.

post/quickbooks-desktop/other-charge-items

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 name of this other charge item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like fullName does. For example, two other charge items could both have the name "Overnight Delivery", but they could have unique fullName values, such as "Shipping Charges:Overnight Delivery" and "Misc Fees:Overnight Delivery".

Maximum length: 31 characters.

isActiveboolean

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

classIdstring

The other charge 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 other charge item one level above this one in the hierarchy. For example, if this other charge item has a fullName of "Shipping Charges:Overnight Delivery", its parent has a fullName of "Shipping Charges". If this other charge item is at the top level, this field will be null.

salesTaxCodeIdstring

The default sales-tax code for this other charge 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.

externalIdstring uuid

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.

IMPORTANT: This field must be formatted as a valid GUID; otherwise, QuickBooks will return an error.

Example request

{
  "name": "Overnight Delivery",
  "barcode": {
    "value": "012345678905"
  },
  "isActive": true,
  "classId": "80000001-1234567890",
  "parentId": "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"
  },
  "externalId": "12345678-abcd-1234-abcd-1234567890ab"
}

Response

Returns the newly created other charge item.

idstring required

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

objectType'qbd_other_charge_item' required

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

createdAtstring required

The date and time when this other charge 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 other charge 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 other charge 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 other charge item. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like fullName does. For example, two other charge items could both have the name "Overnight Delivery", but they could have unique fullName values, such as "Shipping Charges:Overnight Delivery" and "Misc Fees:Overnight Delivery".

fullNamestring required

The case-insensitive fully-qualified unique name of this other charge item, formed by combining the names of its hierarchical parent objects with its own name, separated by colons. For example, if an other charge item is under "Shipping Charges" and has the name "Overnight Delivery", its fullName would be "Shipping Charges:Overnight Delivery".

NOTE: Unlike name, fullName is guaranteed to be unique across all other charge item objects. However, fullName can still be arbitrarily changed by the QuickBooks user when they modify the underlying name field.

barcodestring nullable required

The other charge item's barcode.

isActiveboolean required

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

sublevelnumber required

The depth level of this other charge item in the hierarchy. A top-level other charge item has a sublevel of 0; each subsequent sublevel increases this number by 1. For example, an other charge item with a fullName of "Shipping Charges:Overnight Delivery" would have a sublevel of 1.

specialItemType'finance_charge' | 'reimbursable_expense_group' | 'reimbursable_expense_subtotal' nullable required

The type of special item for this other charge item.

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_other_charge_item",
  "createdAt": "2025-01-01T12:34:56+00:00",
  "updatedAt": "2025-02-01T12:34:56+00:00",
  "revisionNumber": "1721172183",
  "name": "Overnight Delivery",
  "fullName": "Shipping Charges:Overnight Delivery",
  "barcode": "012345678905",
  "isActive": true,
  "class": {
    "id": "80000001-1234567890",
    "fullName": "Shipping"
  },
  "parent": {
    "id": "80000001-1234567890",
    "fullName": "Shipping Charges"
  },
  "sublevel": 1,
  "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."
    }
  },
  "specialItemType": "finance_charge",
  "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.371237

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

      request-property-max-length-set

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

      request-property-max-length-set

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

      request-property-max-length-set

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

      request-property-max-length-set

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

      request-property-max-length-set

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

      request-property-max-length-set

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

      request-property-max-length-set

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

      request-property-max-length-set

  • 10d4e9ebd1df1211See the full diff
    • response property barcode 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 externalId 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 specialItemType list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • the class response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the parent response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the salesTaxCode response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • removed the required property class/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property class/id from the response with the 200 status

      response-required-property-removed

    • removed the required property parent/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property parent/id from the response with the 200 status

      response-required-property-removed

    • removed the required property salesTaxCode/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property salesTaxCode/id from the response with the 200 status

      response-required-property-removed

    • added qbd_sales_and_purchase_details subschema #2 to the salesAndPurchaseDetails response property anyOf list for the response status 200

      response-property-any-of-added

    • added qbd_sales_or_purchase_details subschema #2 to the salesOrPurchaseDetails response property anyOf list for the response status 200

      response-property-any-of-added

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

      response-property-any-of-added

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

      response-property-any-of-added

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

      response-property-any-of-added

    • removed the finance_charge enum value from the specialItemType response property for the response status 200

      response-property-enum-value-removed

    • removed the reimbursable_expense_group enum value from the specialItemType response property for the response status 200

      response-property-enum-value-removed

    • removed the reimbursable_expense_subtotal enum value from the specialItemType response property for the response status 200

      response-property-enum-value-removed

    • removed the undefined enum value from the specialItemType response property for the response status 200

      response-property-enum-value-removed

    • removed qbd_sales_and_purchase_details subschema #2 from the salesAndPurchaseDetails response property oneOf list for the response status 200

      response-property-one-of-removed

    • removed qbd_sales_or_purchase_details subschema #2 from the salesOrPurchaseDetails response property oneOf list for the response status 200

      response-property-one-of-removed

  • 8e0b7df2044d11415See the full diff
    • the response property barcode became nullable for the status 200

      response-property-became-nullable

    • the response property class became nullable for the status 200

      response-property-became-nullable

    • the response property externalId became nullable for the status 200

      response-property-became-nullable

    • the response property parent became nullable for the status 200

      response-property-became-nullable

    • the response property salesTaxCode became nullable for the status 200

      response-property-became-nullable

    • the response property specialItemType became nullable for the status 200

      response-property-became-nullable

    • added qbd_sales_and_purchase_details subschema #2 to the salesAndPurchaseDetails response property oneOf list for the response status 200

      response-property-one-of-added

    • added qbd_sales_or_purchase_details subschema #2 to the salesOrPurchaseDetails response property oneOf list for the response status 200

      response-property-one-of-added

    • the class response's property type/format changed from / to object null/ for status 200

      response-property-type-changed

    • the parent response's property type/format changed from / to object null/ for status 200

      response-property-type-changed

    • the salesTaxCode response's property type/format changed from / to object null/ for status 200

      response-property-type-changed

    • added the new finance_charge enum value to the specialItemType response property for the response status 200

      response-property-enum-value-added

    • added the new reimbursable_expense_group enum value to the specialItemType response property for the response status 200

      response-property-enum-value-added

    • added the new reimbursable_expense_subtotal enum value to the specialItemType response property for the response status 200

      response-property-enum-value-added

    • added the new undefined enum value to the specialItemType response property for the response status 200

      response-property-enum-value-added

    • removed the pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$ from the request property externalId

      request-property-pattern-removed

    • removed qbd_sales_and_purchase_details subschema #2 from the salesAndPurchaseDetails response property anyOf list for the response status 200

      response-property-any-of-removed

    • removed qbd_sales_or_purchase_details subschema #2 from the salesOrPurchaseDetails response property anyOf list for the response status 200

      response-property-any-of-removed

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

      response-property-any-of-removed

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

      response-property-any-of-removed

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

      response-property-any-of-removed

    • response property barcode 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 externalId 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 specialItemType 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 class/fullName to the response with the 200 status

      response-required-property-added

    • added the required property class/id to the response with the 200 status

      response-required-property-added

    • added the required property parent/fullName to the response with the 200 status

      response-required-property-added

    • added the required property parent/id to the response with the 200 status

      response-required-property-added

    • added the required property salesTaxCode/fullName to the response with the 200 status

      response-required-property-added

    • added the required property salesTaxCode/id to the response with the 200 status

      response-required-property-added

  • 5f832f6956751311See the full diff
    • added the pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$ to the request property externalId

      request-property-pattern-added

    • response property barcode 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 externalId 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 specialItemType list-of-types was widened by adding types null to media type application/json of response 200

      response-property-list-of-types-widened

    • the class response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the parent response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • the salesTaxCode response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • removed the required property class/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property class/id from the response with the 200 status

      response-required-property-removed

    • removed the required property parent/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property parent/id from the response with the 200 status

      response-required-property-removed

    • removed the required property salesTaxCode/fullName from the response with the 200 status

      response-required-property-removed

    • removed the required property salesTaxCode/id from the response with the 200 status

      response-required-property-removed

    • added qbd_sales_and_purchase_details subschema #2 to the salesAndPurchaseDetails response property anyOf list for the response status 200

      response-property-any-of-added

    • added qbd_sales_or_purchase_details subschema #2 to the salesOrPurchaseDetails response property anyOf list for the response status 200

      response-property-any-of-added

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

      response-property-any-of-added

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

      response-property-any-of-added

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

      response-property-any-of-added

    • removed the finance_charge enum value from the specialItemType response property for the response status 200

      response-property-enum-value-removed

    • removed the reimbursable_expense_group enum value from the specialItemType response property for the response status 200

      response-property-enum-value-removed

    • removed the reimbursable_expense_subtotal enum value from the specialItemType response property for the response status 200

      response-property-enum-value-removed

    • removed the undefined enum value from the specialItemType response property for the response status 200

      response-property-enum-value-removed

    • removed qbd_sales_and_purchase_details subschema #2 from the salesAndPurchaseDetails response property oneOf list for the response status 200

      response-property-one-of-removed

    • removed qbd_sales_or_purchase_details subschema #2 from the salesOrPurchaseDetails response property oneOf list for the response status 200

      response-property-one-of-removed

    • the response property salesAndPurchaseDetails/oneOf[subschema #1: The Sales-and-Purchase Details object]/incomeAccount became nullable for the status 200

      response-property-became-nullable