The QuickBooks Payments API uses the REST framework. It uses standard HTTP methods and JSON for input and output.
Generally, our APIs let apps process payments, refund charges, and manage credit cards and bank accounts.
In this guide, we’ll cover how our API works and what resources, operations, and features we support.
Tip: This guide only covers QuickBooks Payments and its APIs.
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 QuickBooks Payments 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. Here are key customer-facing concepts and the corresponding API:
Charges: Allows your app to send and receive payments, and process refunds, using credit cards.
Tokens: An opaque container that holds a cardholder’s credit card or bank account info.
Bank accounts: Allows your app to process payments using bank accounts.
Cards: Allows your app to store and manage credit card info for future payments.
EChecks: Allows your app to process payments using electronic checks.
Visit the QuickBooks Payments API Explorer to see the operations each entity supports. Besides standard CRUD operations, our API has a few unique operations:
There are two ways to update entities:
Keep in mind, you must serially perform updates and additions to list entities (customers, accounts, vendors, classes etc).
Use sparse updates instead of full updates
There are several advantages to sparse updates.
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 sparse="true"
attribute.
Using 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.
end-userReferences to inactive entities remain intact.
You can only soft delete list (customers, vendors, accounts, etc.) entities.
When you create a new object, it starts in an “active” state. To do a soft delete, use one of the update operations. Set the value of the active
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 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 (invoices, estimates, purchase orders, sales receipts, etc) entities.
There are two ways to structure hard delete requests:
id
and syncToken
in the request body.As you develop your app, you’ll encounter many accounting concepts. Even if you have an accounting background, there are some workflows and concepts that are unique to QuickBooks Online.
We recommend you check out our overview of basic accounting and QuickBooks-specific accounting use cases.