---
title: "Update a bill"
method: POST
path: "/quickbooks-desktop/bills/{id}"
---

# Update a bill

`POST /quickbooks-desktop/bills/{id}`

Updates an existing vendor bill while keeping the required references intact. QuickBooks does not let this update request add new purchase order links, and you must continue to supply the vendor, accounts payable account, and at least one expense or item line when you resubmit the bill.

**NOTE:** If you include `expenseLines`, `itemLines`, or `itemGroupLines`, QuickBooks Desktop replaces each included line list with the array you send, so include unchanged lines you want to keep and use `id: "-1"` for new lines.

## Path parameters

- `id` string, required — The QuickBooks-assigned unique identifier of the bill 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 bill 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.
  - `vendorId` string — The vendor who sent this bill for goods or services purchased.
  - `vendorAddress` object — The address of the vendor who sent this bill.
    - `line1` string — The first line of the address (e.g., street, PO Box, or company name). Maximum length: 41 characters.
    - `line2` string — The second line of the address, if needed (e.g., apartment, suite, unit, or building). Maximum length: 41 characters.
    - `line3` string — The third line of the address, if needed. Maximum length: 41 characters.
    - `line4` string — The fourth line of the address, if needed. Maximum length: 41 characters.
    - `line5` string — The fifth line of the address, if needed. Maximum length: 41 characters.
    - `city` string — The city, district, suburb, town, or village name of the address. Maximum length: 31 characters.
    - `state` string — The state, county, province, or region name of the address. Maximum length: 21 characters.
    - `postalCode` string — The postal code or ZIP code of the address. Maximum length: 13 characters.
    - `country` string — The country name of the address.
    - `note` string — A note written at the bottom of the address in the form in which it appears, such as the invoice form.
  - `payablesAccountId` string — The Accounts-Payable (A/P) account to which this bill is assigned, used for accounts-payable tracking. If omitted, QuickBooks Desktop uses the default A/P account configured in the company file. **IMPORTANT**: If this bill is linked to other transactions, this A/P account must match the `payablesAccount` used in those other transactions.
  - `transactionDate` string, date — The date of this bill, in ISO 8601 format (YYYY-MM-DD).
  - `dueDate` string, date — The date by which this bill must be paid, in ISO 8601 format (YYYY-MM-DD).
  - `refNumber` string — The case-sensitive user-defined reference number for this bill, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user. Maximum length: 20 characters.
  - `termsId` string — The bill's payment terms, defining when payment is due and any applicable discounts.
  - `memo` string — A memo or note for this bill that appears in the Accounts-Payable register and in reports that include this bill.
  - `salesTaxCodeId` string — The sales-tax code for this bill, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the vendor. This can be overridden on the bill's individual lines. 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.
  - `exchangeRate` number — The market exchange rate between this bill's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).
  - `clearExpenseLines` boolean — When `true`, removes all existing expense lines associated with this bill. To modify or add individual expense lines, use the field `expenseLines` instead.
  - `expenseLines` object[] — The bill's expense lines, each representing one line in this expense. **IMPORTANT**: 1. Including this array in your update request will **REPLACE** all existing expense lines for the bill with this array. To keep any existing expense lines, you must include them in this array even if they have not changed. **Any expense lines not included will be removed.** 2. To add a new expense line, include it here with the `id` field set to `-1`. 3. If you do not wish to modify any expense lines, omit this field entirely to keep them unchanged.
    - `id` string, required — The QuickBooks-assigned unique identifier of an existing expense line you wish to retain or update. **IMPORTANT**: Set this field to `-1` for new expense lines you wish to add.
    - `accountId` string — The expense account being debited (increased) for this expense line. The corresponding account being credited is usually a liability account (e.g., Accounts-Payable) or an asset account (e.g., Cash), depending on the transaction type.
    - `amount` string — The monetary amount of this expense line, represented as a decimal string. Decimal string format: exactly 2 decimal places when cents are included and up to 13 digits before the decimal point (for example, "123.45").
    - `memo` string — A memo or note for this expense line.
    - `payeeId` string — If `account` refers to an Accounts-Payable (A/P) account, `payee` refers to the expense's vendor (not the customer). If `account` refers to any other type of account, `payee` refers to the expense's customer (not the vendor).
    - `classId` string — The expense line'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. If a class is specified for the entire parent transaction, it is automatically applied to all expense lines unless overridden here, at the transaction line level.
    - `salesTaxCodeId` string — The sales-tax code for this expense line, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the parent transaction or the associated item. 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.
    - `billingStatus` 'billable' | 'has_been_billed' | 'not_billable' — The billing status of this expense line.
    - `salesRepresentativeId` string — The expense line's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.
  - `clearItemLines` boolean — When `true`, removes all existing item lines associated with this bill. To modify or add individual item lines, use the field `itemLines` instead.
  - `itemLines` object[] — The bill's item lines, each representing the purchase of a specific item or service. **IMPORTANT**: 1. Including this array in your update request will **REPLACE** all existing item lines for the bill with this array. To keep any existing item lines, you must include them in this array even if they have not changed. **Any item lines not included will be removed.** 2. To add a new item line, include it here with the `id` field set to `-1`. 3. If you do not wish to modify any item lines, omit this field entirely to keep them unchanged.
    - `id` string, required — The QuickBooks-assigned unique identifier of an existing item line you wish to retain or update. **IMPORTANT**: Set this field to `-1` for new item lines you wish to add.
    - `itemId` string — The item associated with this item line. This can refer to any good or service that the business buys or sells, including item types such as a service item, inventory item, or special calculation item like a discount item or sales-tax item.
    - `inventorySiteId` string — The site location where inventory for the item associated with this item line is stored.
    - `inventorySiteLocationId` string — The specific location (e.g., bin or shelf) within the inventory site where the item associated with this item line is stored.
    - `serialNumber` string — The serial number of the item associated with this item line. This is used for tracking individual units of serialized inventory items.
    - `lotNumber` string — The lot number of the item associated with this item line. Used for tracking groups of inventory items that are purchased or manufactured together.
    - `expirationDate` string, date — The expiration date for the serial number or lot number of the item associated with this item line, in ISO 8601 format (YYYY-MM-DD). This is particularly relevant for perishable or time-sensitive inventory items. Note that this field is only supported on QuickBooks Desktop 2023 or later.
    - `description` string — A description of this item line.
    - `quantity` number — The quantity of the item associated with this item line. This field cannot be cleared. **NOTE**: Do not use this field if the associated item is a discount item.
    - `unitOfMeasure` string — The unit-of-measure used for the `quantity` in this item line. Must be a valid unit within the item's available units of measure.
    - `overrideUnitOfMeasureSetId` string — Specifies an alternative unit-of-measure set when updating this item line's `unitOfMeasure` field (e.g., "pound" or "kilogram"). This allows you to select units from a different set than the item's default unit-of-measure set, which remains unchanged on the item itself. The override applies only to this specific line. For example, you can sell an item typically measured in volume units using weight units in a specific transaction by specifying a different unit-of-measure set with this field.
    - `cost` string — The cost of this item line, represented as a decimal string. If both `quantity` and `amount` are specified but not `cost`, QuickBooks will use them to calculate `cost`. Decimal string format: up to 5 decimal places and up to 10 digits before the decimal point (for example, "123.45").
    - `amount` string — The monetary amount of this item line, represented as a decimal string. If both `quantity` and `cost` are specified but not `amount`, QuickBooks will use them to calculate `amount`. If `amount`, `cost`, and `quantity` are all unspecified, then QuickBooks will calculate `amount` based on a `quantity` of `1` and the suggested `cost`. This field cannot be cleared. Decimal string format: exactly 2 decimal places when cents are included and up to 13 digits before the decimal point (for example, "123.45").
    - `customerId` string — The customer or customer-job associated with this item line.
    - `classId` string — The item line'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. If a class is specified for the entire parent transaction, it is automatically applied to all item lines unless overridden here, at the transaction line level.
    - `salesTaxCodeId` string — The sales-tax code for this item line, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the parent transaction or the associated item. 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.
    - `billingStatus` 'billable' | 'has_been_billed' | 'not_billable' — The billing status of this item line.
    - `overrideItemAccountId` string — The account to use for this item line, overriding the default account associated with the item.
    - `salesRepresentativeId` string — The item line's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.
  - `itemGroupLines` object[] — The bill's item group lines, each representing a predefined set of items bundled together because they are commonly purchased together or grouped for faster entry. **IMPORTANT**: 1. Including this array in your update request will **REPLACE** all existing item group lines for the bill with this array. To keep any existing item group lines, you must include them in this array even if they have not changed. **Any item group lines not included will be removed.** 2. To add a new item group line, include it here with the `id` field set to `-1`. 3. If you do not wish to modify any item group lines, omit this field entirely to keep them unchanged.
    - `id` string, required — The QuickBooks-assigned unique identifier of an existing item group line you wish to retain or update. **IMPORTANT**: Set this field to `-1` for new item group lines you wish to add.
    - `itemGroupId` string — The item group line's item group, representing a predefined set of items bundled because they are commonly purchased together or grouped for faster entry.
    - `quantity` number — The quantity of the item group associated with this item group line. This field cannot be cleared. **NOTE**: Do not use this field if the associated item group is a discount item group.
    - `unitOfMeasure` string — The unit-of-measure used for the `quantity` in this item group line. Must be a valid unit within the item's available units of measure.
    - `overrideUnitOfMeasureSetId` string — Specifies an alternative unit-of-measure set when updating this item group line's `unitOfMeasure` field (e.g., "pound" or "kilogram"). This allows you to select units from a different set than the item's default unit-of-measure set, which remains unchanged on the item itself. The override applies only to this specific line. For example, you can sell an item typically measured in volume units using weight units in a specific transaction by specifying a different unit-of-measure set with this field.
    - `itemLines` object[] — The item group line's item lines, each representing the purchase of a specific item or service. **IMPORTANT**: 1. Including this array in your update request will **REPLACE** all existing item lines for the item group line with this array. To keep any existing item lines, you must include them in this array even if they have not changed. **Any item lines not included will be removed.** 2. To add a new item line, include it here with the `id` field set to `-1`. 3. If you do not wish to modify any item lines, omit this field entirely to keep them unchanged.
      - `id` string, required — The QuickBooks-assigned unique identifier of an existing item line you wish to retain or update. **IMPORTANT**: Set this field to `-1` for new item lines you wish to add.
      - `itemId` string — The item associated with this item line. This can refer to any good or service that the business buys or sells, including item types such as a service item, inventory item, or special calculation item like a discount item or sales-tax item.
      - `inventorySiteId` string — The site location where inventory for the item associated with this item line is stored.
      - `inventorySiteLocationId` string — The specific location (e.g., bin or shelf) within the inventory site where the item associated with this item line is stored.
      - `serialNumber` string — The serial number of the item associated with this item line. This is used for tracking individual units of serialized inventory items.
      - `lotNumber` string — The lot number of the item associated with this item line. Used for tracking groups of inventory items that are purchased or manufactured together.
      - `expirationDate` string, date — The expiration date for the serial number or lot number of the item associated with this item line, in ISO 8601 format (YYYY-MM-DD). This is particularly relevant for perishable or time-sensitive inventory items. Note that this field is only supported on QuickBooks Desktop 2023 or later.
      - `description` string — A description of this item line.
      - `quantity` number — The quantity of the item associated with this item line. This field cannot be cleared. **NOTE**: Do not use this field if the associated item is a discount item.
      - `unitOfMeasure` string — The unit-of-measure used for the `quantity` in this item line. Must be a valid unit within the item's available units of measure.
      - `overrideUnitOfMeasureSetId` string — Specifies an alternative unit-of-measure set when updating this item line's `unitOfMeasure` field (e.g., "pound" or "kilogram"). This allows you to select units from a different set than the item's default unit-of-measure set, which remains unchanged on the item itself. The override applies only to this specific line. For example, you can sell an item typically measured in volume units using weight units in a specific transaction by specifying a different unit-of-measure set with this field.
      - `cost` string — The cost of this item line, represented as a decimal string. If both `quantity` and `amount` are specified but not `cost`, QuickBooks will use them to calculate `cost`. Decimal string format: up to 5 decimal places and up to 10 digits before the decimal point (for example, "123.45").
      - `amount` string — The monetary amount of this item line, represented as a decimal string. If both `quantity` and `cost` are specified but not `amount`, QuickBooks will use them to calculate `amount`. If `amount`, `cost`, and `quantity` are all unspecified, then QuickBooks will calculate `amount` based on a `quantity` of `1` and the suggested `cost`. This field cannot be cleared. Decimal string format: exactly 2 decimal places when cents are included and up to 13 digits before the decimal point (for example, "123.45").
      - `customerId` string — The customer or customer-job associated with this item line.
      - `classId` string — The item line'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. If a class is specified for the entire parent transaction, it is automatically applied to all item lines unless overridden here, at the transaction line level.
      - `salesTaxCodeId` string — The sales-tax code for this item line, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the parent transaction or the associated item. 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.
      - `billingStatus` 'billable' | 'has_been_billed' | 'not_billable' — The billing status of this item line.
      - `overrideItemAccountId` string — The account to use for this item line, overriding the default account associated with the item.
      - `salesRepresentativeId` string — The item line's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.

## Response `200`

Returns the updated bill.

- QbdBill
  - `id` string, required — The unique identifier assigned by QuickBooks to this bill. This ID is unique across all transaction types.
  - `objectType` 'qbd_bill', required — The type of object. This value is always `"qbd_bill"`.
  - `createdAt` string, required — The date and time when this bill 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 bill 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 bill 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.
  - `vendor` object, nullable, required — The vendor who sent this bill for goods or services purchased.
    - `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.
  - `vendorAddress` QbdAddress, required
    - `line1` string, nullable, required — The first line of the address (e.g., street, PO Box, or company name).
    - `line2` string, nullable, required — The second line of the address, if needed (e.g., apartment, suite, unit, or building).
    - `line3` string, nullable, required — The third line of the address, if needed.
    - `line4` string, nullable, required — The fourth line of the address, if needed.
    - `line5` string, nullable, required — The fifth line of the address, if needed.
    - `city` string, nullable, required — The city, district, suburb, town, or village name of the address.
    - `state` string, nullable, required — The state, county, province, or region name of the address.
    - `postalCode` string, nullable, required — The postal code or ZIP code of the address.
    - `country` string, nullable, required — The country name of the address.
    - `note` string, nullable, required — A note written at the bottom of the address in the form in which it appears, such as the invoice form.
  - `payablesAccount` object, nullable, required — The Accounts-Payable (A/P) account to which this bill is assigned, used for accounts-payable tracking. **IMPORTANT**: If this bill is linked to other transactions, this A/P account must match the `payablesAccount` used in those other transactions.
    - `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.
  - `transactionDate` string, date, required — The date of this bill, in ISO 8601 format (YYYY-MM-DD).
  - `dueDate` string, date, nullable, required — The date by which this bill must be paid, in ISO 8601 format (YYYY-MM-DD).
  - `amountDue` string, nullable, required — The total monetary amount due for this bill, represented as a decimal string. This equals the sum of the amounts in the bill's expense lines, item lines, and item group lines. The amount due minus any credits or discounts equals the open amount.
  - `currency` object, nullable, required — The bill's currency. For built-in currencies, the name and code are standard ISO 4217 international values. For user-defined currencies, all values are editable.
    - `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.
  - `exchangeRate` number, nullable, required — The market exchange rate between this bill's currency and the home currency in QuickBooks at the time of this transaction. Represented as a decimal value (e.g., 1.2345 for 1 EUR = 1.2345 USD if USD is the home currency).
  - `amountDueInHomeCurrency` string, nullable, required — The monetary amount due for this bill converted to the home currency of the QuickBooks company file. Represented as a decimal string.
  - `refNumber` string, nullable, required — The case-sensitive user-defined reference number for this bill, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.
  - `isPending` boolean, nullable, required — Indicates whether this bill has not been completed or is in a draft version.
  - `terms` object, nullable, required — The bill's payment terms, defining when payment is due and any applicable 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.
  - `memo` string, nullable, required — A memo or note for this bill that appears in the Accounts-Payable register and in reports that include this bill.
  - `salesTaxCode` object, nullable, required — The sales-tax code for this bill, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the vendor. This can be overridden on the bill's individual lines. 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.
  - `isPaid` boolean, nullable, required — Indicates whether this bill has been paid in full. When `true`, `openAmount` will be 0.
  - `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.
  - `linkedTransactions` QbdLinkedTransaction[], required — The bill's linked transactions, such as payments applied, credits used, or associated purchase orders. **IMPORTANT**: You must specify the parameter `includeLinkedTransactions` when fetching a list of bills to receive this field because it is not returned by default.
    - `id` string, required — The unique identifier assigned by QuickBooks to this linked transaction. This ID is unique across all transaction types.
    - `objectType` 'qbd_linked_transaction', required — The type of object. This value is always `"qbd_linked_transaction"`.
    - `transactionType` 'ar_refund_credit_card' | 'bill' | 'bill_payment_check' | 'bill_payment_credit_card' | 'build_assembly' | 'charge' | 'check' | 'credit_card_charge' | 'credit_card_credit' | 'credit_memo' | 'deposit' | 'estimate' | 'inventory_adjustment' | 'invoice' | 'item_receipt' | 'journal_entry' | 'liability_adjustment' | 'paycheck' | 'payroll_liability_check' | 'purchase_order' | 'receive_payment' | 'sales_order' | 'sales_receipt' | 'sales_tax_payment_check' | 'transfer' | 'vendor_credit' | 'ytd_adjustment' | 'unknown', required — The type of transaction for this linked transaction.
    - `transactionDate` string, date, required — The date of this linked transaction, in ISO 8601 format (YYYY-MM-DD).
    - `refNumber` string, nullable, required — The case-sensitive user-defined reference number for this linked transaction, which can be used to identify the transaction in QuickBooks. This value is not required to be unique and can be arbitrarily changed by the QuickBooks user.
    - `linkType` 'amount' | 'quantity', nullable, required — Indicates the nature of the link between the transactions: `amount` denotes an amount-based link (e.g., an invoice linked to a payment), and `quantity` denotes a quantity-based link (e.g., an invoice created from a sales order based on the quantity of items received).
    - `amount` string, nullable, required — The monetary amount of this linked transaction, represented as a decimal string.
  - `expenseLines` QbdExpenseLine[], required — The bill's expense lines, each representing one line in this expense.
    - `id` string, nullable, required — The unique identifier assigned by QuickBooks to this expense line. This ID is unique across all transaction line types. If QuickBooks omits the identifier, this is null.
    - `objectType` 'qbd_expense_line', required — The type of object. This value is always `"qbd_expense_line"`.
    - `account` object, nullable, required — The expense account being debited (increased) for this expense line. The corresponding account being credited is usually a liability account (e.g., Accounts-Payable) or an asset account (e.g., Cash), depending on the transaction type.
      - `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.
    - `amount` string, nullable, required — The monetary amount of this expense line, represented as a decimal string.
    - `memo` string, nullable, required — A memo or note for this expense line.
    - `payee` object, nullable, required — If `account` refers to an Accounts-Payable (A/P) account, `payee` refers to the expense's vendor (not the customer). If `account` refers to any other type of account, `payee` refers to the expense's customer (not the vendor).
      - `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.
    - `class` object, nullable, required — The expense line'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. If a class is specified for the entire parent transaction, it is automatically applied to all expense lines unless overridden here, at the transaction line level.
      - `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.
    - `salesTaxCode` object, nullable, required — The sales-tax code for this expense line, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the parent transaction or the associated item. 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.
    - `billingStatus` 'billable' | 'has_been_billed' | 'not_billable', nullable, required — The billing status of this expense line.
    - `salesRepresentative` object, nullable, required — The expense line's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.
      - `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.
    - `customFields` QbdCustomField[], required — The custom fields for the expense line 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.
  - `itemLines` QbdItemLine[], required — The bill's item lines, each representing the purchase of a specific item or service.
    - `id` string, required — The unique identifier assigned by QuickBooks to this item line. This ID is unique across all transaction line types.
    - `objectType` 'qbd_item_line', required — The type of object. This value is always `"qbd_item_line"`.
    - `item` object, nullable, required — The item associated with this item line. This can refer to any good or service that the business buys or sells, including item types such as a service item, inventory item, or special calculation item like a discount item or sales-tax item.
      - `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.
    - `inventorySite` object, nullable, required — The site location where inventory for the item associated with this item line is stored.
      - `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.
    - `inventorySiteLocation` object, nullable, required — The specific location (e.g., bin or shelf) within the inventory site where the item associated with this item line is stored.
      - `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.
    - `serialNumber` string, nullable, required — The serial number of the item associated with this item line. This is used for tracking individual units of serialized inventory items.
    - `lotNumber` string, nullable, required — The lot number of the item associated with this item line. Used for tracking groups of inventory items that are purchased or manufactured together.
    - `expirationDate` string, date, nullable, required — The expiration date for the serial number or lot number of the item associated with this item line, in ISO 8601 format (YYYY-MM-DD). This is particularly relevant for perishable or time-sensitive inventory items. Note that this field is only supported on QuickBooks Desktop 2023 or later.
    - `description` string, nullable, required — A description of this item line.
    - `quantity` number, nullable, required — The quantity of the item associated with this item line. This field cannot be cleared. **NOTE**: Do not use this field if the associated item is a discount item.
    - `unitOfMeasure` string, nullable, required — The unit-of-measure used for the `quantity` in this item line. Must be a valid unit within the item's available units of measure.
    - `overrideUnitOfMeasureSet` object, nullable, required — Specifies an alternative unit-of-measure set when updating this item line's `unitOfMeasure` field (e.g., "pound" or "kilogram"). This allows you to select units from a different set than the item's default unit-of-measure set, which remains unchanged on the item itself. The override applies only to this specific line. For example, you can sell an item typically measured in volume units using weight units in a specific transaction by specifying a different unit-of-measure set with this field.
      - `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.
    - `cost` string, nullable, required — The cost of this item line, represented as a decimal string. If both `quantity` and `amount` are specified but not `cost`, QuickBooks will use them to calculate `cost`.
    - `amount` string, nullable, required — The monetary amount of this item line, represented as a decimal string. If both `quantity` and `cost` are specified but not `amount`, QuickBooks will use them to calculate `amount`. If `amount`, `cost`, and `quantity` are all unspecified, then QuickBooks will calculate `amount` based on a `quantity` of `1` and the suggested `cost`. This field cannot be cleared.
    - `customer` object, nullable, required — The customer or customer-job associated with this item line.
      - `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.
    - `class` object, nullable, required — The item line'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. If a class is specified for the entire parent transaction, it is automatically applied to all item lines unless overridden here, at the transaction line level.
      - `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.
    - `salesTaxCode` object, nullable, required — The sales-tax code for this item line, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the parent transaction or the associated item. 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.
    - `billingStatus` 'billable' | 'has_been_billed' | 'not_billable', nullable, required — The billing status of this item line.
    - `salesRepresentative` object, nullable, required — The item line's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.
      - `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.
    - `customFields` QbdCustomField[], required — The custom fields for the item line 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.
  - `itemGroupLines` QbdItemGroupLineItem[], required — The bill's item group lines, each representing a predefined set of items bundled together because they are commonly purchased together or grouped for faster entry.
    - `id` string, required — The unique identifier assigned by QuickBooks to this item group line. This ID is unique across all transaction line types.
    - `objectType` 'qbd_item_group_line', required — The type of object. This value is always `"qbd_item_group_line"`.
    - `itemGroup` object, required — The item group line's item group, representing a predefined set of items bundled because they are commonly purchased together or grouped for faster entry.
      - `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.
    - `description` string, nullable, required — A description of this item group line.
    - `quantity` number, nullable, required — The quantity of the item group associated with this item group line. This field cannot be cleared. **NOTE**: Do not use this field if the associated item group is a discount item group.
    - `unitOfMeasure` string, nullable, required — The unit-of-measure used for the `quantity` in this item group line. Must be a valid unit within the item's available units of measure.
    - `overrideUnitOfMeasureSet` object, nullable, required — Specifies an alternative unit-of-measure set when updating this item group line's `unitOfMeasure` field (e.g., "pound" or "kilogram"). This allows you to select units from a different set than the item's default unit-of-measure set, which remains unchanged on the item itself. The override applies only to this specific line. For example, you can sell an item typically measured in volume units using weight units in a specific transaction by specifying a different unit-of-measure set with this field.
      - `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.
    - `totalAmount` string, required — The total monetary amount of this item group line, equivalent to the sum of the amounts in `lines`, represented as a decimal string.
    - `itemLines` QbdItemLine[], required — The item group line's item lines, each representing the purchase of a specific item or service.
      - `id` string, required — The unique identifier assigned by QuickBooks to this item line. This ID is unique across all transaction line types.
      - `objectType` 'qbd_item_line', required — The type of object. This value is always `"qbd_item_line"`.
      - `item` object, nullable, required — The item associated with this item line. This can refer to any good or service that the business buys or sells, including item types such as a service item, inventory item, or special calculation item like a discount item or sales-tax item.
        - `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.
      - `inventorySite` object, nullable, required — The site location where inventory for the item associated with this item line is stored.
        - `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.
      - `inventorySiteLocation` object, nullable, required — The specific location (e.g., bin or shelf) within the inventory site where the item associated with this item line is stored.
        - `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.
      - `serialNumber` string, nullable, required — The serial number of the item associated with this item line. This is used for tracking individual units of serialized inventory items.
      - `lotNumber` string, nullable, required — The lot number of the item associated with this item line. Used for tracking groups of inventory items that are purchased or manufactured together.
      - `expirationDate` string, date, nullable, required — The expiration date for the serial number or lot number of the item associated with this item line, in ISO 8601 format (YYYY-MM-DD). This is particularly relevant for perishable or time-sensitive inventory items. Note that this field is only supported on QuickBooks Desktop 2023 or later.
      - `description` string, nullable, required — A description of this item line.
      - `quantity` number, nullable, required — The quantity of the item associated with this item line. This field cannot be cleared. **NOTE**: Do not use this field if the associated item is a discount item.
      - `unitOfMeasure` string, nullable, required — The unit-of-measure used for the `quantity` in this item line. Must be a valid unit within the item's available units of measure.
      - `overrideUnitOfMeasureSet` object, nullable, required — Specifies an alternative unit-of-measure set when updating this item line's `unitOfMeasure` field (e.g., "pound" or "kilogram"). This allows you to select units from a different set than the item's default unit-of-measure set, which remains unchanged on the item itself. The override applies only to this specific line. For example, you can sell an item typically measured in volume units using weight units in a specific transaction by specifying a different unit-of-measure set with this field.
        - `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.
      - `cost` string, nullable, required — The cost of this item line, represented as a decimal string. If both `quantity` and `amount` are specified but not `cost`, QuickBooks will use them to calculate `cost`.
      - `amount` string, nullable, required — The monetary amount of this item line, represented as a decimal string. If both `quantity` and `cost` are specified but not `amount`, QuickBooks will use them to calculate `amount`. If `amount`, `cost`, and `quantity` are all unspecified, then QuickBooks will calculate `amount` based on a `quantity` of `1` and the suggested `cost`. This field cannot be cleared.
      - `customer` object, nullable, required — The customer or customer-job associated with this item line.
        - `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.
      - `class` object, nullable, required — The item line'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. If a class is specified for the entire parent transaction, it is automatically applied to all item lines unless overridden here, at the transaction line level.
        - `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.
      - `salesTaxCode` object, nullable, required — The sales-tax code for this item line, determining whether it is taxable or non-taxable. If set, this overrides any sales-tax codes defined on the parent transaction or the associated item. 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.
      - `billingStatus` 'billable' | 'has_been_billed' | 'not_billable', nullable, required — The billing status of this item line.
      - `salesRepresentative` object, nullable, required — The item line's sales representative. Sales representatives can be employees, vendors, or other names in QuickBooks.
        - `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.
      - `customFields` QbdCustomField[], required — The custom fields for the item line 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.
    - `customFields` QbdCustomField[], required — The custom fields for the item group line 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.
  - `openAmount` string, nullable, required — The remaining amount still owed on this bill, represented as a decimal string. This equals the bill's amount minus any credits or discounts. **NOTE**: Two rare QuickBooks Desktop behaviors can make `openAmount` unreliable on bills: - `openAmount` can be omitted from bill query responses. - A known QuickBooks Desktop bug can cause `openAmount` to reflect the vendor's aggregate open accounts-payable balance rather than the documented remaining balance for that individual bill. If you need the amount currently payable on each open bill, use Conductor's `/quickbooks-desktop/bills-to-pay` endpoint and read `bill.amountDue` instead of relying on `openAmount` from the Conductor bills endpoint. The bills-to-pay endpoint is not a general replacement for the Conductor bills endpoint, because it is scoped to open bills and available credits for a vendor and returns bill-payment data rather than full bill records. If you cannot use `/quickbooks-desktop/bills-to-pay` and must derive a fallback from Conductor bills endpoint results, re-query the bills with `includeLinkedTransactions=true` and compute a best-effort open amount as `amountDue` plus the sum of signed `linkedTransactions[].amount` values for all entries where `linkedTransactions[].linkType` is `"amount"`.
  - `customFields` QbdCustomField[], required — The custom fields for the bill 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)
