POST
/
quickbooks-desktop
/
bills
/
{id}
import Conductor from 'conductor-node';

const client = new Conductor({
  apiKey: process.env['CONDUCTOR_SECRET_KEY'], // This is the default and can be omitted
});

async function main() {
  const bill = await client.qbd.bills.update('123ABC-1234567890', {
    revisionNumber: '1721172183',
    conductorEndUserId: 'end_usr_1234567abcdefg',
  });

  console.log(bill.id);
}

main();
{
  "id": "123ABC-1234567890",
  "objectType": "qbd_bill",
  "createdAt": "2021-10-01T17:34:56.000Z",
  "updatedAt": "2021-10-01T20:45:30.000Z",
  "revisionNumber": "1721172183",
  "vendor": {
    "id": "80000001-1234567890",
    "fullName": "Acme Supplies Ltd."
  },
  "vendorAddress": {
    "line1": "Conductor Labs Inc.",
    "line2": "540 Market St.",
    "line3": "Suite 100",
    "line4": "",
    "line5": "",
    "city": "San Francisco",
    "state": "CA",
    "postalCode": "94110",
    "country": "United States",
    "note": "Conductor HQ"
  },
  "payablesAccount": {
    "id": "80000001-1234567890",
    "fullName": "Accounts-Payable"
  },
  "transactionDate": "2021-10-01T00:00:00.000Z",
  "dueDate": "2021-10-31T00:00:00.000Z",
  "amountDue": "1000.00",
  "currency": {
    "id": "80000001-1234567890",
    "fullName": "USD"
  },
  "exchangeRate": 1.2345,
  "amountDueInHomeCurrency": "1234.56",
  "refNumber": "BILL-1234",
  "isPending": false,
  "terms": {
    "id": "80000001-1234567890",
    "fullName": "Net 30"
  },
  "memo": "Office supplies for September",
  "salesTaxCode": {
    "id": "80000001-1234567890",
    "fullName": "Non"
  },
  "isPaid": false,
  "externalId": "12345678-abcd-1234-abcd-1234567890ab",
  "linkedTransactions": [
    {
      "id": "123ABC-1234567890",
      "objectType": "qbd_linked_transaction",
      "transactionType": "invoice",
      "transactionDate": "2021-10-01T00:00:00.000Z",
      "refNumber": "LINK-1234",
      "linkType": "amount",
      "amount": "1000.00"
    }
  ],
  "expenseLines": [
    {
      "id": "456DEF-1234567890",
      "objectType": "qbd_expense_line",
      "account": {
        "id": "80000001-1234567890",
        "fullName": "Expenses:Office Supplies"
      },
      "amount": "1000.00",
      "memo": "New office chair",
      "payee": {
        "id": "80000001-1234567890",
        "fullName": "Acme Corporation"
      },
      "class": {
        "id": "80000001-1234567890",
        "fullName": "Office Supplies"
      },
      "salesTaxCode": {
        "id": "80000001-1234567890",
        "fullName": "Non"
      },
      "billingStatus": "billable",
      "salesRepresentative": {
        "id": "80000001-1234567890",
        "fullName": "Jane Doe"
      },
      "customFields": [
        {
          "ownerId": "0",
          "name": "Customer Rating",
          "type": "string_1024_type",
          "value": "Premium"
        }
      ]
    }
  ],
  "itemLines": [
    {
      "id": "456DEF-1234567890",
      "objectType": "qbd_item_line",
      "item": {
        "id": "80000001-1234567890",
        "fullName": "Widget A"
      },
      "inventorySite": {
        "id": "80000001-1234567890",
        "fullName": "Main Warehouse"
      },
      "inventorySiteLocation": {
        "id": "80000001-1234567890",
        "fullName": "Aisle 3, Shelf B"
      },
      "serialNumber": "SN1234567890",
      "lotNumber": "LOT2023-001",
      "expirationDate": "2025-12-31T00:00:00.000Z",
      "description": "High-quality widget with custom engraving",
      "quantity": 5,
      "unitOfMeasure": "Each",
      "overrideUnitOfMeasureSet": {
        "id": "80000001-1234567890",
        "fullName": "Volume Units"
      },
      "cost": "1000.00",
      "amount": "1000.00",
      "customer": {
        "id": "80000001-1234567890",
        "fullName": "Acme Corporation"
      },
      "class": {
        "id": "80000001-1234567890",
        "fullName": "Installation:Residential"
      },
      "salesTaxCode": {
        "id": "80000001-1234567890",
        "fullName": "Non"
      },
      "billingStatus": "billable",
      "salesRepresentative": {
        "id": "80000001-1234567890",
        "fullName": "Jane Doe"
      },
      "customFields": [
        {
          "ownerId": "0",
          "name": "Customer Rating",
          "type": "string_1024_type",
          "value": "Premium"
        }
      ]
    }
  ],
  "itemLineGroups": [
    {
      "id": "456DEF-1234567890",
      "objectType": "qbd_item_line_group",
      "itemGroup": {
        "id": "80000001-1234567890",
        "fullName": "Office Supplies Bundle"
      },
      "description": "Standard widget bulk package",
      "quantity": 5,
      "unitOfMeasure": "Each",
      "overrideUnitOfMeasureSet": {
        "id": "80000001-1234567890",
        "fullName": "Volume Units"
      },
      "totalAmount": "1000.00",
      "itemLines": [
        {
          "id": "456DEF-1234567890",
          "objectType": "qbd_item_line",
          "item": {
            "id": "80000001-1234567890",
            "fullName": "Widget A"
          },
          "inventorySite": {
            "id": "80000001-1234567890",
            "fullName": "Main Warehouse"
          },
          "inventorySiteLocation": {
            "id": "80000001-1234567890",
            "fullName": "Aisle 3, Shelf B"
          },
          "serialNumber": "SN1234567890",
          "lotNumber": "LOT2023-001",
          "expirationDate": "2025-12-31T00:00:00.000Z",
          "description": "High-quality widget with custom engraving",
          "quantity": 5,
          "unitOfMeasure": "Each",
          "overrideUnitOfMeasureSet": {
            "id": "80000001-1234567890",
            "fullName": "Volume Units"
          },
          "cost": "1000.00",
          "amount": "1000.00",
          "customer": {
            "id": "80000001-1234567890",
            "fullName": "Acme Corporation"
          },
          "class": {
            "id": "80000001-1234567890",
            "fullName": "Installation:Residential"
          },
          "salesTaxCode": {
            "id": "80000001-1234567890",
            "fullName": "Non"
          },
          "billingStatus": "billable",
          "salesRepresentative": {
            "id": "80000001-1234567890",
            "fullName": "Jane Doe"
          },
          "customFields": [
            {
              "ownerId": "0",
              "name": "Customer Rating",
              "type": "string_1024_type",
              "value": "Premium"
            }
          ]
        }
      ],
      "customFields": [
        {
          "ownerId": "0",
          "name": "Customer Rating",
          "type": "string_1024_type",
          "value": "Premium"
        }
      ]
    }
  ],
  "openAmount": "500.00",
  "customFields": [
    {
      "ownerId": "0",
      "name": "Customer Rating",
      "type": "string_1024_type",
      "value": "Premium"
    }
  ]
}

Authorizations

Authorization
string
header
required

Your Conductor secret key using Bearer auth (e.g., "Authorization: Bearer {{YOUR_SECRET_KEY}}").

Headers

Conductor-End-User-Id
string
required

The ID of the EndUser to receive this request (e.g., "Conductor-End-User-Id: {{END_USER_ID}}").

Path Parameters

id
string
required

The QuickBooks-assigned unique identifier of the bill to update.

Body

application/json
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.

payablesAccountId
string

The Accounts-Payable (A/P) account to which this bill is assigned, used to track the amount owed. If not specified, QuickBooks Desktop will use its default A/P account.

IMPORTANT: If this bill is linked to other transactions, this A/P account must match the payablesAccount used in those other transactions.

transactionDate
string

The date of this bill, in ISO 8601 format (YYYY-MM-DD).

dueDate
string

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.

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. If QuickBooks is not set up to charge sales tax (via the "Do You Charge Sales Tax?" preference), it will assign the default non-taxable code 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.

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.

itemLineGroups
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.

Response

200 - application/json
Returns the updated bill.
id
string
required

The unique identifier assigned by QuickBooks to this bill. This ID is unique across all transaction types.

objectType
string
required

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

Allowed value: "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). The time zone is the same as the user's time zone in QuickBooks.

updatedAt
string
required

The date and time when this bill was last updated, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm). The time zone is the same as the user's time zone in QuickBooks.

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
required

The vendor who sent this bill for goods or services purchased.

vendorAddress
object | null
required

The address of the vendor who sent this bill.

payablesAccount
object | null
required

The Accounts-Payable (A/P) account to which this bill is assigned, used to track the amount owed. If not specified, QuickBooks Desktop will use its default A/P account.

IMPORTANT: If this bill is linked to other transactions, this A/P account must match the payablesAccount used in those other transactions.

transactionDate
string
required

The date of this bill, in ISO 8601 format (YYYY-MM-DD).

dueDate
string | null
required

The date by which this bill must be paid, in ISO 8601 format (YYYY-MM-DD).

amountDue
string | null
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. It also equals openAmount plus any credits or discounts.

currency
object | null
required

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

exchangeRate
number | null
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 | null
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 | null
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 | null
required

Indicates whether this bill has not been completed or is in a draft version.

terms
object | null
required

The bill's payment terms, defining when payment is due and any applicable discounts.

memo
string | null
required

A memo or note for this bill that appears in the Accounts-Payable register and in reports that include this bill.

salesTaxCode
object | null
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. If QuickBooks is not set up to charge sales tax (via the "Do You Charge Sales Tax?" preference), it will assign the default non-taxable code to all sales.

isPaid
boolean | null
required

Indicates whether this bill has been paid in full. When true, openAmount will be 0.

externalId
string | null
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
object[]
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.

expenseLines
object[]
required

The bill's expense lines, each representing one line in this expense.

itemLines
object[]
required

The bill's item lines, each representing the purchase of a specific item or service.

itemLineGroups
object[]
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.

openAmount
string
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.

customFields
object[]
required

The custom fields for the bill object, added as user-defined data extensions, not included in the standard QuickBooks object.