<style>p { margin: 0; }span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left:0; padding-left:5px;}blockquote blockquote{ border-color: #00bcd4; color: #00bcd4;}blockquote blockquote blockquote{ border-color: #43a047; color: #43a047;} table.grid{ border-collapse: collapse;} table.grid td, table.grid th { border: 1px solid #ddd;} .fr-fic.fr-dib{ display: block; margin: 5px auto;}.fr-fic.fr-dib.fr-fir{ text-align: right; margin: 5px 0 5px auto;}.fr-fic.fr-dib.fr-fil{ text-align: left; margin: 5px auto 5px 0;}.fr-fic.fr-dii{ float: none; margin: 5px auto;}.fr-fic.fr-dii.fr-fil{ float: left; margin: 5px auto;}.fr-fic.fr-dii.fr-fir{ float: right; margin: 5px auto;}img.fr-dib.fr-fir { margin-right: 0; text-align: right;}img.fr-dib.fr-fil { margin-left: 0; text-align: left;}img.fr-dib { margin: 5px auto; display: block; float: none;}img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC;}img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc;}img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;}</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
.fr-fic.fr-dii {
float: none; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fil {
float: left; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fir {
float: right; margin: 5px auto;
}
</style><p id="isPasted"><strong>In this guide we will cover:</strong></p><p><strong>- What is the QuickBooks Desktop Integration?</strong></p><p><strong>- Things to Note Before Setting Up </strong></p><p><strong>- Setting up the Integration </strong></p><p><br></p><p><br></p><p><strong>Related Guides:</strong></p><ul><li><a href="https://usehalo.com/halopsa/guides/1636" target="_blank" rel="noopener noreferrer"><strong>Halo Accounts Integrator Setup</strong></a></li></ul><p><br></p><p><strong><span style="font-size: 14pt;">What is the QuickBooks Desktop Integration?</span></strong></p><p>The QuickBooks Desktop integration allows you to sync your invoices from Halo over to QuickBooks Desktop. Allowing you to create invoices in Halo but still have these processed by QuickBooks Desktop. To support this process you can import customers, items and tax rates from QuickBooks Desktop into Halo. A two way sync can also be configured for customers and items so when these entities are updated in Halo the changes will be synced into QuickBooks Desktop. </p><p><br></p><p><strong><span style="font-size: 14pt;">Things to Note Before Setting Up <br></span></strong></p><p><strong><em>Disclaimer - You can't have multiple QuickBooks Desktop versions on the same server, if you are using this integration. </em></strong></p><p><br></p><p>QuickBooks Desktop is integrated using the Halo Accounts Integrator, this is run locally but connects to your Halo instance using the Halo API.</p><p><br></p><p>If you run QuickBooks Desktop "As Administrator" then ensure that you also do the same for the Halo Accounts Integrator.</p><p><br></p><p><strong><span style="font-size: 14pt;">Setting up the Integration</span></strong></p><p>First head to Configuration > Integrations and enable the QuickBooks Desktop integration module using the '+' icon. </p><p><br></p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImU4NDExZGQwLWUyZGMtNGIxMy05YzUzLWVhY2NjYzUyMmRjMyJ9.OQUTb_MeQZIRvaM1mQPcCoGH8LeCfvNr5-KRQI31yiE" class="fr-fic fr-fil fr-dib" width="249" height="155"></p><p><strong><span style="font-size: 10pt;">Fig 1. Enable integration.</span></strong></p><p><br></p><p>Once enabled click into the module. </p><p><br></p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6Ijg0MjM0ZGE5LTkwZmItNGUxOS05NWU4LTQ3YjhkNDY0OGZhMSJ9.HIl-JbjiHmit2fxvAAHIopdnmFRgCRTHGF73z3utpw4" class="fr-fic fr-fil fr-dib" width="915" style="width: 917px; height: 763.046px;" height="763"></p><p><strong><span style="font-size: 10pt;">Fig 2. QuickBooks Desktop setup page.</span></strong></p><p><br></p><p>Here, enter the version of QuickBooks Desktop you are using and the email status you would like invoices to have in QuickBooks Desktop when they are synced from Halo into QuickBooks Desktop. </p><p><br></p><p><strong>Use the HaloPSA invoice ID as the QuickBooks Desktop invoice number:</strong> When this is enabled the ID of the invoice in Halo will be used as the invoice number in QuickBooks Desktop, allowing continuity of invoice numbers between applications. Please keep in mind that two invoices cannot have the same invoice number in Halo or QuickBooks Desktop so an invoice will not be able to be synced to QB if the Halo invoice ID matches the QB invoice ID of another invoice in QuickBooks Desktop. You may need to increase/change the next system IS of your invoices in Halo to allow for this. This is configured in configuration > advanced settings. </p><p><br></p><p><strong>Ignore the first X lines from the QuickBooks Desktop Address: </strong>This setting can be used to ignore a chosen number of lines from the QuickBooks Desktop address. So if set to 1 the first line of the QuickBooks Desktop address will be ignored when sending invoice information to QuickBooks Desktop. So the first line of the address against the invoice in Halo will sync to the second line of the address in QuickBooks Desktop. </p><ul><li>This setting can be used if the address formatting you use in your Halo instance does not match the formatting of the address in QuickBooks Desktop. If address formatting does not match this can cause issues when syncing invoices to QuickBooks Desktop. </li></ul><p><strong>Always create QuickBooks invoice lines as taxable (v2.232.1+): </strong>When this is enabled, all invoice lines will be marked as taxable even if the tax value of the line item is 0 in Halo. If you are using Avalara with your QuickBooks Desktop you must enable this setting in order for your tax to be applied once the invoice is sent to QuickBooks. If you are operating in a version of Halo prior to version 2.232.1, you will need to set a tax value greater than 0 for your line items to then receive their tax from Avalara.</p><p><br></p><p>Now you will need to configure an API only agent to give access to the integration</p><p><br></p><p><strong><span style="font-size: 12pt;">Create API application</span></strong></p><p>You can create an API only agent a<span style="font-size: 11pt;">t no additional license usage, this is done by creating a ne</span>w agent, give them administrator permissions via the role: Administrator and checkbox on the setting "API Only Agent" from the details tab of the agent creation screen.</p><p><br><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImZkMTJlYjlmLWU2YjAtNDJjNC1iOGU1LTM5NzNhZWE4ZDEyMiJ9.oQG9wC9mPFJXCHrkOJKGjP99a0IcMXp7fK3MYtAke_Q" width="836" class="fr-fic fr-dii" style="width: 838px; height: 797.356px;" height="797"></p><p><strong><span style="font-size: 10pt;">Fig 3. API only agent.</span></strong></p><p><br></p><p>Now we have our API only agent go to Configuration > Integrations > Halo API.</p><p><br><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjI4NjgwNDFlLWE0NzUtNDU5YS04M2U5LTE3YzlhMDM0OGZhNyJ9.ZKptYO-uiDcoCrLYQfMkfGtz4erxxBuVJRXEF4GEV-k" class="fr-fic fr-fil fr-dib" width="555" height="288"></p><p><strong><span style="font-size: 10pt;">Fig 4. Halo API module.</span></strong></p><p><br></p><p>Click into this module and then "View Applications" (there will be a "New" button near the top right hand side of the list).<br><br></p><p>Create a new application.</p><p><br><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjZhMDIyZWI2LWVjMWItNDdiZi05YWFjLTE3NmRkMGE0ODI3YyJ9.88_sSIyLqrWBsxxSbg8UB9nsBXQpjD84QycVoaFaM7I" class="fr-fic fr-fil fr-dib" width="619" height="357"></p><p><strong><span style="font-size: 10pt;">Fig 4. New API application.</span></strong></p><p><br></p><p>Enter a sensible Application Name (such as "QuickBooks Desktop") and set the Authentication Method to "Client ID and Secret (Services)" and copy the Client ID and Secret.</p><p><br></p><p>Set the Login Type to "Agent" and choose the API Agent account which you just created.</p><p><br></p><p>Save this and go to the permissions tab of the API application, and add the following permissions to the application:</p><p><br></p><ul><li>"Admin"</li><li>"Edit - Items"</li><li>"Read - Items"</li><li>"Edit - Customers"</li><li>"Read - Customers"</li><li>"Edit - Invoices"</li><li>"Read - Invoices"</li></ul><p><br><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjRiMDkyYjEyLTBlYzQtNDIxYS05NjAzLTIyZmNmNzZlOWMwMiJ9.T7LlSQi2iu-dDxU-ZqArhTFQeW6RZXWSWO2l_LMw4m0" class="fr-fic fr-fil fr-dib" width="305" height="599"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY3ODEwMTJhLWE0MDgtNDhiNy04NmFmLWYwN2E3NTcwZTgyMCJ9.VVztOPdl7bs_2kZiVZzHtldiokAPJiOCXrtexoANN3g" class="fr-fic fr-fil fr-dib" width="229" height="94"></p><p><strong><span style="font-size: 10pt;">Fig 5. Permissions for API application.</span></strong></p><p><br></p><p>Save your application. </p><p><br></p><p><strong><span style="font-size: 12pt;">Setup the Accounts Integrator</span></strong></p><p>Now you will need to download the Halo Accounts Integrator, a link to this can be found on the QuickBooks Desktop setup page (Configuration > Integrations > QuickBooks Desktop). Alternatively that can be downloaded from <a href="https://s3.halopsa.com/HaloAccountsIntegrator.zip" id="isPasted">https://s3.halopsa.com/HaloAccountsIntegrator.zip</a></p><p><br></p><p>Download the app and ensure that it is running locally to QuickBooks Desktop</p><p><br></p><p>Start the HaloAccountsIntegrator.exe and enter your HaloPSA URL and the Client ID and Secret that were noted down. Click "Connect" and then Click on the QuickBooks Desktop icon.</p><p><br></p><p>Ensure that the QuickBooks Desktop Foundation Classes are installed locally and if they are not you can download them from the link on the accounts integrator screen.</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImQ2NmZhMThmLWE3N2EtNGM2NS1hMjRhLTZjZmQ3Mzc4ZDVlMyJ9.uNqsxWp7ITqMZDqX2EsFtNOuLo3nxqFkAouCfpegxEg" class="fr-fic fr-fil fr-dib" width="822" height="397"></p><p><strong><span style="font-size: 10pt;">Fig 6. Halo Accounts integrator.</span></strong></p><p><br></p><p>Choose your correct QuickBooks Desktop Version from the dropdown and ensure that QuickBooks Desktop is running then click Connect. <em><strong>Note: Ensure that you are logged into QuickBooks Desktop as the Admin account - else an error accessing your company file will be returned.</strong></em><br><br></p><p>Once connected you should see an introduction tab and 4 other tabs for each entity that the integration currently interacts with.<br><br></p><p>You can create a new company file and then sync Data to and from Halo, such as tax codes, customer records, items, and invoices. Halo will require you to give read and modify permissions so either checkbox option of: "When QuickBooks company file is open" or "Allow access even when QuickBooks is not running".</p><p><br></p><p>In order to progress from this page you will need to select 'Learn more about permissions...' then a text box will appear at the bottom of the pop-up. In this text box type the word 'Yes' to confirm and continue. </p><p><br></p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjcwOGRhY2I2LTE5NzYtNGIxZC1iMzQxLWMwZWFlOTNmZjhmMiJ9.Gz5BIf1idFlxd_McUxeJuD-2ZcLhfkU4Q0oZ858Hx7k" class="fr-fic fr-fil fr-dib" width="808" style="width: 810px; height: 776.483px;" height="776"></p><p><strong><span style="font-size: 10pt;">Fig 7. Application permission.</span></strong></p><p><br></p><p>You will find an instructions page when the Halo accounts sync opens after connecting to QuickBooks Desktop, import/export the data in the order given below.</p><p><br></p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjFiMTNkYmIyLThkNzgtNGYxYy05ZTA2LTk4ZDY4MjMzZGNmNiJ9.VWro_t0zT-xz2Kewa5g_KBlLixwRuWDOY7ZYxR--knM" class="fr-fic fr-fil fr-dib" width="1135" style="width: 1137px; height: 569.994px;" height="570"><strong><span style="font-size: 10pt;">Fig 8. Sync instructions.</span></strong></p><p><br></p><p>Make sure to import the Tax codes before importing the customers, items and invoices.</p><p><br></p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjhhNTg4OTllLTRhZGYtNDM5MC05N2VjLWY1MjdkZTM5MTNiNyJ9.RtKPhTdNN5jo7PxcC6HiNF3KuGXtC_zKkn0Boz2SiwE" class="fr-fic fr-fil fr-dib" width="703" height="199"></p><p><strong><span style="font-size: 10pt;">Fig 9. Importing the tax codes.</span></strong></p><p><br></p><p><br></p><p>By doing it in this order, you will have customers imported with tax codes attached.</p><p><br></p><p><strong data-pasted="true"><em>Note: If syncing customers from Halo to QBD, there needs to be at least one customer within QBD first.</em></strong></p><p><br></p><p><strong><em>Note: If syncing items from Halo to QBD, the "Asset Account for Exporting to QuickBooks" needs to be of type "Other Current Asset".</em></strong></p><p><br></p><p>If you try to post invoices into QuickBooks Desktop for customers that don't exist in Halo, you will be given an error letting you know.</p><p><br></p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImVjOWI0MmE0LWZjOTUtNGFiYS1hYmEwLWJmYjVlYjY4NDUwOCJ9.uJ6p1KUWI5NF8T-B0dT-wWvSnXJqJFufX81J3I_0SuA" class="fr-fic fr-fil fr-dib" width="1370" style="width: 1372px; height: 320.645px;" height="321"></p><p><strong><span style="font-size: 10pt;">Fig 10. Invoices sync.</span></strong></p><p><br></p><p>Invoices can be posted individually by entering the ID of the invoice, which is found in the URL when you are on the invoice page. To post invoices you must have imported the correct customers and products that match to the invoice you are posting. Products that haven't been imported, will return the following error.</p><p><br><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjhkNWU0YjIwLWU5M2EtNGJhMS05N2VhLWY1MzBjNjUyMjhhNSJ9.8Md1gYlgfZjrWj3I8N1uG6pHwTfUH_XY9lI0zVoOzhY" class="fr-fic fr-dii" width="1197" style="width: 1199px; height: 81.1478px;" height="81"></p><p><strong><span style="font-size: 10pt;">Fig 11. Error example.</span></strong></p>