Templates Plugins Courses

QuickBooks Accounting Plugin - SetUp: Follow Along as I Struggle [So You Don't Have To]


#1

Hello All,

It would be valuable for users of my SaaS app if they could integrate with QuickBooks. I’m on a mission to see how easy that actually is. I’m starting with the ZeroCode QuickBooks Accounting Plugin. I know there’s other options for anyone in the Bubble ecosystem, but this one seems to be the easiest and quickest option. So far setup has been easy.

If you’re interested in adding QuickBooks to your bubble app, follow me through this journey - as I try and make this all work.

Business Objective:
Users of my SaaS product could login to their own QB account through my app. They should be able to perform multiple tasks, such as: find QB customer info in my app, create QB invoices for specific customers through my app, etc.

Purpose of this Thread:
I will walk you through how I accomplish each step, and then will post an update each time I get stuck. The number of updates will be determined by how often I get stuck. (Hopefully you will get just one more long update when I’m done)

UPDATE #1
@zeroqode1 I need help getting my repeating group and drop down to display customer information from QuickBooks. I can’t get it to work.

I purchased the QuickBooks Accounting Plugin. I followed your documentation and even referenced your bubble demo to preview the settings. By the way, it seems like your live demo is not actually working (just an FYI). Below is a detailed account of exactly what I did (you might want to jump to step 8). I’ve gotten everything working to the point where a user would click on the “Connect to QuickBooks” button to authorize the account and then it would redirect back to my app and the URL would display the realmld.

I’m stuck with getting the repeating group and drop down to display the customer data from QuickBooks. I followed your bubble demo workflows and repeating group settings, and it still won’t work.

  1. I created a new app in QuickBooks

  2. Then in QuickBooks, I updated my URLs under Development > Keys & Oauth > App URLs. I clicked save and then it confirmed the change.

  3. Then in QuickBooks I navigated to Development > Keys & Oauth > Redirect URIs. I then clicked “Add URI” and entered my redirect info. I clicked save and got confirmation.

  4. After completing 1-3 above for Development mode, I completed all of the details for the settings and then completed the same steps for Production mode. Then I hit Save and got confirmation.

  5. I went into bubble and navigated to my Plugins page. I clicked on the QuickBooks accounting plugin and added my ID and secret for both Dev and Production.

  6. In bubble, I built a new page to test the QuickBooks integration. The page consisted of two items. The button to login through QB and a drop-down to display customer information.

  • Here’s the workflow when the user clicks on the button to connect with Qb

  • Here are the details for the drop-down data and information.

  1. I tested it out and it seems to link with my QuickBooks account. It redirects back to my page without any errors and the URL shows the “realmld” - Good - it seems to work this far.

  2. However, I could not get my above drop-down to display info from QuickBooks. I looked over your bubble demo to review how ZeroCode set up the repeating group and workflows for login and decided to match it. So I added a repeating group and updated workflows as such:

  1. The customer info will still not show. I went back to QuickBooks to make sure I was searching for the correct type of info - which I am. Here’s a screen shot from the dummy QB account I created.

Note to people following along:
There’s two ZeroCode Quickbook apps - “Accounting” and “Authorization”. Accounting is apparently for users of your app to link with their own QB data. Authorization is apparently for only you to login to your QB account through your app (I’m guessing this would be for internal software use cases). I am starting with “Accounting” since I would like multiple users of my app to integrate with their own Qb account.


#2

Hello @Bradley

Thanks for reaching out!

In order to get the plugin working, please be sure to provide in your data source the API provider and parameters (like country ID and selectstatement) in the repeating group.

As for dropdowns, I’m not sure if this is even an option to fetch the data to this element. We’ll need to double check this .
:pray:

Thanks for heads up, we’ll check this out!
:pray:

We’ll update on the matter, asap!

Regards,
Dumitru.


#3

@Dumitru thanks for the reply. Yes, I have reviewed the Data Source API: provider and parameters. I matched it to your live demo and had these already included (company id and select statemen auto-populated) . I refreshed and tried again - still no luck. See screen shot below.


#4

@Bradley

The Customer ID should be the same from your Intuit Dashboard:
https://developer.intuit.com/app/developer/sandbox

Matching with our demo ID will not work for you.
Please be sure to take your ID for company and place it in the parameter field.
:pray:


#5

@Dumitru

Thanks, I tried that with no luck. Here’s what I did. I placed my “Company ID” number for my sandbox company into the Data Source > “(path) /companyld”. Shouldn’t the “(path) /companyld” data be dynamic based on the user’s QuickBooks account? Either way, it didn’t work for me.


#6

Hello @Bradley,

Our team will check what may be the cause of the issue in your case. This may take some time but I will keep you posted in this regard.

Best Regards,
Alex


#7

@alex.grimacovschi Thanks!


#8

@alex.grimacovschi I found the fix (thanks to you and your teams advice which pointed me in the right direction).

UPDATE #2

I found the fix.

Again, my repeating group was not showing information from QuickBooks. Everything else seemed to be working fine. My RealmID was displaying in the URL after I logged into QB and it redirected me back to my app. So the Oauth and redirect worked. I was in my bubble application with Authorization to view QB data…I just couldn’t view the data.

Here’s what I did incorrect:

I used the standard Data Source> API provider, (path)companyID, and (path)selectstatesment which came pre-set in the plugin.

What I should have Done (THE FIX!):

Thanks to the ZeroCode team (Excellent support so far).

Since the DataSource> “(path) /companyID” should be dynamic, based on your user’s company ID in QuickBooks. I needed to remove the pre-set data and replace with dynamic data.

QuickBooks assigns a RealmID to each company using their software. This RealmID is transferred back to my application via the URL…yourdomain.com/apploginr?RealmID=xxxxxxxxxxxxxxx

I used bubble’s “Get data from page URL” feature to grab the realmID from the URL and then placed it dynamically into the “(path) /companyID”.


AND IT WORKS. Now anyone with a quickbooks account can authorize my application to view their company’s QB data through my app (in this case the customer list).

Right now I have the data displaying in a repeating group.

NEXT STEP

I need to figure out how to select the QB customer data and add it to a workflow. I would like to take the QB customer data and use it later in my application. Then, further down the road, I’d like to record activities and create invoices in QB.

more to come.


#9

@Dumitru This is possible. Now that I got your plugin working, I can confirm - You can fetch API data into the dropdown element. Fetching API data via dropdown works for me.


#10

UPDATE #3

Since I’m able have users login to my app (normal username and PW), then click a button to “Connect to Quickbooks” which would display QB data via Oauth, I wanted to test and verify before moving to the next step.

This is where I ran into issues.

Sometimes Oauth will redirect back to my application perfectly and QB data will display in my app fine. Other time’s I run into these issues:

  1. While on mobile I’ve seen error code 400 “redirect ID invalid”. This seems to happen occasionally, I can just refresh and try again and the issue corrects itself.

IMG_2648
IMG_2648750×188 24.8 KB

  1. I get an error about the email already on another account for this email. Occasionally I can fix this by trying to connect QuickBooks multiple times, which creates the same RealmID and adds it to the URL (?realmId=xxxxxxxx&?realmId=xxxxxxxx&?realmId=xxxxxxxx&?realmId=xxxxxxxx&). Somehow this eventually works. There’s two known issues which might help explain this:

Screen Shot 2020-03-09 at 2.45.14 PM
Screen Shot 2020-03-09 at 2.45.14 PM908×226 16.7 KB

  • You can’t log into an app with a normal username and password and then press a button to authorize a login via another service. Bubble was built to log you out and then log you in under the quickbooks account credentials. There’s a couple threads on this already. Here’s one thread and here’s the other. You’ll see here that this is NOT the case anymore. Bubble will allow you to login via username and PW and then click a button to Oauth another service all while still logged in. (I’m not sure if this is confirmed - I occasionally get logged out).
  • It seems you can’t Oauth multiple bubble users to one quickbooks account. Here’s details on that.

I’ll continue to explore the issues on 1 and 2 above. I need to fix, or fully understand, both items before building workflows with QB data. Depending on how things work out, it might be a deal breaker for my app.

@alex.grimacovschi do you have any thoughts on 1 or 2?


#11

Hello @Bradley,

I will check with the team what may be the cause of that issues. Once I will have an answer I will let you know.

Best Regards,
Alex


#12

Hello @Bradley,

Our team is investigating and working now on solving those issues. We already approached Bubble in order to find the best solution. We will do our best to fix those issues and make the plugin work properly. I will keep you posted in this regard.

Best Regards,
Alex


#13

Thanks @alex.grimacovschi. I’m looking forward to hearing the result.


#14

Hello @Bradley,

Update regarding the issue. Our team is currently working on finding a solution. Unfortunately, we need a few confirmations from Bubble and currently are waiting for their answer as it is crucial for finding the solution. I hope we will get an answer soon. Anyway, I just wanted to let you know that solving this problem is important for us and we will do our best to find a solution.

Best Regards,
Alex