The QuickBooks Online Accounting API uses the REST framework. Generally, our API lets you access and build apps that can use most customer-facing features in QuickBooks Online.
In this guide, we’ll cover how our API works and what resources, operations, and features your app can utilize. If you’re looking for accounting info, here’s an overview of basic accounting in QuickBooks Online.
Tip: This guide covers QuickBooks Online and its API. It doesn’t include the API for payments processing, or other products like QuickBooks Desktop.
The QuickBooks Online Accounting API lets your apps utilize key features and data points in QuickBooks Online.
Individual API entities correspond with forms, lists, and other resources in the customer-facing QuickBooks Online UI. For instance, apps can call the invoice entity to create, read, or send invoices in your connected users’ QuickBooks Online companies.
This model shows some general “list” entities and how they relate to customer-facing accounting tasks like transactions, journal entries, and transfers:
When you start building your app, decide generally what you want it to do. Then, pick the specific API entities needed to use the relevant features and data.
Visit the API Explorer to learn more about specific entities.
If you don’t want to start from scratch, you can build your app around one of workflow examples. You can use these guides as a basic foundation for your app and expand on it.
By “resources,” we mean the API entities your app can use to create or update data in QuickBooks Online. These entities correspond to data points businesses use to do their accounting in QuickBooks Online, like forms (invoices, bills receipts), accounts (bank, expense, tax, etc) or groups (lists, inventory items, etc).
Since they’re related, we may refer to both the API entity and related customer-facing data point as a “resource.”
Most API entity names are based on common accounting terms. However, we may refer to them or categorize them in ways that are unique to QuickBooks. Here are key customer-facing concepts and the corresponding API:
List entities/resources: Lists used to track individuals or accounts commonly referenced in transactions. Note: We sometimes call list resources these “name lists.”
Transaction entities/resources: Sales forms used for transactions.
Reports entities/resources: Reports used to track business metrics.
Inventory entities/resources: Inventory items and inventory management.
Journal entry: A type of record that accountants use to make corrections or major changes to a chart of accounts, such year-end adjustments or errors. Use this sparingly.
Besides standard CRUD operations, the QuickBooks Online Accounting API has a few unique operations:
Send a single request. The server individually processes and responds to single requests.
Send a query via the Intuit Developer SQL-like query language. The server returns data in a single response, or paged as needed.
Call multiple API entities and perform multiple operations at once. For example, you can use a single batch request to create a new customer, update an invoice, and read an account.
Batch requests improve app performance by decreasing network round trips and increasing throughput. Learn more about batch operations.
Return a list of entities that have changed within a specific timeframe.
Change data capture operations are useful for apps that periodically poll QuickBooks Online companies and then refresh local copies of entity data. Learn more about the change data capture operation.
There are two ways to update entities:
You must serially perform updates and additions to list entities (customers, accounts, vendors, classes etc).
Why use sparse updates instead of full updates
Here are a few reasons to use sparse update:
Sparse update operations let you update specific fields of an existing entity.
Specify the writable properties you want to update in the request body. Nothing else gets updated. Missing attributes also aren’t updated or cleared (in contrast to a full update).
In the request body, you must include the
Use sparse updates to clear fields
Full update operations update all writable attributes of an existing entity.
If a writable attribute is omitted or missing from the request body, full updates clear the field’s value and set it to NULL.
In the request body, use the Id field to specify the entity you want to update.
There are two ways to delete entities:
Certain API entities only allow certain delete operations. We note the supported delete operations for individual entities in the API Explorer.
Soft deletes simply mark an entity as inactive. It doesn’t delete the record. Instead, it’s hidden for display purposes. References to inactive entities remain intact.
You can only soft delete list (invoices, estimates, purchase orders, sales receipts, etc) entities. When you create a new list entity, it starts in an “active” state.
To do a soft delete, use one of the update operations. Set the value for the ``Active1` field to false in the request. This makes the entity inactive. To make it active again, do another update and set the value back to true. Note: If you query and don’t use a filter for “inactive” entities, the server only returns results for “active” entities.
Hard deletes permanently change data. It deletes the entire entity. Once you do a hard delete, you can’t undo it.
You can only hard delete transaction entities.
There are two ways to structure hard delete requests. The method depends on the type of entity you want to delete:
SyncTokenin the request body.
Learn more about common operations for the QuickBooks Online API.
As you develop your app, you’ll encounter many accounting concepts. Even if you have an accounting background, there are some accounting workflows and concepts that behave in ways that are unique to QuickBooks Online.
We recommend you check out our overview of basic accounting and QuickBooks-specific accounting workflows.