Monthly and annual quote terms and HaloPSA invoicing
How a monthly or yearly term on a quote line reaches HaloPSA when you create a sales order, how those lines appear on recurring invoices, and what you still do in Halo to start billing.
Written By Bram Fofana
Last updated 7 days ago
On a quote, monthly and yearly are a billing Term on each line β how often that line is charged β not the same as the quote Contract duration (how long the deal runs). When a HaloPSA tenant accepts the quote and someone clicks Create sales order, Salesbuildr writes that Term onto each selected sales-order line. HaloPSA still needs Add recurring invoice on that sales order before recurring invoices are generated.
This article is for tenants connected to HaloPSA. ConnectWise and Autotask handle recurring lines differently β see Other PSAs.
How monthly and yearly are chosen on the quote
Each catalog product has a Term under Sellable information (Products β open the product β Edit). The usual enabled values are One-time, Weekly price, Monthly price, Quarterly price, and Yearly price. HaloPSA tenants can also receive longer periods from Halo (for example 6-month or multi-year licenses); those still store on the product even when they are not offered in the dropdown.
When you add the product to a quote, the line keeps the Term it had at add time. Changing the catalog later does not rewrite lines already on a quote.
To change Term on a live quote:
- Open the line (or use Spreadsheet View and edit the Term column).
- Set Term to Monthly price or Yearly price (or another recurring period).
- Save.
You can also set Term for several lines at once from Spreadsheet View with Edit fieldβ¦. After a quote is sent, retract it before changing lines.
Contract duration is a separate quote setting (β― β Manage Settings). It is a number of months or years. It drives recurring totals on the proposal and, later, how many times Halo should bill a recurring sales-order line. A new quote can pick up the opportunityβs value in months when that is set; you can still change it on the quote. See Quote Editor.
Quote totals group lines by Term β one-time, monthly, yearly, and so on. Turn on Show Total Details (also labelled Show one time and recurring total summary) if the buyer should see those rows separately.
Halo catalog items that look recurring but arrive as one-time
Haloβs Is a Recurring Item flag is not enough. Salesbuildr sets product Term from that flag and the itemβs Default Billing Period on the Halo item itself (not the item Billing tab, which is accounting). If Default Billing Period is missing, the product imports as one-time even when Is a Recurring Item is Yes.
Fix the Halo item, then run Settings β Integrations β HaloPSA β Products β Synchronize products and services. Existing quote lines keep the Term they stored when they were added β edit those lines or remove and re-add the product. First-time Halo connection: HaloPSA Setup.
Approval does not start Halo billing
When the quote is Approved, Salesbuildr updates the opportunity and the linked Halo quotation. It does not create a Halo sales order or a recurring invoice.
The Halo quotation already carries each lineβs billing period and period count (same math as the sales order). Linking a sales order to that quotation does not copy those fields onto the order β Create sales order writes them again from the Salesbuildr quote.
Fulfillment is a separate click. See From won quote to delivered order.
Create the sales order
- Open the approved quote.
- Click Create sales order.
- Select the lines that belong on this order β products, services, labour, bundle children, and enabled add-ons. Every selected line must already be linked to a Halo item.
- Optionally set a title, date, and internal note.
- Confirm. Salesbuildr creates the sales order in HaloPSA in the background.
You can create more than one sales order from the same quote, with a different selection each time. Each line can sit on only one order. Dialog fields: Fulfillment Tickets.
What Salesbuildr writes on each Halo sales-order line
Sell price and cost go on the Halo line as price and cost. Halo copies those amounts onto the recurring invoice when you create it.
Number of periods is billing cycles, not a copy of the month count. Examples on a 24-month contract: a monthly line sends 24; a yearly line sends 2.
Setup fees, quote shipping, and markup extras on the Halo quotation are not sales-order lines. Shipping: From won quote to delivered order.
If a selected product is not linked to HaloPSA, the whole sales order fails and no incomplete order is created. Sync or link those products first, then retry.
Generate the recurring invoice in HaloPSA
Create sales order does not create a Halo recurring invoice. After the order is in Halo:
- Open the sales order in HaloPSA.
- Confirm each recurring line: Is a Recurring Item, Billing period, and Number of periods (Halo: Edit β pencil on the line).
- Use Haloβs Add recurring invoice action on that sales order.
Halo then builds the recurring invoice from those sales-order lines. Monthly lines invoice every month for the period count you sent; yearly lines invoice once per year for that count. One-time lines stay off the recurring invoice.
Salesbuildr does not start, pause, or post those invoices. Invoice dates, tax, and Halo billing defaults stay in HaloPSA.
If a line is missing a billing period after sync, check the Salesbuildr quote Term and Contract duration, then fix the Halo line. Clicking Create sales order again will not rewrite lines that already synced. Repair those fields in HaloPSA.
Checklist before you expect recurring invoices
Do this in Salesbuildr before you create the sales order:
- Term on each recurring line is Monthly price, Yearly price, or another recurring period β not One-time.
- Contract duration is set when the deal has an end date, so Halo receives a period count. Leave it empty only when billing should be open-ended.
- Every selected product shows a Halo link. Unmapped or unsynced products fail the whole order.
- The quote is Approved. The button is missing or disabled until then.
Then in HaloPSA:
- Open the sales order and check billing period and number of periods on each recurring line.
- Click Add recurring invoice.
- Confirm the new recurring invoice lists the monthly and yearly lines on the schedules you expected.
Failed syncs appear on the quoteβs Halo sync card and under Settings β Tools β Issues. Open the issue, fix the cause, then Retry only when the items are still pending or in error.
A different path: Add items to contract
Add items to contract on an approved quote is not the same as Create sales order.
From the quote sidebar Contract items card you can add service (recurring) lines to an existing Halo client contract, or create a new one. Salesbuildr then creates a linked Recurring Invoice in Halo with those lines as invoice lines β you do not click Add recurring invoice on a sales order.
Only service lines that are not already on a PSA contract can be selected. One-time products go through procurement or the sales order, not this dialog.
When you create a new Halo client contract from Salesbuildr, the contract header is created as yearly. Line quantities and prices come from the quote. Confirm the recurring invoiceβs billing period in Halo if a line should bill monthly. For per-line monthly versus yearly on a sales order, use Create sales order and then Add recurring invoice.
Contract dialog: Quote Editor.
Other PSAs
You can have one PSA connected at a time.
See also
- Fulfillment Tickets β Create sales order and line selection
- Quote Editor β Contract duration, totals, and Add items to contract
- Spreadsheet View for quote line items β edit Term on many lines
- HaloPSA Setup β first connection and product-group mapping
- Product Detail β catalog Term
- Attaching recurring services to every quote β putting a Recurring service on every deal
- From won quote to delivered order β what approval does and does not create
- Recurring quote lines and ConnectWise Sales Orders β ConnectWise opportunity products
- PSA Sync Issues β other Halo and PSA sync errors
Was this helpful?
More in Integrations
IntegrationsPax8KPN / RoutITLeaderCloudStill need help? Ask the team