Back

QuickBooks API Essential Guide

Aug 3, 20246 minute read

What type of API does QuickBooks provide?

REST API:

  • QuickBooks Online Accounting API is based on the REST framework.
  • It uses JSON or XML as the data format.
  • Supports common HTTP methods like GET, POST, etc. for operations.

GraphQL API:

  • Intuit Developer has rolled out a GraphQL API for Payroll.
  • Allows clients to request exactly the data they need in a single request.
  • Eliminates over-fetching and under-fetching of data.

SOAP API:

  • QuickBooks Desktop uses a SOAP-based API for integration with the QuickBooks Web Connector.
  • Based on XML and follows a strict set of rules.

Does the QuickBooks API have webhooks?

Yes, the official QuickBooks API does have webhooks. Here are the key points about QuickBooks webhooks:

Webhook Support

  • QuickBooks offers webhooks to notify developer applications about changes to QuickBooks entities.

  • Webhooks allow you to be notified when certain events occur in a customer's QuickBooks company file, without having to constantly poll the API.

Supported Entities and Operations

  • QuickBooks supports webhooks for various entities like Customer, Invoice, Vendor, etc. The full list of supported entities is available in the official documentation.

  • The supported webhook operations are:

    • Create
    • Update
    • Delete
    • Merge (only available for certain entities)

Webhook Notifications

  • Webhook notifications are sent as POST requests with a JSON payload.

  • The notification includes details like:

    • Entity name (e.g. Customer, Invoice)
    • Entity ID
    • Operation type (Create, Update, etc.)
    • Timestamp of the change

Configuration and Best Practices

  • Developers can configure which entities and operations they want to receive notifications for.

  • Webhook notifications are aggregated and sent periodically, not in real-time. The default interval was 5 minutes, but it can now be configured.

  • Best practices include:

    • Using HTTPS for the webhook endpoint
    • Responding to notifications quickly (within 3 seconds)
    • Processing notifications asynchronously
    • Implementing error handling and retries

Key Considerations

  • Webhooks are only sent for events occurring after an app is connected to a QuickBooks company.

  • To handle potential missed events, it's recommended to also use the ChangeDataCapture API periodically.

  • Webhook support is available for both QuickBooks Online sandbox and production environments.

In summary, QuickBooks webhooks provide a powerful way for developers to stay updated on changes in connected QuickBooks companies, supporting a wide range of entities and operations.

Rate Limits and other limitations

Here are the key points about the API Rate Limits of the QuickBooks API:

Rate Limit Details

  • QuickBooks Online implements fixed-window rate limiting to ensure fair usage among users [1].

  • The API allows 500 requests per minute for each realm ID for requests made to the QuickBooks Online API endpoints [1].

  • For other endpoints, the API limits requests after a combined 500 requests per minute across all realms (endpoints) or 500 requests per minute to a single endpoint, whichever occurs first [1].

Rate Limit Implementation

  • The platform tracks the number of requests users make using their realm ID [1].

  • When a client exceeds the rate limit, the API typically responds with a 429 "Too Many Requests" status code [1].

Considerations for Developers

  • It's important to study the API documentation to understand the specific rate-limiting rules, as limits can vary between different API endpoints [1].

  • Developers should monitor their request frequency and implement strategies to stay within the limits, such as using HTTP headers to track rate limit status [1].

  • When consistently hitting rate limits, it may be necessary to renegotiate limits with the API provider or optimize request strategies [1].

Additional Information

  • QuickBooks provides sandbox environments for testing in different regions (UK, US, Canada, France, Australia, and India) [5].

  • The production API requires more detailed information and a security assessment before granting access [5].

  • The API can sometimes return 401 errors that aren't genuine authorization issues, particularly when rate limits are exceeded [5].

By understanding and adhering to these rate limits, developers can ensure their applications interact efficiently with the QuickBooks API while maintaining compliance with the platform's usage policies.

Latest API Version

Based on the search results provided, here is the most up-to-date information about the QuickBooks API versions:

Most Recent Version

The most recent minor version of the QuickBooks Online API is version 70, which was released in December 2023.

Key Points

  • QuickBooks Online API uses a system of "minor versions" to make incremental changes while maintaining backwards compatibility.

  • The latest SDK versions automatically give you access to the most recent API features and all prior versions.

  • If you're not using an SDK, you can manually specify the minor version in your API requests.

  • The current version of the QuickBooks Desktop SDK is 16.0, which supports 64-bit SDK.

Additional Information

  • There have been ongoing updates to the API, with minor versions released periodically. For example, minor version 54 was released in August 2020.

  • The QuickBooks Payments API has its own release notes, with the most recent mentioned update being from June 1, 2019.

  • There is currently no Projects API for QuickBooks Online, but it is on the roadmap. A comment from a month ago suggests it might be released later in 2024, but there's no official confirmation or definite ETA.

  • Some developers have expressed frustration with the lack of certain features, such as support for tags through the API.

Best Practices

  • When using the API, it's recommended to work with only one minor version at a time to avoid schema conflicts.

  • If you're using an SDK, keep it updated to take advantage of new features and version support.

  • For the most up-to-date information on API changes and new features, regularly check the official QuickBooks developer documentation and release notes.

How to get a QuickBooks developer account and API Keys?

To get a developer account for QuickBooks to create an API integration, you need to follow these steps:

1. Create an Intuit Developer account

To create your Intuit Developer account:

  • Go to the Intuit Developer website
  • Click on "Sign up" in the menu bar
  • Fill out the "Create your account" form with your information
  • Click "Create Account"

2. Set up your account profile

After creating your account:

  • Navigate to "Account Profile" in the developer portal
  • Provide additional details to complete your profile
  • Click "Submit"

3. Create a new app

To start developing your QuickBooks API integration:

  • Go to the "Apps dashboard" in the developer portal
  • Click on "Create an app"

What can you do with the QuickBooks API?

Based on the search results provided, here's a list of data models you can interact with using the QuickBooks 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
  • 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 API

Accounts

  • Represent the company's chart of accounts
  • Possible operations:
    • Map QuickBooks company chart of accounts to your app's accounts
    • Access accounts via the Account object list

Inventory

  • Represent items the company sells or buys
  • Possible operations:
    • Manage product inventory
    • Add individual inventory items as Item objects
    • Track quantity on hand
    • Manage categories up to four levels
    • Set taxable status of items
    • Manage price and cost of items

Event Notification

  • Subscribe to various events and receive notifications for certain QuickBooks activities
  • Example: Get notified when a customer is added or modified

QuickBooks UI Integration

  • Place menu items within certain QuickBooks pulldown menus
  • Display and pre-fill certain QuickBooks forms

It's important to note that the specific operations and data models available may vary depending on the version of QuickBooks and the API specification supported. Developers should check the release notes and use version-checking methods to ensure compatibility with different QuickBooks versions.