Why Connor builds bundled agreements at the line item level, not the product level
A practical walkthrough for MSPs who need bundled products in HaloPSA agreements without locking themselves into fixed pricing or messy reporting
The short version
This HaloPSA tutorial covers why the native product bundle tab locks every customer into the same price and cost, and shows the agreement level approach Connor uses instead. You will see how to group recurring items, mark bundled items as free of charge to the customer while keeping the real cost, and pull a working profitability report per invoice.
What you'll take away
-
Product bundle tab assumes one fixed price
The renamed related products tab locks every customer onto the same bundle price and cost, which breaks the moment you discount for one client.
-
Always create the item in the product catalogue first
Adding items ad hoc to an invoice instead of the catalogue wrecks any reporting on volume sold.
-
Group items to control what the customer sees
Groups on a HaloPSA agreement can be renamed and hidden from the generated PDF using the hide group items on PDF setting.
-
Bundled items keep their real cost, zero customer price
Set the sell price to nothing but leave the cost in place so profitability reporting still reflects what the bundle actually costs you.
-
The update prices warning is a trap
Confirming the update item prices on recurring invoices prompt after editing a product can silently overwrite every customer's negotiated price.
-
Agreement profitability report ties cost to the invoice, not the catalogue
Connor's custom SQL report reads total sold and total cost straight off the invoice, so it survives catalogue price changes without breaking historic figures.
Key insights from the episode
-
Avoid the product bundle tab in Products, Recurring Items because it forces identical pricing and cost across every customer who buys that bundle.
-
Groups on an agreement cannot be reordered once created, so build them in the order you want them to appear on the invoice.
-
If a grouped item does not appear correctly after adding it, save and refresh the screen rather than troubleshooting further.
-
Set quantity using choose quantity based on user count or subscription count rather than typing a fixed number where possible.
-
To bundle a product for free, keep its cost field populated but set the customer price to zero, then hide the group with hide group items on PDF.
-
Decline the update item prices on recurring invoices prompt after editing a catalogue product, since margins vary by customer and user count.
-
Build a profitability report against invoice line data rather than the product catalogue, so historic invoices stay accurate when catalogue prices change later.
Questions people actually ask
How do I bundle products into a HaloPSA agreement?
Create each product in the Products or Recurring Items catalogue first, then add them as line items on the agreement grouped under a heading such as bundled licences. Set the customer price to zero for items included free in the bundle while keeping the real cost in place, so reporting still reflects true profitability.
Why shouldn't I use the product bundle tab in HaloPSA?
The product bundle tab, found under Products, Recurring Items, forces every customer buying that bundle to pay the same price and carry the same cost. MSPs regularly discount or include items for free to win deals, and this tab cannot reflect that without creating duplicate bundle products for every variation.
How do I hide bundled items from a customer invoice in HaloPSA?
On the agreement, open the group containing the bundled items and click hide group items on PDF, then save. The group total still calculates correctly but the individual line items do not print on the generated PDF, though the group name itself can still appear.
What happens if I confirm update item prices on recurring invoices in HaloPSA?
HaloPSA will overwrite the price on every recurring invoice using that product with the new catalogue price. Since most MSPs sell the same product at different margins depending on the customer, this can silently change pricing across your whole client base, so it is best avoided.
How do I report on agreement profitability in HaloPSA?
Connor uses a custom SQL report called agreement profitability that reads the total sold and total cost directly from the invoice rather than cross referencing the product catalogue. This keeps historic invoice profitability accurate even after catalogue costs or prices change later.
Why does HaloPSA reporting break when bundle products change in the catalogue?
If bundled pricing lives only in the product catalogue, changing a product's cost or price retroactively affects every report that references it, including invoices already billed at a different rate. Building bundles at the agreement and invoice line level avoids this because each invoice keeps its own recorded cost and price.
Should I add invoice items manually or from the product catalogue in HaloPSA?
Always add items from the product or item catalogue rather than typing them manually onto an invoice or quote. Manually created line items cannot be reliably reported on later, since pulling volume sold across differently named ad hoc items becomes a manual filtering exercise.
Full transcript
2,866 words
Read full transcript
Collapse
Full transcript
2,866 words
Connor: Hello, happy Friday. It's Connor. It is late and it is a Friday. I'm in a robe or dressing down, keeping me nice and warm on this very cold, very, very cold Friday evening. However, I promised I would get this video out, and this is what I'm doing for you right now.
So a question that I get asked all the time is how do you handle bundle products in Halo. The top answer is poorly, honestly, but I think I found the best solution for this one. I've had a little bit of help from Halo as well. I've been back and forth a little bit, and there's a few ways you can handle it. I'm going to show you the first three, which I don't recommend, just as a quick overview, to let you know this is kind of the Halo way, or the preferred way of doing it. I just don't think it works for MSPs. I've been in the space for many years now, and I just genuinely do not believe it works very well.
So first thing is, this is on the beta version only, so I am running version 2104.3. And this is the non-preferred way, but essentially if you go into products and go to recurring items and select one of them, you will now see product bundle exists here. Now all this is is a renamed tab. It used to be called related products, but they've added custom pricing now. The reason I don't recommend doing it this way is for a few reasons, to be honest.
The first reason is, you might sell a managed support package or silver, gold, or you now have bundle products in, but the assumption here is that every single bundle you sell is identical. The price you pay for those products is always the same, and the cost you associate with that product with the customer is also the same. Now we all know a great sales tactic is to discount products, to say we'll give you Microsoft 365 for free, or we'll include it, and we're quite dynamic, right? As MSPs, we like to add value and win customers based on things we can provide free. And I think doing it this way kind of locks you in. You know, this is saying, right, this is the managed support package. This is always going to be the cost. This is always going to be the items that are in this package. If they need to deviate from it, you then have to make a managed support package too, and again, this can get really messy. So I don't recommend doing it this way.
And from a reporting perspective, the issue of doing it this way is you'll have to reference the agreement and then also reference the products catalogue. And if at any moment you change that product line in the product catalogue, that would affect all of your reporting. So you could say, you know, you might have locked in Microsoft 365 for a customer for a year and it costs you three pounds, and then with new customers it cost you six pounds, but how would you reflect this indeed, after they make another Microsoft 365 or even remember to make another Microsoft 365 for new costs as opposed to just doing it at the agreement level? So I don't recommend doing it this way.
That's what I'm going to start with. So I'm going to show you how I do recommend it. I'm not saying it's the prettiest way, but I think from a usability and actual end outcome, it's very similar, and I think it's perfect. So let me go ahead and show you.
So first of all, a caveat to start this conversation with is whenever you're doing a recurring invoice, a manual invoice, or even a quote, make sure the product exists in your product or item catalogue. If you're on the USA language pack, we'll say items. English language pack or UK language pack, it will say products. Same thing.
The reason I say this is because if you want to start pulling reports on how many of X products you sell, and you have different named products, it's going to be a nightmare. If you add them manually to an invoice, you're going to have to pull all the invoices down and then try and whittle it down or filter it out, and it's just not going to work very well. So make sure if you're invoicing or we're doing a recurring invoice or even a quote, you add the item in here. Yes, it's a bit more work, but the analytics you can pull from that and the reports you can pull are going to be so much stronger than these ad hoc generated items.
So I'm just going to go ahead and make an item very quickly, and let's say that this customer, let's say we normally bundle in something for customers. So let's say Acronis workstation backup. Let's say we build all this into our per user billing because it's a nice thing to do, all right? So I'm going to say it's a recurring product. Yes, it exists in the group recurring items, and the billing period is monthly, and that's all we need to worry about right now. We'll go into more of these settings in a later video, but for today we'll skip past it.
Costed in pricing, the price to the customer is twenty pounds a month. I know we're going to bundle it, just stay with me. The cost to me is five pounds or five dollars. Now, the difference between these two boxes is the idea is that when you put it on a recurring invoice, it will be X price, and when you just sell it one off, it will be the price on the left. And again, not too important for today. I'm just going to go ahead and save that.
If you are running the latest version, you will notice the following thing happens when you do this. I don't know when it appears. It seems to be random, as far as I can tell, but in a minute a box will pop up. There we go. Update item prices on recurring invoices. Again, I don't recommend you do this. If you have, I don't know, Microsoft 365 Business Basic, and you realise the product is wrong, and then you update this, and then you tell it to update prices on all your recurring invoices, you're going to have a field day because we sell things at different prices depending on what margin we need to make, depending on the customer, depending on the number of users they have. You know, and I just think this, you're going to run into more headaches than you are just going through a few invoices to adjust them accordingly. So just thought I'd add that in there as well.
So we've made a product, Acronis Workstation Backup. We then go to our agreement, and I've added a few things in here. So a few really important things, and I'll just go ahead and delete all this for you and make it with you now.
I like to group up on my invoices to make them look pretty, but also because it adds value in what we're about to do. So the problem with groups at the minute is you can't order these. Once you make them, they are made. They exist in the order that you made them. So just make sure you make them in an order that makes sense. And you can add groups of items. I'm just going to do this manually now, but we'll touch upon groups in another video if that's something you require.
So let's start with manage server cost based on user. Let's do licence costs. And then let's do, uh, let's do I don't know, let's call this, uh, free of charge licences okay.
So what we can do now is quite simple. We can start adding the recurring items. So let's say I have a managed support package, just because that's what I like to name it, and the pricing is typical across most customers. Again, and we'll show you how this works in a minute anyway. We have Acronis workstation backup. We have Microsoft 365 Business Basic, Microsoft 365 Business Premium, and we have some, uh, let me do, uh, SentinelOne protection, okay.
It's going to go and save and refresh the screen. And the reason I do this is because these groups can be a little bit buggy. You don't have to do this, but if you notice when you put an item in a group it doesn't go there, refresh your screen, it'll work.
Then we need to basically move these into the right groups, add the right pricing, might cost, and basically work out the quantities. So managed support package, this is based on number of users. Now unfortunately I'm working in a Halo sandbox which has no users, but what you would do at this stage now is choose quantity based on news account, select that, and select the users. I'm just going to say there's five users. Sixty pounds a month, cost me nothing.
And click save. Oh, need to move the group first of all. Put this into manage service user. Save that. Line item will then pop up here. And what we're saying here is the price is sixty pounds to the customer, but this doesn't actually cost me anything. This is me just selling it because I bundle things into this cost.
I then say that actually Microsoft 365 Business Basic sits in licence costs, as does Microsoft 365 Business Premium. And I'm going to say that this customer has three Microsoft 365 Business Basic. Again, you would base this off choose quantity from subscriptions or from licence counts, but in this case I don't have anything set up, and I'm just going to say the cost is five, but I sell this for ten.
I'm going to do the same for Microsoft 365 Business Premium. So basic math says I've got two of these at eighteen and twenty-four is fine.
Now what I'm going to do with these two is I'm going to say these are my bundled costs, and you could actually rename this to let's say bundled licences, just to make this tidy. Bundled licences. And what I'm going to say here is I'm going to keep the costs in. I'm going to say they get five of these, but I don't charge the customer for these. These are included in that bundle. And I'm going to say SentinelOne is the same. So we're going to have five of these. It doesn't cost the customer anything, but it does cost me ten pounds a user.
And click save.
Now you're pretty much done, to be honest with you. We can now go to invoicing. We can go to ready for invoicing. We can change the date in January because that's when this is next up. And I can create the invoice.
And then we go over here. And then you can see that the customer is getting charged £378. That is because we have five managed support packages at sixty pounds a user. Licence costs gives you the net total. Now some people don't like to show these bundled prices. So when I do a generate PDF, this should hopefully be quite quick.
When you generate this, it then shows it on here. Now some people don't like that. Don't know why that state is that. Don't worry about it. Some people don't like this. So what you can do is if I just go ahead and delete this invoice, and I'm just going to jump in here and also delete any previous invoices as well.
What you can do on your agreement is actually hide those items. So on the group, you will see this button here, which says hide group items on PDF. We can go ahead and click save on that.
Now, unfortunately, as it currently stands, when we create this invoice in a minute, and let me just make sure that, okay, that's fine. The problem in a minute is when we do this, you will still see bundled licences. So you could preface this with number of users or whatever to just have that line item. But let me show you how this looks now.
I changed this to December. And I go ahead and create this invoice. And generate the PDF.
Any moment this will load, I will assure you. Um, I've had a few problems with my sandbox tonight. I don't know if it's because I've been deleting and recreating these twenty times. This isn't my first take. I started this about two hours ago and then realised that my report was slightly wrong, and then this was wrong, and then yeah, you know, and this is taking forever. In a day that has blocked the pop-up. Why not always allow. Let's try again.
There you go. Don't know why this has stayed here. I'll have to look into that later, but this is what your invoice can look like to your customer. So you have your managed service cost here. This is the cost. You've got your licence costs here. This is the cost. And then you have free of charge licences down here, and it just shows the quantity of five.
And that is pretty much the way to do bundled, in my opinion, the best way to re-bundle, because it keeps it all in one place. Having it split between, you know, you've got products with related items or bundle products that you then have to report back on it, it becomes messy. And the good thing is I have a report for this. So I have this report in here. I will share the SQL with you down below. And it's called agreement profitability. And it looks like this.
So total sold on invoice is £378. Let's go ahead and check that very quickly. That is correct. £378. And the total cost on invoice is one hundred twenty-six, giving me a £252 invoice profitability score.
If I was to go ahead and change Acronis workstation backup and say the cost was fifty pounds and save it, and refresh this report, you will now see that the invoice profitability has gone down a lot because obviously that item has increased.
Um, this is for me the best way to do it. And it keeps it all in one place. You can see it based on invoice as opposed to having to try and cross-reference, right, is this related to the product cost, is an item cost, is it changes, it gone up and down? For me, this is the best way to do it. Yes, there is some manual work. So if your cost does go up for SentinelOne protection, you will have to go in every invoice and you know, change this. And I would prefer that personally than having it automatically change all my invoices based on those values.
Um, and that's pretty much it. This is the way I like to do bundled items, and again, I said it's not the cleanest, but I think this is the easiest way. I will happily put my report SQL in the comments of this video below. And if you have any questions, please let me know.
Um, I've been Connor. Have a lovely day. Peace out.
Author
Related tutorials
Connor and Robbie have been absolutely instrumental in the transformation we have seen in our systems. Their expertise in Halo along with their insight into industry standards have enabled us to leverage significantly more operational success then we could have accomplished by ourselves. Anyone that is looking for a team to help with your Halo deployment look no further.My IT Place
Our Core Services
Offering support to enable sustainable success for your organisation.