ContractorTools syncs data with QuickBooks by means of the QuickBooks "Application Programming Interface", or API. The QuickBooks API is a portal that allows third party software like ContractorTools to read and write to your QuickBooks data. 

While the QuickBooks API is designed and developed by Intuit, it is a separate system from the QuickBooks Online software you use, which means that things that work in the QuickBooks Online system do not necessarily work the same in the API. More importantly, third party software developers like ContractorTools have no control over how the QuickBooks API works, or what it will let us do. Only Intuit does. 

"Projects" is a new feature in the "Plus" and "Advanced" versions of QuickBooks Online. While projects are now available in the QuickBooks Online user interface, the ability access projects through the QuickBooks API is unfortunately somewhat limited. Specifically: the API allows third party software to access projects that have been created in QuickBooks, but we are not able to create projects in QuickBooks.

This means that, in order to use projects in QuickBooks with data from ContractorTools, you must first create the project in QuickBooks, and then let ContractorTools sync to it.

There are two different scenarios in which this can happen.

Scenario 1: The Customer Already Exists in QuickBooks

If the customer for a job/project already exists in QuickBooks, here is how to create a project in QuickBooks and get ContractorTools to sync to it:

  1. Add the job in ContractorTools.

  2. Assign the existing customer to the job.

  3. Make note of the name if the job (job title) and the job number (if you are using job numbers).

  4. Turn on the "Sync Job with Quickbooks" setting for this job in the Job Info screen, but DO NOT Sync to QuickBooks yet.

  5. In QuickBooks, go to "Sales" > "Customers", then select the customer, then click on the Projects tab. Now click "Add Project" to add a project under that customer.

  6. Give the project the exact same name as the name of the job in ContractorTools.
    The format for the name of the project is: "9999 - Job Name", where 9999 is the job number (assigned in ContractorTools) followed by " - " (space dash space), followed by the title of the job as you entered it in ContractorTools. If you are not using job numbers in ContractorTools, then the project name should be the same as the job title in ContractorTools (with no spaces or dashes).

The next time you sync to QuickBooks, ContractorTools will attach the job to the project, and write all of the transactions (estimate, invoices, payments, etc.) from the job in ContractorTools to the project in QuickBooks.

Scenario 2: The Customer Does Not Exist in QuickBooks

If the customer for a job/project DOES NOT exist in QuickBooks, here is how to create a project in QuickBooks and get ContractorTools to sync to it:

  1. Add the job in ContractorTools.

  2. Add the (new) customer to the job.

  3. Make note of the job name (title) and the job number (if you are using job numbers).

  4. Turn on the "Sync Job with Quickbooks" setting for the job in the Job Info screen .

  5. Run the QuickBooks Sync function in ContractorTools. As always, this will create a customer and a job (sub-customer) under the customer in QuickBooks.

  6. In QuickBooks, go to "Sales" > "Customers", then select the customer (NOT the job under the customer!), then click on the Projects tab. Now click "Add Project" to add a project under that customer.
    Note: Be sure to select the customer, and not the job under the customer (sub-customer). If you select the job (sub-customer), that will add the project under the job (sub-customer), which will create quite a mess!

  7. Give the project the exact same name as the name of the job in ContractorTools.
    The format for the name of the project is: "9999 - Job Name", where 9999 is the job number (assigned in ContractorTools) followed by " - " (space dash space), followed by the title of the job as you entered it in ContractorTools. If you are not using job numbers in ContractorTools, then the project name should be the same as the job title in ContractorTools (with no spaces or dashes).

  8. Now go back to "Sales" > "Customers", then select the job (sub-customer) under the customer. Go into each transaction that was written by ContractorTools, and delete them. To delete a transaction, open it, then click "More" at the bottom of the screen, then click Delete.

    NOTE: You must delete the transactions that ContractorTools wrote under the job because they will be written again under the project. If you don't delete the transactions under the job, they will be duplicated (under the job and the project) in QuickBooks!

  9. Finally, set the job (sub-customer) to inactive. To do this, open the job (sub-customer) click "Edit" (in the upper right area of the screen), then click "Make Inactive".

    NOTE: You must set the job (sub-customer) to inactive, because ContractorTools will not be able to sync to the project (of the same name) until you do.

  10. To get the new job to sync with QuickBooks again, you will need to make some small change in it, for example enter or change something in the job description. You can change it back to what it was and that will still trigger a re-sync.

The next time ContractorTools syncs to QuickBooks, it will attach to the project and write all transactions for the job to the project.

Note:

If you forget to delete the job (sub-customer) after creating the project in QuickBooks, the sync process will...

  1. display an error message saying that a job and project with the same name exist in QuickBooks, and that you should delete the job in QuickBooks. Go back and follow steps 8 and 9 above, then sync again.

  2. if you use job numbers, the sync process will display an error saying that the sync process could not write the estimate because the document number already exists in QuickBooks. This error is happening because the sync process is trying to write the estimate to the project, but the estimate - with the same document number - already exists in the job (sub-customer). Go back and follow steps 8 and 9 above, then sync again.

We understand these procedures are a bit cumbersome, but they are required because the QuickBooks API does not allow third party software to create projects in QuickBooks. ContractorTools, along with many other QuickBooks integration developers, have asked Intuit again and again over several years to add this. The fact that the API still does not allow creating projects would suggest that this is a policy decision within Intuit. That being the case, maybe Intuit will respond if users request it. So if you would like ContractorTools to be able to create projects in QuickBooks, please consider contacting QuickBooks Online support to request this.

Did this answer your question?