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.
Versions and qbXML
Section titled “Versions and qbXML”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).
Editions
Section titled “Editions”| 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.
Advanced Inventory
Section titled “Advanced Inventory”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.
Multicurrency
Section titled “Multicurrency”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
exchangeRateand home-currency amounts such asbalanceRemainingInHomeCurrency. GET /v1/quickbooks-desktop/currencieslists the currencies and their rates.- Filters such as
currencyIdsnarrow 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.
Units of measure
Section titled “Units of measure”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.
Sales tax
Section titled “Sales tax”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
Section titled “Payroll”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.
Personal data
Section titled “Personal data”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.
QuickBooks user permissions
Section titled “QuickBooks user permissions”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.