Skip to content
Desktop Accounting API

Editions, versions and features

The same API call can behave differently in two company files. The QuickBooks edition, its version and the company’s own preferences decide which features exist. This page explains how the API handles those differences, so a missing feature produces a clear error instead of a confusing one.

Each QuickBooks Desktop release supports a range of qbXML versions, the language the API speaks to it. The first session with a company file records the newest version both sides support (for example 16.0 for QuickBooks 2023 and later), shown as qbxmlVersion on the connection and on every request.

Some fields and operations need a newer qbXML version than older QuickBooks releases offer. The API reference marks them with their minimum version. Sending such a field to an older QuickBooks returns 422 QBD_FIELD_UNSUPPORTED_BY_VERSION with details.minimumQbxmlVersion, before anything is sent. QuickBooks releases older than qbXML 13.0 are not supported at all (QBD_VERSION_UNSUPPORTED).

Edition Supported Notes
QuickBooks Desktop Enterprise Solutions, all industry editions Yes, releases with qbXML 13.0 or newer The broadest feature set: Advanced Inventory, Advanced Pricing, more users and larger lists
QuickBooks Desktop Premier and Accountant, including Plus Yes, 2018 and later No Advanced Inventory
QuickBooks Desktop Pro, including Plus Yes, 2018 and later Fewer features, for example no sales orders and no per-item price levels
Non-US editions (Canada, UK, Australia) No Returns QBD_REGION_UNSUPPORTED

When a feature does not exist in an edition, or is turned off in the company’s preferences, QuickBooks rejects the request and the API returns 422 QBD_FEATURE_NOT_ENABLED (qbXML status 3250) with the reason. Read company settings up front with GET /v1/quickbooks-desktop/preferences to adapt your UI, rather than discovering missing features through errors.

Inventory sites (/v1/quickbooks-desktop/inventory-sites), item sites (/v1/quickbooks-desktop/item-sites), site fields on lines (inventorySiteId, inventorySiteLocationId), and serial and lot numbers need QuickBooks Enterprise with an Advanced Inventory subscription, turned on in the company file. Without it, those operations and fields return QBD_FEATURE_NOT_ENABLED. Leave site fields out for companies that do not use Advanced Inventory.

When the company turns on multicurrency in its preferences:

  • Customers, vendors and accounts have a currency, which cannot change once transactions exist.
  • Transactions for foreign-currency customers and vendors are in that currency, with an exchangeRate and home-currency amounts such as balanceRemainingInHomeCurrency.
  • GET /v1/quickbooks-desktop/currencies lists the currencies and their rates.
  • Filters such as currencyIds narrow lists by currency.

Amounts in a transaction are always in that transaction’s currency. Multicurrency cannot be turned off again once enabled, so do not suggest that customers enable it just for your integration.

Companies with unit of measure sets turned on can sell and buy items in different units. Lines carry unitOfMeasure, and overrideUnitOfMeasureSet where a line uses a different set. Unit of measure sets are available in Premier, Accountant and Enterprise.

US companies track sales tax with sales tax items, sales tax group items and sales tax codes. A customer or line’s salesTaxCode decides whether it is taxable; the salesTaxItem decides the rate and the agency. Pay sales tax with sales tax payment checks; QuickBooks cannot void those through qbXML, so delete them instead (see documented incompatibilities).

Payroll wage items and the payroll reports reflect QuickBooks’ payroll setup. Companies without QuickBooks payroll return empty lists or QuickBooks errors for payroll reports. The API does not run payroll or create paychecks.

QuickBooks keeps some fields behind an extra permission: Social Security numbers and full credit card numbers. Our connector does not ask for that permission, so those fields are never returned, and QuickBooks does not show the end user a request for sensitive data during setup.

Payroll reports (/v1/quickbooks-desktop/reports/payroll-summary and payroll-detail) sit behind the same permission. Without it, QuickBooks rejects them with status 3261 and the API returns 403 QBD_INSUFFICIENT_PERMISSION, whose fixes tell the QuickBooks Admin how to allow personal-data access for the app under Edit › Preferences › Integrated Applications. See The QuickBooks user lacks permission.

Requests run as the QuickBooks user chosen during setup (Login as). If that user’s role lacks access to an area, such as payroll or banking, QuickBooks rejects the request with 403 QBD_INSUFFICIENT_PERMISSION (status 3260). Use the Admin user or a dedicated user with full access. See Create a dedicated QuickBooks user.