How to Automate Quickbooks Invoices with Zapier

Creating invoices manually in Quickbooks can be a pain. It's time-consuming, prone to human error, and doesn't scale when you're managing a high volume of customer invoices and payments.

How to Automate Quickbooks Invoices with Zapier

Creating invoices manually in Quickbooks can be a pain. It's time-consuming, prone to human error, and doesn't work scale when you're managing a high volume of customer invoices and payments.

In this tutorial, I'll show you how to automate the entire Quickbooks invoice process allowing you to save countless hours on your bookkeeping tasks. We'll set up a zap that automatically generates a Quickbooks invoice via a Hubspot form submission trigger event. If your invoice contains line items and or a dynamic product list, I created a separate tutorial covering this, which you can check out here.

Quickbooks Prerequisites

You don't want an actual customer to receive an invoice, so log in to Quickbooks and create a new test customer. In the customer's section of the app, click on the 'New Customer' button and add a customer display name and email. If the product/service you want for the invoice is already set up in Quickbooks then you can move on to the next step. But if not, make sure to add the one you want before proceeding further.

Invoice Trigger Event Design

There are different ways to implement the trigger event and a form submission is just one of the many ways. You can implement the trigger event via a new deal stage in your CRM, the creation of a new row in Google Sheets, when an event ends in Google Calendar, etc. The most important thing to consider is the fields. At the minimum, you'll need a way to capture the customer name and the invoice amount. If you intend for this automation to send out the invoice, you'll need a way to capture the billing email address.

Generate Invoice Form Setup (Hubspot Trigger Event)

Next, we set up a Hubspot form, which will serve as the trigger event for this zap. The form will generate the invoice in Quickbooks and send it to the customer. I included the following standard invoice fields and made all questions required:

  • Customer Name
  • Email
  • Invoice Date
  • Due Date
  • Service Date
  • Quantity
  • Rate

The invoice 'amount' field will later be calculated using a math operation step in Zapier. But if your invoice has a dynamic amount, which has nothing to do with quality and rate, you can just remove those fields and add a field to your form that captures the amount. If the invoice amount is always a fixed value, you can just hard code it in Zapier in the amount input field of the create invoice step.

Proceed to make a test submission using the name of the test customer you created earlier in Quickbooks.

Setting Up The Zap

Create a new zap and add Hubspot as the trigger. Select 'New Form Submission' as the trigger event. Then proceed to select the form.

This zap will trigger whenever a new submission is made from the Generate Invoice form. Proceed to test the trigger and you will see invoice field output data in the response.

Zapier found the latest form submission containing the invoice form field properties. As you can see above, the date fields don't look right, so the next step is to format them with Formatter by Zapier.

Formatting Dates

Each date field will require its own formatting step. Add a formatting step to format the invoice date and select the date/time as the event.

Next, map the invoice date value from the form trigger step to the input box. Then, select the 'To Format' that works for you. Zapier gives you many format options but we selected MMMM DD YYYY HH:mm:ss.

Proceed to test and the date output should be transformed to the targeted date format. Next, we added additional date formatting steps for the due date and service date.

Calculating The Invoice Amount

The next step is calculating the amount. Add another Formatter by Zapier step and select 'Numbers' as the event. Since we need to make a simple calculation, select 'Perform Math Operation' in 'Transform.' Then, select 'Multiply' for the operation.

For the input section, add the output values of 'Rate' and 'Quantity' in separate lines. The order doesn't matter. Once that's done, proceed to test.

Now that the amount is calculated, the output value can be later mapped to the create invoice step.

Finding The Customer in Quickbooks

Each invoice needs to be uniquely associated with a customer, so you must add a step that finds an existing customer. Add a new Quickbooks step and select 'Find Customer' as the event. Quickbooks can search by the display name or email depending on your preference. Additionally, you can get Quickbooks to create a new customer if none is found. I like this option because it prevents the zap from erroring out. With this option, a duplicate customer may be created, but that can be mitigated by addressing the prospect of user error from the data source.

Pro Tip: Reduce user-error by adding a pre-filled dropdown field to your form that displays an existing list of customer display names or email addresses. This way the user doesn’t actually have to type it out and can just make a selection from the pre-filled dropdown field.

For the search field, I selected 'Name (Display Name)' and I mapped the 'Customer Name' output value from the Hubspot form trigger step. As mentioned prior, my preference is for Quickbooks to create the customer if one doesn't already exist, so I toggled that option on and mapped the 'Full Name' and 'Display Name' with output values from the Hubspot trigger step. Once this is set up, proceed to test.

As you can see above, Quickbooks found the customer as indicated by the field and output data at the very bottom of the screenshot '_zap_data_was_found: true.' Because the search worked, Zapier was able to grab the entire customer record, and this can be very helpful if you need to populate additional fields in the invoice or do anything with this data.

Creating The Invoice in Quickbooks

Add another Quickbooks action step and select 'Create Invoice' as the event. The step will create the actual invoice in Quickbooks.

Next, use the customer ID from the 'Find Customer in Quickbooks' step to associate the customer with the invoice. To do this, select 'Custom' and scroll down to the 'Find Customer in Quickbooks' step. Then, select the ID, which in our example is '3.'

The next step is to map the billing address. As you can see above, I mapped the output values from the find customer in the Quickbooks step to the 'Billing Address' input field. The billing address isn't required to create the actual invoice, but you can decide whether or not to include it there.

Next, simply map the output values from the 'Format Invoice Date' and 'Format Invoice Due Date' fields to their respective input fields in the create invoice in Quickbooks step.

Finally, map the invoice line item. Friendly reminder to check out my tutorial on how to create invoice line items if you're invoice contains multiple line items. Map the output value of the 'Format Service Date' step to its respective input field. Then do the same for 'Quantity' and 'Rate.'  The output values for these fields will come from the new form submission Hubspot trigger event.

Next, select the product/service. When you click on the product/service dropdown, you should see a list of existing products/services in Quickbooks. Once you finish mapping these values, proceed to test and check Quickbooks to see if the invoice was created.

Taking a look at the screenshot above, you can see that Quickbooks successfully created the invoice. In the Zapier output response, you can see that the invoice was given the ID '2159.' If you ever need to grab data on an invoice in a future step, you want to use this unique ID.

You'll also notice that the invoice was given the unique doc number '1136.' The doc number is a user-facing ID. You can use it to reference the invoice from within Quickbooks.

Sending Out The Invoice

Add another Quickbooks step and select 'Send Invoice' as the event. This will send out an existing invoice.

For the invoice field, map the ID output value from the previous step (create invoice in Quickbooks). The ID will always be dynamic, so go into 'Custom' and scroll down to locate the ID. For this example, the ID is '2159.'

The email will also be dynamic so for the email input field you can map the email from the new form submission Hubspot trigger event. Once that's done, proceed to test and check your email.

The send invoice step worked perfectly, and the Hubspot form data populated the correct fields.

Publish this zap and give it a few tests to make sure that everything is working as designed.

This simple Quickbooks automation has saved my clients and I countless hours. In one case, a client of mine was able to reallocate an entire FTE away from daily invoicing tasks to something else. Now that's powerful.

This automation is easy to implement and will eliminate significant time suck; time that you can spend growing your business and winning new clients. Use it to win back your mornings or evenings, and focus on more important things.

Please let me know if you have any questions about this tutorial. If you found this helpful, please consider subscribing to my newsletter.  


What are you trying to automate and why? I'd love to know!

Do you have an idea for a tutorial?  Share it in the comments!

Need help with an automation? Hit me up - hello@joshnocode.com

I write weekly about business process automation hacks. If that's something you're into, join me, and let's automate together.