QuickBooks Accounting (Sandbox/Production Plugin)

Demo to preview the settings

For Sandbox version see plugin setup below:

Introduction

This plugin connects your Quickbooks account with your bubble application, so you will be allowed to create new accounts, grant access privileges, and manage your Quickbooks data, so you and your team can easily log in and work with it directly from your app.

Prerequisites

You will need a developer account with Quickbooks in order to interact with the Plugin: https://developer.intuit.com/app/developer/qbo/docs/get-started
Note: The documentation provides info for both Development and Production setup. Use both plugin versions for both setups in order to make sure that it works correctly, by starting with Sandbox.
💡
To stay in the app for 100 days, please leverage the QuickBooks Oauth 2.0 plugin.

Difference between the plugin’s Production and Sandbox versions

On our plugin portal plugins are separated into Sandbox and Production versions because they have different authentication methods in the sandbox and prod.

Sandbox:

Image without caption

Production:

Image without caption
Note: Therefore, please use only the sandbox version for tests and the prod version for real projects and configure separate workflows for them.
Image without caption

Getting started

  • Once you are logged in, go to Dashboard & then 'Create new app'.
  • Click '+ Create an app' for a new application.
  • Select the platform you want to develop for
  • Insert a name for your new app and select the scopes
Image without caption
  • Navigate to the 'Keys & credentials' tab, in BOTH 'Redirect URI' sections add your app's redirect URL.
Image without caption
Image without caption
  • If you are using the Production plugin, do the same as for the Development keys:
Image without caption

If you already have an application here's how to setup

  • Click the “Dashboard” tab.
  • Select your application from the list.
  • Get the keys “Client ID” and “Client Secret” from your app.
Image without caption
  • Place your “Client ID” and “Client Secret” into the plugin's settings in your app.
Image without caption
If you wish to add the Webhooks & continue with your App Listing on the Quickbooks Marketplace you can do so although it's not required to use the plugin.

Plugin Parameters

The 'realmId'
There are a few concepts that once are known will make your integration much easier to understand. The first is the realmId. As the user is going through the OAuth process and signing into your app they will choose the company they wish to use, Once this process is finished they will arrive back in your app and you will notice that there is now an extra parameter in your URL, eg. realmId=123456789.
Example: https://zeroqode-demo-10.bubbleapps.io/version-test/quickbooks_sandbox?debug_mode=true&realmId=4620816365004256890
It's important you grab this value from and save it to the current user because this will be needed in every action you use in reference to the current user's company. This should be saved as the parameter may not persist in other parts of your app.
The 'Sync Token'
Quickbooks uses a sync token to stop multiple users from corrupting data in the event the same record is altered at the same time. This means you should read the record then alter it, When you for example read a vendor's record - grab the sync token (tokens are numbers that increase by one each record change) & as you edit the record you will be able to provide the token there.
It's good practice to only save the token in states on the page, Saving them in the current user or another section of your database will reduce performance but more importantly can lead to errors.
Complex {Looking: "Actions"}
Quickbooks can achieve a lot, It's why they thrive and continue to grow. As you can imagine this makes the data more complex & in turn what we must provide when making calls / creating records also becomes more complex. To combat the number of actions the plugin would require to accommodate the millions of possible record variations we provide you the JSON so you can drop dynamic statements where you need them. This also means in the cases that you need something where your key & value need defining this is done with ease.
Let's look at one of the records, Here is a Vendor,
javascript
{ "BillAddr":{ "Line1":"Bill's Store", "Line2":"Bill Smith", "Line3":"1 Notreal Ave.", "City":"Notrealie", "Country":"U.S.A", "CountrySubDivisionCode":"TX", "PostalCode":"55555" }, "TaxIdentifier":"12-3456789", "AcctNum":"12345678", "Title":"Mr.", "GivenName":"Bill", "FamilyName":"Smith", "Suffix":"Sr.", "CompanyName":"Bill's Store", "DisplayName":"Bill's Store", "PrintOnCheckName":"Bill's Store", "PrimaryPhone":{ "FreeFormNumber":"(012) 345-6789" }, "Mobile":{ "FreeFormNumber":"(012) 345-6789" }, "PrimaryEmailAddr":{ "Address":"bill@test.com" }, "WebAddr":{ "URI":"http://billsstore.com" } }
When you see JSON properties like this, in most cases we provide ALL the properties. A lot of the time they are all required however sometimes this is not the case - To view the Quickbooks documentation in regards to these objects, you can click here.
Looking at the above example to make something dynamic in the Bubble, we can do the following.
Image without caption
  • In the above example, you can see we have made the 'Line1' property dynamic.
⚠️
It's a good idea to add an 'on unhandled error' action to your app - if a user was to then input something that QuickBooks will return an error from, the error will not transpire to your user's screen.
To learn about the proper use of the Quickbooks logo & to download image/button assets, you can visit here.

Plugin Element

QuickBooks Converter

Plugin Data Calls

Company Details

Get General Ledger

Read Account

Read Tax Agency

Read Tax Code

Read Tax Rate

Read Payment

Read Journal Entry

Read Changed Data List

Get Preferences

Read Transfer

Read Vendor Credit

Read Item

Read Purchase Order

Read Estimate

Read a Class

Read Attachable

Read Employee

Read Customer

Read Deposit

Query Transfer

Query Employee

Query Customer

Query Attachable

Query Sales Receipt

Query Item

Query Vendor Credit

Query an account

Query Estimate

Query Journal Entry

Query Payment

Query Purchase

Query Purchase Order

Query Invoice

Query Taxcode

Query Deposit

Read Payment Method

Read Accounts

Get list of Transactions

Profit and loss detail report

Sales by customer report

Profit and loss report

Ar aging detail report

Plugin Actions

Create Account

Create Attachable

Create Deposit

Create Purchase Order

Create Account Class

Create Customer

Create Vendor Credit

Create Transfer

Create Payment

Create Credit Card Account

Pay Bill

Create Bill

Create Tax Agency

Create Tax Rate

Create Journal Entry

Create Item

Create Employee

Create Vendor

Create Estimate

Read Vendor

Update Account

Update Transfer

Update Attachable

Update Journal Entry

Update Preferences

Update Employee

Update a Class

Update Vendor Credit

Update Item

Update Estimate

Create Payment Method

Update Purchase Order

Update Customer

Update Deposit

Update Payment Method

Delete Something

Create a purchase

Delete a purchase

Read a purchase

Full update a purchase

Get an invoice as PDF

Create sales receipt

Create Invoice

Initial auth code exchange

Refresh Access Token

Image without caption

Changelogs

Share
Content