Cookies

We use analytics to see how the site is used so we can improve it.

Skip to content
Renada

Why Connor sets up two agreements for every HaloPSA customer

A practical walkthrough for MSPs setting up agreements, charge types and recurring invoices in HaloPSA, from a consultant who builds them daily

4 December 2024 12 min watch Connor Fagan

The short version

This tutorial walks through setting up agreements (called contracts in the US language pack) in HaloPSA, covering labour types, charge types and recurring invoices. It shows the two-agreement approach one consultant uses to keep included support and billable work separated cleanly, so invoicing stays simple even as customers grow.

What you'll take away

  • The two-agreement approach

    One agreement holds everything included in the deal, a second catches anything that falls outside it, so invoicing never gets muddled.

  • Start date silently blocks billing

    If an agreement's start date sits in the future, tickets logged today against it will not count and go billable instead.

  • HaloPSA fakes unlimited hours with nines

    There is no true unlimited option, so an astronomical number of nines stands in for it and ticks down as time is used.

  • Charge types decide what an agreement actually covers

    Linking a charge type like remote support to an agreement is what makes logged time count against it, not the agreement itself.

  • A catch-all charge type protects against forgotten setup

    Adding every remaining charge type to the pay as you go agreement means a new charge type you forget to configure still bills correctly.

  • One invoice, all charges included

    Linking outstanding labour charges to the monthly recurring invoice gives the customer a single bill covering both agreements each month.

Key insights from the episode

  1. Agreements are called contracts under the US language pack in HaloPSA, same feature, different label.

  2. Set the labour type to prepay if you want unused monthly hours to roll over or expire, fixed if it's a flat unlimited or capped allowance.

  3. Cost per period on an agreement is only a reporting metric for your internal costs, it does not affect customer billing.

  4. Charge type overrides inside an agreement are irrelevant if that charge type is already marked as included, since included time is free.

  5. Check periodic history on the agreement to see hours used and chargeable units for any given billing period.

  6. Ready for invoicing under the invoicing menu shows chargeable hours per ticket before you generate the actual invoice.

  7. Charge type minimum increments, set under configuration, billing, charge types, control how time rounds up, for example a 60 minute minimum then 15 minute increments after.

  8. An agreement can hold more than one recurring invoice, so a monthly managed services charge and a yearly domain charge can sit on the same agreement.

Questions people actually ask

What is the difference between agreements and contracts in HaloPSA?

There is no functional difference, they are the same feature under different names. Contracts is the label used in the US language pack, agreements is used elsewhere in HaloPSA.

How do I make HaloPSA charge for time only when hours run out?

Set the labour type to prepay and give the agreement a fixed number of hours per period. Anything used beyond that allowance becomes billable, or you can choose not to support the customer past it.

Why is a ticket in HaloPSA showing as billable when it should be included in an agreement?

Check the agreement's start date first, since a future start date means today's tickets will not count against it. Also confirm the ticket's charge type is actually linked as included on that agreement, since the agreement itself does not include anything until charge types are configured.

How does HaloPSA handle unlimited hours agreements?

HaloPSA has no dedicated unlimited setting, so it represents unlimited hours as an extremely large number of nines that ticks down as time is logged. This is a workaround rather than a true unlimited flag.

How do I set up charge types in a HaloPSA agreement?

Open the agreement, go into charge types, and add each charge type you want covered, such as remote support. You can also restrict this further by site or ticket type, for example including incidents and problems but excluding service and change requests.

How do I get HaloPSA to send one invoice covering all a customer's charges?

Edit the monthly recurring invoice on the primary agreement and add outstanding labour charges for the customer, linking them to that invoice. This pulls in charges from other agreements and any sales orders so the customer receives a single monthly bill.

Why should I set up two agreements per customer in HaloPSA?

One agreement should hold everything included in the deal, such as unlimited remote support, while a second pay as you go agreement catches any charge type not covered. This keeps reporting clean and avoids having to build a separate report to work out what was and was not included each month.

Full transcript

2,686 words

Read full transcript

Connor: Hi and welcome to my first ever HaloPSA video.

I keep getting asked a bunch of questions around billing. How do we do agreements? How do I do invoices? How do I set up recurring invoices? What is the best way to handle billing within HaloPSA?

Now I keep trying to reply to everyone's comments on different forums, but unfortunately there's so many caveats to it and so many nuances when it comes to billing that I thought it'd be best, you know, let's make a quick video explaining how I handle agreements and billing within Halo. So obviously their new all can go ahead and replicate that accordingly.

So first thing to start with is agreements. On the left hand side, if you are in the US language pack, you will see this called contracts. It is the same thing, just different terminology. And then go ahead and click new in the top right hand side.

Then we've got our selector customer. So I'm just going to say this is Preston Cakes and Bakes. And then we need to give it an agreement reference. So as you can see, I've demoed this about 10 times already. I'm not used to being on camera in terms of recording videos like this, but essentially we have to do an agreement reference. So I'm just going to call this Ace Managed Services. So all you can eat managed services.

The idea with this is anything that is logged against this agreement is included. For instance, remote support is quite a common one and I'll show you in a minute how we go about setting that up.

Further down we have Labour Type. So we have fixed or prepay. So you could say that they have unlimited hours fixed, so unlimited hours per period. You could say they have just 10 hours. They bought 10 hours in this agreement. If they use 10 hours, that's it. They've used up all their time. Or you could have prepay. So the idea around prepay and how I like to use it is basically monthly rolling, monthly generated time. So you could say they get five hours per month. If they go over five hours, then it is, you know, billable and/or you don't support them. Alternatively, you could say, you know, they get 10 hours every single month. If they don't use it, they lose it or it rolls over.

So for today, I'm going to say this is an Ace agreement. Everything in this agreement is covered or is part of the agreement. I'm just going to say it's fixed.

Start date's really important. If the start date is in the future and you log a ticket against this agreement today, it won't count. So it will go as billable. I'm just going to make sure that I set today's start date as today, which in my case is the 2nd of November.

Then we have the labour period. So I'm going to say this is a monthly agreement. So monthly recurring agreement. And I'm going to say that there is no end date. So you could put in there, you know, this 12 periods, after 12 months, this becomes an end. The contract is, you know, ended. But I'm just going to say that this has no end date. This is monthly recurring indefinitely.

Hours per period. And so obviously we've said the labour period is monthly and I'm saying they get unlimited remote support hours per month.

Cost per period. Um, this is actually your cost. So this isn't going to bill a custom of this. This is kind of irrelevant in Halo really, other than a reporting metric. So you can say, you know, we have 10 agreements, how much do they cost us? Um, so I'm just going to put zero for now because it's kind of not relevant.

Then we've got contract type, agreement subtype, and status. Um, these are all for really for reporting, and you can slightly leverage these when it comes down to if you have certain users at a site that has different billing. But for now, I'm just going to put Managed. In description, I'm going to keep it as managed. Agreement subtype, and I'm just going to say it's live. This will have no real impact on anything we're doing today, but it just makes it look nice.

Date set, date received. This is the day, the date that you sent this agreement to the customer, and then this is the date you received it back, essentially as if they've signed it.

Then we've got settings, and I won't go into these too much now because I'm pretty sure you can mostly all understand this. But if this agreement had a different SLA, so maybe you give them, you know, out of your support agreement, they get five hours a month, you could say, oh, it's on a 24-hour SLA or whatever. Um, I'm just going to put do not override. I want the customer's SLA to be prevalent to the agreement.

Um, and that's all I need to really worry about for now. I'm going to go ahead and click save.

So currently, that is going to do absolutely nothing. Um, you've basically said they have a customer, they have an agreement reference, and they get unlimited support a month, but it won't apply to anything. We've not done anything with charge types here. We've not set up any recurring invoices. So this will literally just sit here as almost a reference, so you know, your engineers know what you've actually sold the customer.

Next, we need to talk about charge types. So the best way to leverage an agreement is to use charge types. And what I mean by this is you can have a ticket and you can mark the ticket as this was remote support. And you can basically say any remote support is logged against an agreement. So I've said this is Ace Managed Services, so all you can eat managed services.

So I'm going to go ahead in here and I'm basically going to say that whenever they do the charge type remote support, that is included in this agreement. And we're going to go ahead and just click save.

Now you can break this down a little bit more granular. You can say this only applies to certain sites for the customer. You can say this only applies to certain ticket types. So what I see a lot of my customers doing is saying, actually, you know what, I just want incidents to be included in here, and I also want to make sure that problems are included in here, but any service or change requests aren't included because they're billable time.

I'm going to keep this quite simple and clean today. I'm just going to say any remote support and charge type is included. And then I'm going to say that anything that isn't included, or anything that isn't remote support is used as pay as you go, and that will take the pricing from the charge type. Again, if you're in the USA language package, let's just say charge rate, but it's the same thing.

And you don't need to worry about anything else in here. You can override a charge type if, for instance, you have remote support is billable. I don't know, a hundred dollars or 100 pounds per hour, and you could override it in here and say it's 200 per hour. Again, not relevant to this agreement because we're saying anything in here is essentially free or is included in the agreement. So I'm just going to go ahead and leave it as that.

Now, that's pretty much you done from a sense of an agreement. So what will happen now is if I go ahead and create a new ticket for Preston Cakes and Bakes, I'm just going to call this test ticket.

I'm going to add the query type. This is a technical request to install Adobe Acrobat. Again, I've zoomed in quite a bit here, so ignore the scaling just so I can demonstrate easier than having a really high resolution.

Um, I'm just going to go ahead and claim this ticket. And I'm going to close the ticket. I'm just going to say this ticket took me two hours and it was the charge type remote support.

What I should then notice is in Billing you'll see that there has been remote support two hours actual time used, two hours contract billable time used, and you'll see in the bottom right hand side the contract balance. Now, unfortunately, Halo doesn't really handle unlimited. It just puts you an astronomical amount of nines. I don't even know what the number is. Is it nine million 900? I don't know. But essentially, you'll see that number ticking down.

If you go to your agreement and go to periodic history, you will then see that in this period, so again, this is started on the 2nd of November, and that's what this will then carry to the first of December, and in the month you'll see that I have used two hours of time and there are no chargeable units.

And there you go. You can see the ticket. So the next step what you would do is basically make your recurring invoice. And I'm just going ahead and save that. And essentially what you do is start adding the things that actually generate you income. So I'm just going to add a recurring item for, uh, managed service charge.

And I'm basically going to say that this is based on the number of users at the site.

Then I'm going to go save it.

So this has three users, so I'm saying that these three users get unlimited support. Now I've not added a price in there, so I should probably say that this, uh, price is, I don't know, 200 pounds, ahead, and it cost me in software costs 20 pounds.

And essentially, that is you done. Now I don't like leaving it here because the problem is is that it gets a little bit messy trying to understand what isn't included and what actually the customer was using each month. You've got to go and make a report if there's not one already, and it just gets a bit of a mess. So what I like to do from here is actually make another agreement.

So I'm going to make a new one for Preston Cakes and Bakes. And I'm going to call this manage services. Uh, let's do pay as you go.

I'm going to do the same again. Labour type is fixed. Start date is today. Labour type is monthly. There's no end date. But this time they get no hours per period. This basically means that anything logged against this agreement is going to be chargeable.

I'm going to scroll down to the bottom and click save.

In charge types, I'm basically going to go in here and add in the rest of the charge types. On-site support, add that in. Consultancy, add that in. And I like to have this catch all, just in case you do add another charge type at some point and you forget to basically include it in this agreement.

And what that means now is that when I go ahead and create a new ticket for Preston Cakes and Bakes, I'll do this as test ticket two.

I go ahead and claim the ticket. I'll close it, and this time I'll put on-site support for two hours.

What you'll then see in the billing tab is that on-site support is the charge type, actual time two hours, contract billable two time, two hours.

If I go back to that agreement to the periodic history, you will see that in this period they've used two hours and there's two hours chargeable.

And if you go into your invoicing section on the left hand side and go ready for invoicing, we should see that test ticket 2 has two hours of chargeable hours, and depending on the charge rate that you set against that, will determine how much that costs. And if you're not familiar with that, you basically go to configuration, you go to billing, and then you go to charge types. And I've said on-site support it is, um, a hundred pounds or 100, depending on your currency, per hour.

And minimum increments is 60 minutes. So basically, no matter how long you're there, they're getting billed for an hour. And then every 15 minutes after that, they get billed for 15 minutes of time.

And that is the quickest rundown I think I can possibly do when it comes down to how to handle agreements. So just to recap, I like to do two agreements. I want to have one that is where all of my billing is generated from. And then I like to have one, sorry, the top one. And then I have one that captures everything else that isn't included.

Now, just another note is what I've currently said is this is basically a monthly charge. You can go in here and add another recurring invoice, give it a name, and do that as your yearly yearly cost. So if you sell domains yearly or whatever, you can add these in here. So you're not limited to just one recurring invoice per agreement.

But just to know, I like to go into this monthly recurring invoice, click edit, scroll down on this right hand side, and basically add any outstanding labour charges for the customer, link it to this invoice. That way, they get a single invoice each month. It covers their monthly charges that I've incorporated and then also the other line items that aren't. And you can add this for many other things as well. So if you've got prepay or any sales orders, you can fake that in. But essentially, I'll actually just give our customers one invoice each month that encapsulates everything.

Um, I hope that has been helpful. I realised that was the quickest run through of my life, but um, I understand a lot of you are using Halo daily. If you have any questions around this, please do let me know. I realise I've only just scratched the surface when it comes to billing.

Um, and yeah, I've been Connor. I hope you've had a lovely day and see you all soon. Bye.

I cannot recommend Renada Solutions, Connor Fagan and Robbie Emerson highly enough. The lack of documentation paired with the complexity and power of HaloPSA meant that we needed a partner in configuring Halo to work within our constraints. What sets Connor and Robbie apart is their careful listening, their encyclopaedic knowledge of Halo, and their unique perspective on crafting truly elegant solutions to complex issues.
Tech Ease Google Logo

Our Core Services

Offering support to enable sustainable success for your organisation.

Consultation Harness the transformative potential of an agnostic advice tailored to your unique business needs. From PSA implementation to ongoing support, our exceptional consultation services pave the way for extraordinary success. Find out more
Virtual Admin Let us handle the technical heavy lifting. Our expert team builds solutions, creates powerful reports and dashboards, and develops automated integrations - giving you more time to focus on what matters most: your clients. Find out more
Product Onboarding We understand that the first steps in adopting a new product can be daunting, we are here to guide you through every stage of the process with precision and clarity. From initial setup to advanced features, maximise the value of your product from day one. Find out more
Virtual Chief Technology Officer (vCTO) Benefit from a remote and adaptable technology expert to seamlessly combine strategic guidance and effective leadership to propel your business to new heights and empower your organisation’s technology ability. Find out more
Where to next? Get the cutting-edge tools to support your MSP business. Contact us today to receive a bespoke quote tailored to your specific needs.