Import QuickBooks Data to Google Sheets
In this guide, we’ll walk through how to pull QuickBooks data data directly into Google Sheets, using the API Connector add-on for Sheets. Intuit QuickBooks is, of course, a well-known accounting software package. The QuickBooks API only supports authentication via OAuth2, so we’ll be connecting using API Connector’s built-in OAuth2 integration for QuickBooks (this is a paid feature, please install API Connector for a free 7-day trial or upgrade to access).
CONTENTS
- Before You Begin
- Part 1: Connect to the QuickBooks API
- Part 2: Create your QuickBooks API Request URL
- Part 3: Pull QuickBooks API Data into Sheets
- Part 4: More Example API URLs
- Part 5: Handle Pagination
BEFORE YOU BEGIN
Click here to install the API Connector add-on from the Google Marketplace.
PART 1: CONNECT TO THE QUICKBOOKS API
If you haven’t connected API Connector to QuickBooks before, you’ll first need to initiate the connection as follows:
- Open up Google Sheets and click Add-ons > API Connector > Manage Connections.
- In the list of available connections, find QuickBooks and click Connect.
- You will be directed to Intuit.com and asked to sign in, if you haven’t already. You’ll then be returned to your Google Sheet, and can verify that your QuickBooks connection is active in the Connections screen.
PART 2: CREATE YOUR QUICKBOOKS API REQUEST URL
For our first request, we’ll get some basic information about your QuickBooks account.
- API root: https://quickbooks.api.intuit.com
- Endpoint: /v3/company/YOUR_COMPANY_ID/companyinfo/YOUR_COMPANY_ID
To get your company ID, click the Gear icon in the top right corner of your navigation bar while logged into QuickBooks, and navigate to Billing and Subscriptions. You’ll see your company ID listed at the top:
Putting it all together, we get the full API Request URL. Note that you enter your company ID twice:
https://quickbooks.api.intuit.com/v3/company/YOUR_COMPANY_ID/companyinfo/YOUR_COMPANY_ID
PART 3: PULL QUICKBOOKS API DATA INTO SHEETS
Now let’s add this URL into API Connector and import QuickBooks data into Google Sheets!
- Back in the Create Request interface, enter the Request URL we created above.
- In the Headers section, enter the following sets of key-value pairs:
accept application/json content-type application/json - Under Authentication, choose QuickBooks from the dropdown menu.
- Create a new tab and click ‘Set current’ to use that tab as your data destination.
- Name your request and click Run. A moment later you’ll see some information about your company populate your sheet.
PART 4: MORE EXAMPLE API URLS
The QuickBooks API uses a query language similar to SQL. You can access the full API documentation here, but only the “query” endpoint responses work well with Sheets. Therefore, it’s recommended to start with the following examples. Try the following URLs (one at a time), substituting in actual values where indicated.
- Chart of Accounts
https://quickbooks.api.intuit.com/v3/company/YOUR_COMPANY_ID/query?query=select * from Account
- Bills
https://quickbooks.api.intuit.com/v3/company/YOUR_COMPANY_ID/query?query=select * from Bill
- Customers
https://quickbooks.api.intuit.com/v3/company/YOUR_COMPANY_ID/query?query=select * from Customer
- Employees
https://quickbooks.api.intuit.com/v3/company/YOUR_COMPANY_ID/query?query=select * from Employee
- Invoices
https://quickbooks.api.intuit.com/v3/company/YOUR_COMPANY_ID/query?query=select * from Invoice
- Items
https://quickbooks.api.intuit.com/v3/company/YOUR_COMPANY_ID/query?query=select * from Item
- Payments
https://quickbooks.api.intuit.com/v3/company/YOUR_COMPANY_ID/query?query=select * from Payment
- Vendors
https://quickbooks.api.intuit.com/v3/company/YOUR_COMPANY_ID/query?query=select * from Vendor

PART 5: HANDLE PAGINATION
By default, QuickBooks will only return 100 records at a time, as described in their documentation.
To get more, use the STARTPOSITION and MAXRESULTS parameters as shown below. MAXRESULTS accepts any number up to 1000.
How do you resolve Error 403?
message=AuthorizationFailed; errorCode=003100; statusCode=403
Can you please double-check that you have access to the account you’re querying? That’s the only way I can produce a 403 error in my own tests. If you still have issues, please message support with a link to your sheet or screenshot of your request setup.