If you’re a developer new to the Intuit Developer ecosystem, then we want to welcome you with a three-part blog series focused on how to use the QuickBooks Online API. This first post touches on the tools, resources, and best practices for our V3 APIs, which you can use to develop your QuickBooks Online app.
QuickBooks Online API: Getting Started
There are three easy steps to getting started with QuickBooks Online API. Before we go through them, here’s a list of the complete set of QuickBooks API resources.
Pictured: QuickBooks API resources.
Let’s now take a high-level look at the three steps to getting started.
Step 1: Create an Intuit Developer Account
Starting out, you have two options: sign up for a new account or you can sign in with any current Intuit product account (e.g. QuickBooks, TurboTax, Mint, or ProConnect). After you sign up (or in), Intuit Developer automatically creates a QuickBooks test company, which is called a sandbox company (more on sandboxes in a moment). You’ll then be able to start the app-building process.
Step 2: Create an app
It’s now time to begin creating your app, which will generate your development keys. After you’ve signed in, go to My apps and then Create an app. You’ll then select the Keys tab to locate your Client ID and Client Secret (this information is needed to generate an OAuth 2.0 access token).
Step 3: Get an OAuth 2.0 access token
For you to access QuickBooks Online data, your app will need an OAuth 2.0 Access Token. The simplest method of getting your access token is through the OAuth 2.0 playground, which you can access with your account, Client ID, and Client Secret information. Intuit Developer provides in-depth info on authentication.
You’ll be able to make your first API call once you’ve completed these steps. From there, you’ll be ready to build your first app.
Intuit Developer provides valuable developer tools for building your app. They include:
- OAuth playground: Location for getting your OAuth token so that your app can access QuickBooks Online APIs.
- Sandbox: A QuickBooks test company; it automatically fills in data so you don’t have to and allows you to immediately start using it. Developers can create up to 10 sandboxes.
- API Explorer: This tool allows you to try an API or make an API call without writing any code. It shows how your request and response will look like before the code is written.
- SDKs: QuickBooks SDKs (Software Development Kits) allow developers to create apps on the Intuit Developer platform. They’re the tools, documentation, codes samples, and processes they need to succeed and are open sourced and available on GitHub Intuit.
As a developer, you have the option to write your own code to make your API call or you can use our SDKs which will make the API call for you, taking a task off of your plate and and allowing you to focus on things such as the business logic for your app. We have fully supported SDKs (Java, .NET, and PHP); OAuth Library SDKs (Java, .NET, PHP, Python, Node.js, Ruby); and Third-Party SDKs (Node.js, Python, and Ruby).
- Sample code: We provide sample code and tutorials in seven languages to help you understand use cases and write code faster. Samples are available at GitHub Intuit Developer.
- Postman: Postman is a powerful HTTP client for testing the QuickBooks Online API by displaying requests and responses in manageable formats. We provide postman collection for all of our APIs.
Now that we’ve looked at the developer tools at your disposal, let’s move on to best practices, starting with webhooks.
Webhooks is a feature that allows you to get information in real time. You have two ways you can get information: 1) call the API or 2) subscribe to webhooks. Webhooks work somewhat like a push notification. Instead of having to call the API, the information is pushed to you, the developer. We consider it a best practice to rely on webhooks because it ensures that data is in-sync and eliminates polling APIs, which is an inefficient method of getting information.
From there, we move on to Batch operations. There are times when an app needs to make several different operations simultaneously. You could send multiple requests one after the other, but this is time consuming. The better option is using our Batch endpoint, where you can group several operations in one call and send it in a single HTTP request. The benefits include reducing network overhead, optimizing calls to the server, and improving scalability.
The next best practice is regarding throttle limits. We set these limits to prevent rogue apps from bringing down our system. As a developer developing an app for QuickBooks users, you will need to know and adhere to these throttle limits:
- 10 concurrent requests per second per realmId
- 500 requests per min per realmId
- 40 batch requests/min per realmId, 10 payloads per batch request
Finally, a Best Practice involves being resilient, or handling the unexpected. No matter how good the system is, downtime happens. You, as a developer, need to be prepared. You also need to retry transactions instead of skipping. If there’s been an error (e.g. your request was wrong), then you should notify your users and have potential ways to fix them. And if you have a call fail, we recommend retrying using the “requestid” request parameter to guarantee idempotency.
QuickBooks Online API: Moving Forward
Your journey has just begun. From developing for QuickBooks Online to learning accounting concepts, and from going live with your app to publishing to the QuickBooks Online App Store, you’re ready to move forward. The Intuit Developer community is ready to support you along the way.
If you have any questions about what we’ve shared today, please contact us. You can also visit Intuit Developer Get Started for the complete, step-by-step process.
Don’t forget to check back with our Intuit Developer Blog for updated news, features, and tips, such as how to connect your app to the right customers and why fundraising is important. And stay tuned for our next post in our series, How chata.ai Built Their App Using the QuickBooks Online API!
Leave a Reply