1. Gradient Support Center
  2. Synthesize™
  3. Synthesize Billing Module - Guides and Resources

A Guide to Service Bundle Management with HaloPSA

Service Bundle Management with HaloPSA. Maximizing Profit Margins and Service Delivery through Effective Billing Practices for MSPs.

This guide aims to address potential pitfalls that may arise when MSPs resell service bundles or packages without thoroughly examining their tech stack. If left unchecked, this could lead to subpar service delivery and reduced profit margins. To avoid such outcomes, it is crucial to follow billing best practices. This includes configuring recurring agreements and breaking down service components for more comprehensive financial reporting and management. By conducting audits and ensuring compliance, you can mitigate the risks and maximize your success.

nb-flow-march2023

Breakout Component Services in HaloPSA

The services that are added to a Service Bundle or Comprehensive Package are called component services or add-on services. These services are typically included in the Cost of Goods Sold (COGS).

To gain better financial visibility and identify any shortcomings in your tech stack, it is recommended to separate all managed services and COGS.

You can achieve this by following the steps below and generate a consolidated invoice template in HaloPSA. This will allow you as an MSP to have a clearer and more detailed view of your profit and revenue margins, while presenting a more refined invoice template that won't confuse your clients.

1. Create Custom Field – Product

  1. Navigate to Configuration > Custom Objects > Custom Fields > Entity: Product

  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

2. Enable Custom Field for Service Bundle Items in Recurring Items

  1. Navigate to Products > Recurring Items > Item of Choice

  2. Select Custom Fields tab and Edit item

  3. Enable checkbox for Service Bundle

  4. Save

3. 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 Customise 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>

4. 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.

 

Example of Custom Invoice

Recurring Invoice

Custom Invoice