Building a Bridge Between Salesforce CRM and QuickBooks

Connectors do not matter...The reality is, just the connectors and APIs are not enough to provide data synchronization between the two corporate systems.

In this article, we will explore the five challenges a data integration specialist is likely to face when integrating the QuickBooks accounting software and Salesforce CRM.


Managers strive to sync sales and accounting data

According to Intuit research, 45 percent of small business retailers manually enter sales data into their QuickBooks accounting software on a daily basis. With many such data entry issues being relatively small in scope, companies can’t justify investing in expensive middleware to integrate systems to solve small problems. The result is an error-prone process with increasing costs to maintain the same records in two or more systems.

However, there is more to QuickBooks and Salesforce CRM integration than just saving time and effort; quality data helps accelerate various lines of business. On the one hand, you have the sales department that uses, which is always updated with customers’ credit and invoice information obtained from the back office’s QuickBooks. On the other hand, your accounting department is guaranteed to keep abreast of the current sales by having their QuickBooks synchronized with Salesforce CRM.

The native QuickBooks Web Connector (QBWC)

This is what caused Intuit to develop a native Web Connector (QBWC) for integrating QuickBooks with third-party systems such as Salesforce CRM. Nevertheless, even with the Web Connector, building a bridge between and QuickBooks still remains quite a thing to do.


Five common challenges

When trying to synchronize QuickBooks and Salesforce CRM, users typically face a number of issues.

  1. Data mapping
    One of the most evident problems with integrating QuickBooks and Salesforce CRM is the mismatching between data fields and types. The names and locations of data fields are often different in the two applications. Moreover, there can be mismatching even in the number of the fields. For instance, there is a total of five Address fields in QuickBooks provided for what Salesforce CRM allows only one, Billing Street. That is why even manual mapping does not relieve you of the problem. And custom coding typically proves to be overly resource and time consuming.
  2. Comparing address fields in Salesforce CRM and QuickBooks

  3. Duplicated entries
    The problem with this lies in allowing repeated names, an option that QuickBooks does not have. What do you do with accounts that have the same name in Salesforce CRM when importing them to QuickBooks? Obviously, overwriting is not the best option, as doing so creates a threat of data loss. Another problem is that when updating tables with QuickBooks data, several entries with the same name may be encountered. If that happens, it is unclear which of them is to be modified.
  4. String length conflict
    In many cases, either Salesforce CRM or QuickBooks allows more characters in a data field than the other application does in a related data field. Hence, every time when trying to import a data field from to QuickBooks whose length exceeds QuickBooks’s limit, and vice versa, a field size conflict is inevitable. Without data integration tools, a user is most likely to encounter either an error message, or a forced string truncation. The latter is especially dangerous when it comes to truncating fields used as primary keys for data updates. Additionally, this constitutes a threat of duplicated fields emerging, if two or more fields beginning with the same characters are cut down to the same length. And while in Salesforce CRM, it is a problem of losing the differentiating parts of the fields, QuickBooks does not support duplicated fields at all.
  5. Preserving referential integrity
    Not only do Salesforce CRM and QuickBooks tables significantly differ in content, merely transferring the entries accurately, which itself is a hard enough task, does not ensure the preservation of their integrity. The links existing between data fields are not preserved this way, and need to be traced before importing and created over afterwards. In QuickBooks, for example, a product (Service Item) is linked to an Account, while relates Products to Pricebooks, and the correlation between Accounts and Pricebooks is not at all an obvious thing. In fact, this is probably the trickiest of the challenges, making manual QuickBooks and Salesforce CRM integration next to unfeasible.
  6. Salesforce CRM’s Product and QuickBooks’s Service Item

  7. Automatic ID generation in Salesforce CRM
    What is more to the issue described above, upon creating a data record (in particular, when importing it), automatically generates its own ID for it, no matter if it already has one, which is likely to be true when transferring tables from third-party applications, such as QuickBooks. This makes it impossible to preserve links between the records imported from QuickBooks that are connected via their IDs. On the other hand, while QuickBooks generally accepts imported IDs, the format of IDs in QuickBooks and Salesforce CRM may differ.


Prebuilt sync without manual mapping: is this possible?

Facing these and other challenges, QuickBooks and Salesforce CRM users have to choose between building their own or buying software (on-premises or hosted) to get the job done. The benefit of building their own software is the flexibility to customize synchronization according to any requirements, but the disadvantages (the cost, access to engineers with knowledge of Salesforce CRM API and QuickBooks SDK, and time) make this option unreasonable in most cases. Hosted or on-premises data integration tools, on the other hand, are cost-effective and quick to deploy. The cost to deploy on-demand service to synchronize to QuickBooks data may range from a few hundred to under a thousand of dollars, per month.

Two-way sync between and QuickBooks using Apatar On-Demand

Since QuickBooks and Salesforce CRM have been designed specifically for business users, data integration companies are willing to make their products as accessible to these users as possible. For instance, Apatar On-Demand, with its prebuilt Salesforce CRM and QuickBooks synchronization, allow running one- or two-way, recurring or one-time synchronization of account, contact, order, and opportunity data, while preserving links between tables in both and QuickBooks. Implementation of this hosted service takes 30 minutes or less using a browser, slashing deployment time by a factor of 10. A number of similar solutions are also available on the market.

Prebuilt synchronization: just fill in your Salesforce CRM/QuickBooks details

With such solutions, synchronizing your QuickBooks and data is very simple: you register, specify the frequency of synchronization launches, download an agent application, run it, launch QuickBooks Web Connector, specify the path to the agent application, and enter your QuickBooks and Salesforce CRM passwords. That is it; you have got your data synchronization up and running.

Taking into consideration that, according to Intuit research, 80% of QuickBooks users are willing to integrate their QuickBooks with third-party applications, it is hard to imagine how much efforts are needed to provide seamless integration for all of them. So, maybe, using the prebuilt tools is the solution. Not limited to connectivity only, but offering complete two-way synchronization instead of raw toolkits, such solutions provide users with “packaged,” ready-to-go synchronization.

Prebuilt mapping within Apatar On-Demand

Besides eliminating double-entry and duplicates, a hosted data integration solution for Salesforce CRM and QuickBooks eliminates manual coding. Now even non-technical users and business owners can integrate two systems in a matter of a couple of hours using hosted services and ultimately accelerate billing, shorten collection cycles, as well as arm their sales and accounting departments with key information, delivered in a single view.


Further reading

The article is written by Michael Fedotov, Alex Khizhniak, and Renat Khasanshyn.