Quickbooks is a leading accounting and bookkeeping software solution that allows enterprises to maintain their accounts info a lot better.

It offers features like Accounting, tax calculators, and tracking tools that help enterprises in automating financial tasks efficiently.

Webhooks is an application that provides real-time information transfer to other applications. The data transfer is real-time in the webhooks.

Integrating Quickbooks Webhooks together allows to receive information in real-time and then perform accounting operations on it so that the results achieved are up to date.

What is Webhooks?

  • Webhooks are automated messages that are sent from applications on your device when an event is triggered inside the interface of the application.
  • These messages ( also known as payloads) are sent to a unique URL which is usually the mobile device’s phone number or app address. 
  • Webhooks function as an SMS, which makes it faster than polling and also reduces efforts to transfer the information.

Uses and examples of webhooks

  • Email reminders that are automated and repeated on a daily basis
  • All the payment information and its confirmations
  • Synchronization of customer data among different applications.

What is QuickBooks?

  • QuickBooks is a leading Account management tool that is specialized i Bookkeeping, payroll management, inventory management, accounting, and many more financial tasks associated with an enterprise. 
  • It has tens of thousands of users ranging from small businesses to large enterprises around the world.
  • QuickBooks was created by Intuit, which is based in California. Its main motto was to automate traditional operations that enterprises perform to save time and make tasks like bookkeeping and paperwork easy. 

Key Features of QuickBooks

  • Accounting Reports
  • Multiple Users Access
  • Payments and Cash Flow Management
  • Online Banking
  • Support 
Image Source:qbochat.com

Steps for Quickbooks Webhooks integration

Step 1: Set up OAuth 2.0 

  • Set up the OAuth for the app by clicking on the set up OAuth 2.0. for the Quickbooks Webhooks application to run.

Step 2: See Webhooks implementations

  • In this step of Integration, you need to look at Webhooks Implementation in various languages and then select the one best suited for your Quickbooks Webhooks application
  • webhook implementations:
    • Java
    • Node.js

Step 3: Verify supported API entities

  • Verify all the API entities that are supported by Quickbooks Webhooks Application
 CreateUpdateDeleteMergeVoid
Account 
Bill  
bill payment 
Budget   
Class  
CreditMemo 
Currency   
Customer 
Department  
Deposit  
Employee 
Estimate  
Invoice 
Item 
JournalCode   
journal entry  
Payment 
PaymentMethod  
Preferences    
Purchase 
PurchaseOrder  
RefundReceipt 
sales receipt 
TaxAgency   
Term   
TimeActivity  
Transfer 
Vendor 
VendorCredit

Step 4: Configure webhook endpoints

  • Sign in to your developer account of the Webhooks.
  • Click on the Dashboard option
  • In the new window select the app you want to connect for webhooks and click on open. For Integration, select Quickbooks. 

There are two different types of Quickbooks Webhooks applications namely live and sandbox. The process is slightly different for both follow the steps based on the requirements

For live, in-production apps

  • Select the Webhooks, in the production section. 
  • Input the Endpoint URL. This is the location where the server will send notifications. 
  • Click on the Event frequency, in the dropdown menu select the time required for aggregate events.
  • Click on the Show webhooks link.
  • On the next page, Review the events and operations of the Quickbooks Webhooks application.
  • Select the parameters that you want notifications for the Quickbooks Webhooks Integration.
  • Select Save.

For sandbox and developer environments

  • Click on the Development section, and select Webhooks.
  • Input the Endpoint URL. This is the location where the server will send notifications. 
  • Click on the Show webhooks link.
  • On the next page, Review the events and operations of the Quickbooks Webhooks application.
  • Select the parameters that you want notifications for the Quickbooks Webhooks Integration.
  • Select Save.

Step 5: Validate webhook notifications

  • After the endpoints for webhooks are configured in Quickbooks Webhooks application, an app-specific token is sent for verification. After the verification is done, you will receive a callback from Intuit.

To find verifiers tokens: 

  1. Sign in to your developer account of Webhooks.
  2. Click on the Dashboard option.
  3. Open the app you selected in the previous step which will be QuickBooks for the Quickbooks Webhooks Integration.
  4. In the Production or Development section, select Webhooks.
  5. You will find a Verifier Token field.

verifier tokens can be used following the below steps:

  1. Hash the notification payload with HMAC_SHA256_ALGORITHM using the <verifier token> value as the key.
  2. Convert the intuit-signature header from base-64 to base-16.
  3. Compare the original payload value with the intuit-signature header from the notification. The values should be identical.
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
import java.util.Map;

public class VerifySignatureExample {
   private static final String sign = "intuit-signature";
   private static final String algo = "HmacSHA256";
   public boolean isRequestValid(Map<String, String> headers, String payload, String verifier) {
      String SIGN = headers.get(sign);
      if (SIGN == null) {
         return false;
      }
      try {
         SecretKeySpec secretKey = new SecretKeySpec(verifier.getBytes("UTF-8"), ALGORITHM);
         Mac mac = Mac.getInstance(algo);
         mac.init(secretKey);
         String hash = Base64.getEncoder().encodeToString(mac.doFinal(payload.getBytes()));
         return hash.equals(signature);
      } catch (NoSuchAlgorithmException | UnsupportedEncodingException | InvalidKeyException e) {
         return false;
      }
   }
}

The above code is a sample for signature verification in java for Quickbooks Webhooks.

Step 6: Verify the webhooks notifications

Webhook notifications are POSTs with a JSON body. The response body contains the following fields in the Quickbooks Webhooks

FieldDescription
nameThe name of the entity that changed (customer, Invoice, etc.)
idThe ID of the changed entity
operationThe type of change
lastUpdatedThe latest timestamp in UTC
deletedIDThe ID of the deleted or merged entity (this only applies to merge events)

Here’s an example server response of Quickbooks Webhooks Application:

{
   "eventNotifications":[
   {
      "realmId":"1185883450",
      "dataChangeEvent":
      {
         "entities":[
         {
            "name":"Hevo_customer",
            "id":"1",
            "operation":"Create",
            "lastUpdated":"2022-04-22T15:00:00-0700"
         },
         {
            "name":"Hevo_Vendor",
            "id":"1",
            "operation":"Create",
            "lastUpdated":"2022-04-22T15:00:00-0700"
         }]
      }
   }]
}

Conclusion

  • Real-time processing of data is a very important task and receive notifications of important aspects on regular basis help organizations stay optimized. Webhooks is the tool that helps in sending real-time notifications.
  • Quickbooks is a leading accounting software that helps enterprises maintain the optimum efficiency regarding expenses.
  • There are various trusted sources like Webhooks that companies use as it provides many benefits, but, transferring data from it into a data warehouse is a hectic task.
  • The Automated data pipeline helps in solving this issue and this is where Hevo comes into the picture. Hevo Data is a No-code Data Pipeline and has awesome 100+ pre-built Integrations that you can choose from.

Sign Up for a 14-day free trial and experience the feature-rich Hevo suite firsthand.

Arsalan Mohammed
Research Analyst, Hevo Data

Arsalan is a research analyst at Hevo and a data science enthusiast with over two years of experience in the field. He completed his B.tech in computer science with a specialization in Artificial Intelligence and finds joy in sharing the knowledge acquired with data practitioners. His interest in data analysis and architecture drives him to write nearly a hundred articles on various topics related to the data industry.

No-code Data Pipeline For your Data Warehouse