Quickbooks Online: Detailed Integration Guide
Note: The ProntoForms connection with QuickBooks must be made with a QuickBooks Online Plus account. Learn how to check if an account is QuickBooks Online Plus.
- Quickbooks Online Connection
- QuickBooks Online Data Sources
- Building a Form for Quickbooks Online Integrations
- Quickbooks Online Data Destinations
Supported on the Advanced and Enterprise tiers:
Two-way integration between ProntoForms and QuickBooks Online allows you to create Invoices, Estimates, Bills, and Time Activities based on data collected in a mobile form. In order to set Quickbooks Online up to work with ProntoForms, you must set up the following:
- A Quickbooks Online Connection, which will allow ProntoForms to link to your Quickbooks Online account;
- QuickBooks Online Data Sources Data sources, also known as "Lookups", are external sources of data that you upload or connect to ProntoForms. You can reference this data in a form to populate answers or answer options. Data sources save typing, reduce errors, and make it easy to provide mobile users with only the relevant, most current data., which will pull key information from Quickbooks Online;
- Forms configured to work appropriately with QuickBooks Online;
- QuickBooks Online Data Destinations, which will use form data to create Invoices, Estimates, Bills, or Time Activities in your Quickbooks Online Account
This article will give an overview on how to set Quickbooks Online up with ProntoForms.
Please note: Quickbooks Online does not support data from Repeatable Sections. If you are trying to build a form with multiple line items, please follow the instructions below.
The first thing you will usually set up for the two-way integration is the Quickbooks Online Connection. This will allow your ProntoForms account to access allowed data and create new records in your Quickbooks Online account.
This is detailed in the QuickBooks Online Connection article.
Quickbooks Online data sources pull certain information from your Quickbooks Online account so that you can use that information to power forms.
You cannot set up a successful Quickbooks Online integration without Quickbooks Data Sources.
Why do I need a data source?
Every Invoice, Estimate, Bill, or Time Activity in Quickbooks is related to something else in Quickbooks. For example, every Invoice must be assigned to a valid customer configured in your Quickbooks account. Each customer in Quickbooks has a hidden unique ID that is used for integrations.
In order for ProntoForms to trigger the creation of an Invoice, the mobile form has to contain data that says which customer to assign it to; Quickbooks forces ProntoForms to identify the customer by ID, so that ID must be available in the form submission.
Quickbooks Online Data Sources can provide your mobile forms with the list of customers and those hidden IDs. Typically, you would set up the form so it shows a user-friendly column of data (like the customer name) while populating a hidden field with the unique ID.
Quickbooks Data Source Types
There are multiple types of Quickbooks Online Data Sources. The types you need will be dictated by what kind of objects you are creating in Quickbooks using your form submissions.
- Customer: Pulls customer name, company, address, phone number, email, balance, and ID.
- Sellable Item: Pulls product ID, name, description, and unit price.
- Purchasable Item: Pulls item ID, name, description, and unit price.
- Employee: Pulls employee name and ID.
- Vendor: Pulls vendor name, company, address, phone number, email and balance.
Please read our QuickBooks Online Data Sources help article for a step-by-step walkthrough of how to set them up.
When you use ProntoForms to fill out an Invoice or Bill form to send to Quickbooks Online, Quickbooks has strict requirements on what information needs to be included.
For example, an invoice must have a customer, a date, and line items that you're charging the customer for -- and all that information has to collected in a form, so that it can be sent along to Quickbooks Online via a Data Destination A Data Destination specifies where to send data from a submitted form. You can use Data Destinations to automate data sharing and storage, routing data to a specific service (such as email or cloud storage) in several different formats..
When building your ProntoForms form for use with Quickbooks, you must keep in mind what fields need to be filled, and where that information can come from. A best practice is to look at what you want to fill in Quickbooks Online, look at the corresponding ProntoForms Data Destination, and make sure you have a question set up for each field shown there.
While the information below is useful and recommended reading, if you want to use a pre-built form that requires minimal editing, please jump to the section below: Use a Pre-Built Quickbooks Online Invoice Form.
An example is shown below of an Invoice in Quickbooks Online.
- The fields circled in orange are the ones that can be filled by ProntoForms.
- The fields with a red asterisk are the ones that must be filled by ProntoForms.
This section will discuss some of the trickier parts of setting up a form for Quickbooks Online Two-Way Integration.
Quickbooks Online is extremely sensitive to data types. For example, a Line Amount question on an Invoice must use a Currency data type in the form, and an Invoice Date question must use a Date data type.
As mentioned, the unique IDs for customers, products, items, and employees are not visible in the Quickbooks Online user interface, but are automatically generated in the background. They are accessible through ProntoForms using a Quickbooks Online Data Source. So, for example, if you are setting up an Invoice form, you will need the Quickbooks Online Data Source for your Customers to retrieve the ID, and use that Data Source in your Form.
Using the example of an Invoice form and a Customer ID, the best way to do this would be to set up a dropdown question for the mobile user to select a Customer Name from the Customer Data Source, and have that answer populate all other details, including the Customer ID. The Customer ID must be in the form somewhere; it may be set to Read-Only and Hidden on Device as needed.
For information on how to set up a question to auto-populate answers in another, please read: Push Data to Other Questions from a Data Source
Forms such as invoices or bills often have multiple line items to enter. Quickbooks Online does not support Repeatable sections, so when setting up a form containing multiple line items, you need to use a particular repeated structure to integrate it with both Quickbooks Online Data Sources and Data Destinations.
Using our Invoice example, we would create a page titled "Product/Service Entry" and then sections with numbered unique IDs matching line item fields (e.g. ProductService 1, ProductService2, ProductService3). Each section will collect one line item, and each subsequent section will be the same except for the question Unique IDs.
The second section, collecting the second line item, is the same, with the exception of the number following the questions' Unique ID A Unique ID refers to the specific identifier of a question, form page, form section, or Data Destination. Unique IDs are used as reference points when pulling data for conditional logic, Analytics projects, Data Destinations, and Documents.:
Once you've created the first section, you can Copy the section as many times as needed. For ease of use for mobile users, we suggest creating a Conditional Logic Rule to hide unneeded sections.
Later, you will have to use specific syntax to map these questions to the appropriate fields in the Data Destination. Learn more below.
ProntoForms has provided a sample Invoice Form for use with Quickbooks Online. This form will require minor editing in order to function with your Quickbooks Online configuration. In order to set up this form:
- Ensure you have configured the appropriate data sources as described above.
- Import the form to the appropriate FormSpace FormSpaces are where forms are stored and organized in the ProntoForms Web Portal. A ProntoForms Team may have multiple FormSpaces, depending on their needs. Admins can set FormSpace permissions to control which users have access to the forms in that FormSpace. in your team.
- Note: The Library form uses generic Quickbooks Online-configured data sources and will require editing and customization. Alternatively, you can merge the generic data sources into your existing Quickbooks Online data sources.
- Once the form is imported to your team, Edit the form and navigate to the Customer Information section.
- Navigate to the Options tab, ensure that Use Data Source for Options is selected, and select your Quickbooks Online Customer List data source. They will be prefaced by "Quickbooks" in the data source list. Remember: these must be set up before you begin editing the sample form.
- Check that the questions under Push Data to Other Questions are pulling information from the correct columns in the data source.
- Repeat Steps 3-5 for the Product/Service Entries. Make sure you choose the correct data sources and push the appropriate columns to other questions.
- Add any other edits as appropriate, and then test your form on the mobile devices most common to your mobile users.
Once you've set up the Connection, Data Sources, and Form with its questions and associated unique IDs, you're ready to set up the Data Destinations. In our example, we'll be using a Quickbooks Online Invoice Destination. Ensure you select the type of destination that aligns with what you want to create in Quickboooks with your form submission.
The Data Destination has fields for all of the data that you are allowed to send to Quickbooks Online; you simply need to tell the data destination which answers should be used for those fields.
ProntoForms uses Data Reference Expression Language (DREL) and Unique IDs to reference questions in your forms. Using our example of an Invoice form, and therefore a Quickbooks Online Invoice Data Destination, we can look at the fields required:
As mentioned, these IDs aren't actually visible in Quickbooks Online anywhere -- they're only accessed through ProntoForms using Quickbooks Online Data Sources, as described above. You'll need to set up a question in the form to pull the ID, and then reference it using DREL Data Reference Expression Language (DREL) is used to get form data and metadata and add it to a string, such as dates, usernames, or answers to questions in forms.. Using a Customer ID as an example:
- Create the Quickbooks Online Data Source and select Customer from the Source List Type. Set it up as normal, and ensure it is pulling data from QBO.
- Create your Invoice Form as described above, and set up a Customer ID question that is populated by the Data Source, e.g. by using a Dropdown question to populate questions, as described in the Building a Form... section above. Record the Unique ID (e.g. CustomerID) above the question text in the Form Builder.
- Set up the Quickbooks Invoice Data Destination, and in the Customer ID section, type %a[UniqueID]. Using our screenshot above, it would be %a[Customer ID]. This will ensure you have the correct Customer ID when sending the form submissions to Quickbooks Online.
Once you've set up your form for multiple line items as described above, you have to map the questions to the correct fields in the Data Destination setup using DREL and a specific syntax. Using our Invoice example, we have set up multiple sections containing the same questions and the same base for the questions' unique IDs with a number following each (e.g. Product ID 1, Product ID 2, Product ID 3...).
Please note that this screenshot does not show all the questions within a section and is being used for sample purposes only.
We need to take those IDs and put them into the correct spots on the Data Destination setup, using the following format:
%a[Unique ID ##]
This format will pick up any answers to questions with that unique ID and a number, e.g. %a[Product ID 2] or %a[Product ID 9]. So, using the Unique IDs from the above screenshots, we would get:
%a[Product ID ##]
In our Data Destination, we'd find the corresponding fields, and enter these where appropriate: