Accounting & ERP
QuickBooks Desktop is a desktop accounting and financial management software used by Construction firms. Using Agave, you can integrate with QuickBooks Desktop and dozens of other systems in hours using a single API.
Note: Agave only supports the US version at the moment, with CA/UK upon request.
Customer Management | Read | Write |
---|---|---|
customers | ||
Financials Management | Read | Write |
AP invoices (Bills / Vendor Credits) | ||
AP payments (Bill Payments) | ||
AR invoices (Invoices) | ||
AR payments (Invoice Payments) | ||
bank accounts | ||
employees | ||
estimates | ||
expenses | ||
items | ||
job costs | ||
ledger accounts |
Available via Passthrough |
|
purchase orders | ||
tax codes |
Available via Passthrough |
Available via Passthrough |
timecard entries (Time Activities) | ||
Project Management | Read | Write |
vendors | ||
Passthrough Requests | Read | Write |
More QuickBooks Desktop endpoints (without unified model) |
Agave has sandbox environments with sample data that you can use instead of spending time creating your own.
Agave provides unified models and access to source data. In addition, we even support passthrough requests, so you are never blocked by us.
curl https://api.agaveapi.com/vendors \
# 3 headers that are consisttent
-H 'Api-Version: 2021-11-21' \
-H 'Client-Id: your-client-id' \
-H 'Client-Secret: your-client-secret' \
# Change the account token to request data from different accounts and different systems
-H 'Account-Token: quickbooks-desktop-example-account-token'
Consistent schema across all systems
{
"id": "ee9b53e7-f982-4be6-bc12-75f716d3ee94",
"source_id": "12345",
"address": {},
"alternate_name": "AnyCompany",
"email": "contact@agaveapi.com",
"fax": "(123) 555-0100",
"name": "AnyCompany Inc.",
"phone": "(123) 555-0100",
"status": "Active",
"tax_number": "987654321",
"website": "https://www.agaveapi.com/",
"source_create_time": "2022-01-01T00:00:00Z",
"source_update_time": "2022-01-01T00:00:00Z"
}
Get raw output from QuickBooks Desktop
{
"ListID": "610000-1026258379",
"TimeCreated": "2002-07-09T16:46:19-08:00",
"TimeModified": "2025-12-15T02:01:20-08:00",
"EditSequence": "1765792880",
"Name": "AAA Tech Consultants",
"IsActive": "true",
"CompanyName": "AAA Tech Consultants",
"FirstName": "Mike",
"LastName": "Balak",
"VendorAddress": {...},
"VendorAddressBlock": {...},
...
}
Option to call QuickBooks Desktop APIs directly
curl --request POST https://api.agaveapi.com/passthrough \
--header 'API-Version: 2021-11-21' \
--header 'Client-Id: your-client-id' \
--header 'Client-Secret: your-client-secret' \
--header 'Account-Token: quickbooks-desktop-account-token' \
--header 'Content-Type: application/json' \
--data-raw '{
"method": "GET",
"path": "/rest/v1.0/vendors,
"data": {}
}'
At a high-level, we wrap QBD in a synchronous RESTful API that returns JSON formatted data. This means you can call Agave’s unified API request paths to read and write data to your customer’s QBD, just like you’re interacting with a cloud-based system through Agave. This saves you from working with QBD’s SOAP interface, XML-formatted data, and on-prem connection details.
We process the requests you submit to our API and pass them to the end-users QBD instance, which is running locally on their computer. Just like our other integrations, we return data from the QBD account in our unified JSON format and raw data in our source data object.
We attempt to sync data every 15 seconds. If the QBD account is offline, we abort the request and inform you that the QBD account is offline. This way, your request either succeeds or fails in a synchronous request - there is no need to poll us to get the result.
Your end-users can also sync data manually any time using the QuickBooks Web Connector, shown here.
QuickBooks Desktop is an on-prem integration, running on a customer’s desktop machine instead of a server. This machine is not running on the public Internet, so it is not directly accessible by outsiders. As a result, Agave cannot initiate an HTTP request to the customer’s QuickBooks Desktop and the request must originate from the customer’s machine.
Our QuickBooks Desktop integration is set up to send a “ping” request from the customer’s machine to Agave’s servers every 15 seconds to check for new commands to execute. Checking for new requests more frequently would slow down the customer’s machine, due to how Intuit has designed the QuickBooks Web Connector agent.
We batch multiple queries together, and perform other optimizations, to reduce the delay as much as possible. On average, you should expect your requests to return in about 12 seconds (8 seconds on average for the "ping" + 4 seconds for processing by QuickBooks Desktop). Some operations, like listing, that require paginating through several pages, would take longer.
Setting-up the QBD integration is similar to setting up Agave integrations with other systems. You can follow our Quickstart Guide to get started and use our QBD sandbox to test requests.
Your end user only needs to install an agent provided by Intuit and add Agave's configuration file to it.
You can see these steps in detail here.
We return errors using our standard response codes shown here.
If your customer’s QBD account is offline when you call it, you receive an error message indicating this and showing the last time the account was online.