Best answer

QBO Invoice Updated Trigger

  • 3 January 2020
  • 6 replies
  • 1029 views

  • Anonymous
  • 0 replies
This discussion was created from comments split from: Polling quicker than 5 minutes.
icon

Best answer by PaulKortman 3 January 2020, 15:49

@Nate It just dawned on me that there is a way to do this without building a custom app on the platform.

When a new invoice is created in QB you'd need to record the QB Doc ID in the second system you're using to track these invoices, say a spreadsheet or airtable or something like that.

Then when QB notifies (via webhook) your zap that an invoice with QB Doc ID of x was updated you could query the spreadsheet/airtable for that QB Doc ID and get the invoice number, from there you could use the native Quickbooks Integration to "Find Invoice" using that invoice number and viola you have the invoice details to then update the spreadsheet/airtable information with.

This wouldn't work for creating, but it would work if all you need was to have updates to invoices. As long as your database (spreadsheet/airtable) had all of the invoice and QB Doc ID's in it, you'd be golden.


View original

This topic has been closed for comments

6 replies

Userlevel 4
Badge +4

@PaulKortman, what did you end up with?

I'm currently looking for a way to trigger a Zap when an invoice was updated in QBO. There is no trigger in Zapier for an update so I'd likely have to go with a webhook. I tried setting up the webhook in QBO but couldn't get it to work. I was wondering if you ended up setting up the webhook and can shed some light on the process?

Thank you!


Userlevel 7
Badge +9

@Nate Thanks for the bump... Here's what I went with (so far, I'm still working the kinks out)

As Alex pointed out the Quickbooks sandbox environment is incredulous. But what I did find was that if you create an application on the Quickbooks platform you don't even need to put any code in, there is a single field for a webhook URL and then checkboxes for the types of calls you want quickbooks (this app) to make to that webhook. It also provides Keys for oauth authentication which I used (see below for more info).

So I created a zap that triggers off of a webhook and used that URL and put it into the field for webhook URL within my application on the Quickbooks platform. You have to do their sandbox authentication routine to "turn on" the webhook functionality, but it's pretty awesome once it works and your zap fires every time and invoice is updated.

The payload of the POST to that webhook URL is VERY small and weak imo. It simply has a timestamp, document ID, document type, and action type (update, delete, create, etc).

And of course the document ID in the case of an invoice is NOT the invoice number. So using that information with the native Quickbooks integration in Zapier is NOT possible.

So I was forced to create an application on the Zapier platform which I brilliantly called "Quickbooks Advanced" 😁(referred to as QBA below)

Building an application on the Zapier platform that authenticates with Quickbooks via oauth was a bit of a pain. You'll need the keys you received when making the application on the quickbooks platform, and plug those into the authentication section here. Note: the user has to re-authenticate the app every 90 days (might be more or less, I have a seperate zap reminding my client to reauthenticate every other month). The biggest pain is that the authentication method of oauth that Quickbooks uses doesn't play nicely with Zapier's method, so you have to add a line or two of code to what it sends in the authentication section.

But once you get the authentication down, then it gets easier. I have a Get Object action within my QBA that makes a call to different URLs within QB's API based on which object type (estimate, payment, invoice etc) in your case I'm assuming only an invoice so you'll only have to have the document ID and pass that to the API and boom it'll respond with the current version of the invoice (no way to get diffs from QB, you 'll need to compare it to what you have in the other system if you want just the Diffs)

I could go into more specific detail, but I'm not sure how much help you need and it's getting off topic so if you need more help start a new thread and let me know where you're needing guidance.



Userlevel 4
Badge +4

@PaulKortman, thank you so much for the detailed breakdown, super helpful!

I wonder if I can get away with not having to build a version of your "QBA" (love the name) since I'm only triggering on the invoice update. I guess I'll do some testing and report back. Now I have a better idea of the route I have to take. Thanks again!

@jesse /@Danvers, is there a way to split up this conversation into a new thread? I realize now this might be useful as a separate thread.


Userlevel 7
Badge +9

@Nate It just dawned on me that there is a way to do this without building a custom app on the platform.

When a new invoice is created in QB you'd need to record the QB Doc ID in the second system you're using to track these invoices, say a spreadsheet or airtable or something like that.

Then when QB notifies (via webhook) your zap that an invoice with QB Doc ID of x was updated you could query the spreadsheet/airtable for that QB Doc ID and get the invoice number, from there you could use the native Quickbooks Integration to "Find Invoice" using that invoice number and viola you have the invoice details to then update the spreadsheet/airtable information with.

This wouldn't work for creating, but it would work if all you need was to have updates to invoices. As long as your database (spreadsheet/airtable) had all of the invoice and QB Doc ID's in it, you'd be golden.


Userlevel 4
Badge +4

@PaulKortman this is exactly what I wanted to try. I just wasn't sure that the Doc ID would be the same as the original one. Thanks for confirming that, Paul!


Userlevel 7
Badge +11

@Nate Let us know how you get on!