Service Bundle Best Practices with HaloPSA

Maximizing Profit Margins and Service Delivery through Effective Billing Practices for MSPs.

To manage billing effectively, it’s important to:

  • Set up recurring agreements
  • Break down services for better financial tracking

Regular audits and checking for compliance help reduce risks and boost success.

Halo PSA Service Bundles Guide

  1. Breakout Component Services in HaloPSA
  2. Create Custom Field - Product
  3. Enable Custom Field for Service Bundle Items in Recurring Items

  4. Create Custom Report

  5. SQL Query
  6. Update Report Appearance
  7. Create Custom Invoice PDF Template
  8. Example of Custom Invoice


Breakout Component Services in HaloPSA

Services added to a Service Bundle or Comprehensive Package are called component services or add-on services. These are usually part of the Cost of Goods Sold (COGS).

To get a clearer picture of your finances and spot gaps in your tech stack, it’s a good idea to separate managed services from COGS.

Follow these steps:

  • Create a consolidated invoice template in HaloPSA
  • Get a better view of your profit and revenue margins
  • Send invoices that are clear and easy for your clients to understand

Create Custom Field – Product

  1. Navigate to Configuration > Custom Objects > Custom Fields > And Select "Item" from the "Entity" dropdown menu towards the upper left.

  2. Create New

  3. Enter a Field Name

  4. Enter a Field Label

  5. Choose Checkbox from Type of Field dropdown

  6. Save custom field

Custom_Field_for_new_Item_Creation


Enable Custom Field for Service Bundle Items in Recurring Items

  1. Navigate to Items(Items By Group view) > Recurring Items and then select whichever Item you wish to enable for bundling.

  2. Select Custom Fields tab and then the Edit button

  3. Enable checkbox for Service Bundle

  4. Save

Is_Service_Bundle_Option


Create Custom Report

Create a Custom SQL Query Report for a custom Invoice Table

  1. Navigate to Reporting

  2. Create New

  3. Enter Title

  4. Select Group

  5. Add Description

  6. Under Data Source select Write a custom SQL Query and copy and paste the following SQL query.


SQL Query

Begin your query using the provided SQL Query sample as a foundation. Customize the invoice table to your specific requirements by adjusting the displayed columns and modifying the report as needed.

select IDItem_ShortDescription as [Description],
case when idisgroupdesc=1 then '' else IDItem_longDescription end as [LongDescription],
case when idisgroupdesc=1 then null else IDQty_Order end as [Quantity],
i.CFServiceBundle as [Service Bundle],
case when ID_ItemID>0 then 'Product/Service' when IDActionCode>0 then 'Labour' else 'Other' end as [Grouping],
format((case when idisgroupdesc=1 then (select sum(a.IDNet_Amount) from invoicedetail a where a.idihid=invoicedetail.idihid and a.idgroupid=invoicedetail.idgroupid and a.idisgroupdesc=0) else IDNet_Amount end), 'C', 'en-US') as [Price],
case when idisgroupdesc=1 then 'group' else 'line' end as [Type],
format(((case when idisgroupdesc=1 then (select sum(a.IDNet_Amount) from invoicedetail a where a.idihid=invoicedetail.idihid and a.idgroupid=invoicedetail.idgroupid and a.idisgroupdesc=0) else IDNet_Amount end)*(case when idisgroupdesc=1 then (select sum(a.IDQty_Order) from invoicedetail a where a.idihid=invoicedetail.idihid and a.idgroupid=invoicedetail.idgroupid and a.idisgroupdesc=0) else IDQty_Order end)), 'C', 'en-US') as [Subtotal]
from invoicedetail
JOIN Item i ON i.Iid = invoicedetail.ID_ItemID
where idihid=$invoiceid and i.CFServiceBundle > 0

Update Report Appearance

  1. Under Appearance enable Customize Table HTML

  2. Copy & paste the following under Report Table HTML

  3. Copy & paste the following under Report Table Row HTML

  4. Copy & paste the following under Report Table Group HTML

  5. Save Report

  6. Report should look something like this:

Report Table HTML

<tr style="background-color:#7BBCE8;color: white;">
<th><div style="text-align: left">Description</div></th>
<th>Quantity</th>
<th>Price</th>
<th>Subtotal</th>
</tr>
$reportRows

Report Table Row HTML

<tr class="$Type">
<td>$Description<br><span class="smalltext" style="font-size:10px;">$LongDescription</span></td>
<td><center>$Quantity</center></td>
<td><center>$Price</center></td>
<td><right>$Subtotal</right></td>
</tr>

Report Table Group HTML

<tr>
<th>$Groupheader</td>
</tr>

Example_Invoice_Data_Complete


 

Create Custom Invoice PDF Template

  1. Navigate to Configuration > Reporting > PDF Templates > Invoices

  2. Create New

  3. Under Details tab enter name and add report

  4. Add report that was created earlier

  5. Copy the Data Variable (example, $REPORT186DATA) to your clipboard

  6. Under Details Table tab, remove default columns and add custom column

  7. Add Data Variable copied from earlier steps to Cell Content

  8. Under Pages, update Main Page and replace the detail-table to the Data Variable copied earlier in the Core Template HTML, Invoice Line Table Row HTML and Invoice Group Table Row HTML.

  9. Lastly, change the PDF invoice template in each Recurring Invoice or change the default PDF template for all customers in Configuration > Billing > General Settings.

 Custom_Invoice_Description

Column_Content_Description

HTML_Table_Row_for_Invoice_Line


Example of Custom Invoice

Recurring Invoice

Recurring_Invoice_option

Custom Invoice

Example_Recurring_Invoice

Top