Back

QuickBooks Desktop API Essential Guide

Aug 9, 20246 minute read

What type of API does QuickBooks Desktop provide?

QuickBooks Desktop API Type

  • QuickBooks Desktop uses a SOAP-based API, not REST.

  • The QuickBooks Desktop API uses Windows COM objects which exchange XML, possibly wrapped in SOAP via the QuickBooks Web Connector.

Key Differences from QuickBooks Online API

  • QuickBooks Online uses a REST API, while Desktop uses SOAP.

  • The APIs differ significantly in field names, protocol, data types, objects supported, etc.

Web Connector

  • The QuickBooks Web Connector is used for QuickBooks Desktop only, not for QuickBooks Online.

REST API for Desktop

  • QuickBooks Desktop does not natively have a REST API.

  • Some third-party applications provide REST API interfaces on top of QuickBooks Desktop, but these are not official Intuit products.

Alternatives for REST-like Access

  • Some users have looked into third-party solutions like Method CRM to get REST API-like access to QuickBooks Desktop data.

  • Intuit recommends checking their App Store for potential third-party integrations that might provide REST-like interfaces.

Does the QuickBooks Desktop API have webhooks?

The official QuickBooks API does have webhooks, but they are specifically for QuickBooks Online (QBO), not QuickBooks Desktop.

Webhooks for QuickBooks Online allow developers to receive notifications about changes to QuickBooks entities in connected company files. The types of events you can subscribe to include create, update, delete, and merge (only available for certain entities).

QuickBooks entities that support webhooks include customer, invoice, vendor, payment, and bill, among others.

The webhook notifications are sent as POST requests with a JSON payload containing information such as the name (entity type that changed), id (changed entity's ID), operation (type of change), lastUpdated (timestamp), and deletedId (for Merge events only).

To use webhooks, developers need to set up OAuth 2.0 for authentication, configure webhook endpoints for their app, and validate webhook notifications using a verifier token. There are separate webhook configurations for production apps and sandbox/testing environments.

Best practices for implementing webhooks include responding promptly, managing concurrency, and being aware of the retry policy.

Rate Limits and other limitations

Based on the search results provided, I can answer your question about the API Rate Limits of the QuickBooks Desktop API. However, it's important to note that most of the information in the search results pertains to QuickBooks Online API rather than QuickBooks Desktop API. With that in mind, here's what we know:

API Rate Limits

  1. The search results do not provide specific information about QuickBooks Desktop API rate limits.

  2. For QuickBooks Online API, the following limits are mentioned:

    • 500 requests per minute, per realm ID
    • 10 concurrent requests per realm ID and app
    • Throttled at 40 requests per minute, per realm ID (for certain endpoints)
  3. The recommended maximum number of payloads in a single batch request is 30.

Key Points to Consider

  1. The information provided is primarily for QuickBooks Online API, not Desktop API.

  2. Rate limits are typically implemented to prevent overloading of the server and ensure fair usage among all users.

  3. Different endpoints or types of requests may have different rate limits.

Best Practices

  1. Implement proper error handling in your code to deal with rate limit errors.

  2. Consider implementing a queuing system or rate limiting on your end to stay within the API limits.

  3. Use batch requests where possible to reduce the number of individual API calls.

  4. Monitor your API usage to ensure you're not approaching the limits.

  5. If you need higher limits, consider contacting QuickBooks support for enterprise-level solutions.

Additional Information

  1. For QuickBooks Online API, the maximum number of entities that can be returned in a response is 1,000. If the result size isn't specified, the default number is 100.

  2. Webhooks can be used as a push model for data change events to replace periodic polling, which can help manage API usage.

It's important to note that the specific rate limits for QuickBooks Desktop API are not provided in the search results. If you need accurate information about QuickBooks Desktop API rate limits, I recommend contacting QuickBooks Developer Support directly or checking the official QuickBooks Desktop API documentation.

Latest API Version

The most recent version of the QuickBooks Desktop API is version 16.0. This information comes directly from the official Intuit Developer documentation [1].

Key points to consider:

  • The current version of the Desktop SDK (Software Development Kit) is 16.0, which supports 64-bit SDK [1].
  • Version 16.0 supports QuickBooks Desktop 2002 and later, including QuickBooks 2023 (R3 and above) and QuickBooks Desktop Enterprise Solutions [1].
  • There are two installer options available:
    1. Desktop SDK 16.0 Installer 64-bit (recommended)
    2. Desktop SDK 16.0 Installer 32-bit [1]

Additional information:

  • The Desktop SDK 16.0 installer is approximately 240 MB in size [1].
  • To download the SDK, you must be logged into your Intuit Developer account [1].
  • If you previously installed a Beta release, it's recommended to uninstall it before installing Desktop SDK 16.0 [1].
  • For developers looking for detailed API reference, Intuit provides documentation on qbXML messages for QuickBooks Desktop [4].

Best practices:

  1. Always use the latest version of the SDK to ensure compatibility with the most recent QuickBooks Desktop releases.
  2. If you're developing a new application, consider using the 64-bit version of the SDK for better performance and future-proofing.
  3. Regularly check the Intuit Developer website for updates, new features, and compatibility information.
  4. Familiarize yourself with the qbXML messages and API reference to make the most of the QuickBooks Desktop API capabilities.

By using the most recent version of the QuickBooks Desktop API, you'll have access to the latest features and ensure compatibility with current QuickBooks Desktop releases.

How to get a QuickBooks Desktop developer account and API Keys?

  1. Create an Intuit Developer account:

    • Go to the Intuit Developer portal (developer.intuit.com)
    • Click "Sign up" and fill out the account creation form
    • Verify your email and complete your account profile
  2. Create a new app in your developer account:

    • Navigate to the Apps dashboard
    • Click "Create an app"
    • This will provide you with client ID and secret credentials needed for authentication
  3. Set up your development environment:

    • Install the SDK
    • Review sample code and documentation
    • Use the SDKTestPlus3 tool to test basic SDK functionality

What can you do with the QuickBooks Desktop API?

Based on the search results provided, here is a list of data models that can be interacted with using the QuickBooks Desktop API, along with what is possible for each:

List Objects

  • Correspond to various lists a company maintains to run its business
  • Examples include:
    • Customer
    • Vendor
    • Item
    • Account
    • Employee
  • Possible operations:
    • Add new list objects
    • Query existing list objects
    • Modify existing list objects
    • Delete existing list objects

Transaction Objects

  • Correspond to activities related to sales and expenses
  • Examples include:
    • Invoice
    • Sales Receipt
    • Bill
    • Bill Payment
  • Possible operations:
    • Add new transaction objects
    • Query existing transaction objects
    • Modify existing transaction objects
    • Void existing transaction objects
    • Delete existing transaction objects

Query Objects

  • Correspond to activities related to searching for information in QuickBooks Desktop
  • Possible operations:
    • Build and send queries using available filters
    • Retrieve results in one response or paged as needed

Report Objects

  • Correspond to activities related to generating reports
  • Examples include:
    • Profit and Loss statements
    • General Ledger detail reports
  • Possible operations:
    • Generate reports with optional customizations

Company Settings

  • Define attributes about the QuickBooks company
  • Possible operations:
    • Access company settings via PreferencesQuery request
    • Limited ability to change settings via the SDK

Accounts

  • Represent the chart of accounts for the company
  • Classifications include:
    • Asset
    • Liability
    • Equity
    • Expense
    • Income
  • Possible operations:
    • Access the company's chart of accounts via the Account object list

Inventory

  • Represents things the QuickBooks company sells and buys
  • Possible operations:
    • Manage product inventory
    • Track quantity on hand
    • Manage categories up to four levels
    • Set taxable status of items
    • Manage price and cost of items

Summary

The QuickBooks Desktop API allows interaction with various data models, including list objects, transaction objects, query objects, and report objects. It provides capabilities for adding, querying, modifying, and deleting data, as well as generating reports and managing company settings. The API closely mirrors the functionality available in the QuickBooks Desktop user interface, allowing developers to create integrated solutions for small business accounting needs.