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
- Breakout Component Services in HaloPSA
- Create Custom Field - Product
-
Enable Custom Field for Service Bundle Items in Recurring Items
- SQL Query
- Update Report Appearance
- Create Custom Invoice PDF Template
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
-
Navigate to Configuration > Custom Objects > Custom Fields > And Select "Item" from the "Entity" dropdown menu towards the upper left.
-
Create New
-
Enter a Field Name
-
Enter a Field Label
-
Choose Checkbox from Type of Field dropdown
-
Save custom field
Enable Custom Field for Service Bundle Items in Recurring Items
-
Navigate to Items(Items By Group view) > Recurring Items and then select whichever Item you wish to enable for bundling.
-
Select Custom Fields tab and then the Edit button
-
Enable checkbox for Service Bundle
-
Save
Create Custom Report
Create a Custom SQL Query Report for a custom Invoice Table
-
Navigate to Reporting
-
Create New
-
Enter Title
-
Select Group
-
Add Description
-
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
-
Under Appearance enable Customize Table HTML
-
Copy & paste the following under Report Table HTML
-
Copy & paste the following under Report Table Row HTML
-
Copy & paste the following under Report Table Group HTML
-
Save Report
-
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>
Create Custom Invoice PDF Template
-
Navigate to Configuration > Reporting > PDF Templates > Invoices
-
Create New
-
Under Details tab enter name and add report
-
Add report that was created earlier
-
Copy the Data Variable (example, $REPORT186DATA) to your clipboard
-
Under Details Table tab, remove default columns and add custom column
-
Add Data Variable copied from earlier steps to Cell Content
-
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.
-
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