HaaS and SaaS Billing in ConnectWise with QuickBooks
When you lease hardware or software to customers under a HaaS or SaaS model, ConnectWise needs two parallel tracks: one to bill the customer on a recurring agreement, and one to record the cost of the underlying asset. How that cost flows into QuickBooks depends on whether you use inventory or non-inventory products.
Note: Both options require the Purchasing/Inventory license for ConnectWise Manage.
Choose your product type
Option 1 — Non-inventory
Use non-inventory class and type products when you want simplicity. The full cost of the hardware or software hits COGS in the same period as the PO date. This front-loads cost relative to revenue and keeps the asset off your QuickBooks balance sheet — which may not reflect reality if you own the hardware.
Option 2 — Inventory
Use inventory class and type products when you want the asset on your balance sheet. Cost flows from asset depreciation rather than a one-time COGS hit, and the hardware or software appears as an asset on the balance sheet in QuickBooks.
Set up the HaaS/SaaS workflow
Step 1 — Create the product in the catalog
Go to Procurement > Product Catalog and create a product representing the hardware or software.
- For Option 1, set the product class and type to Non-Inventory.
- For Option 2, set the product class and type to Inventory.
Step 2 — Create a second internal company
Go to Companies > Companies and create a second internal company to serve as the bill-to for purchases.
Note: You cannot use the company listed in System > My Company for this — ConnectWise blocks billable items against that company from flowing into invoicing. The second internal company lets you generate invoices and POs that transfer correctly to QuickBooks.
Step 3 — Create a warehouse and warehouse bin (Option 2 only)
Skip this step if you’re using Option 1 (non-inventory products).
Go to System > Setup Tables > Warehouse and create a customer warehouse. Then go to Setup Tables > Warehouse Bin and create a corresponding customer bin.
Note: This setup lets you use ConnectWise’s standard valuation reporting. If you want a separate HaaS/SaaS warehouse with individual bins per customer, you’ll need custom reporting for valuation detail by bin.
Step 4 — Create the opportunity
Create an Opportunity for the customer that includes the HaaS/SaaS agreement. The opportunity needs two products:
- Purchasing product — The inventory or non-inventory product from Step 1. Set the total cost of buying the hardware or software. Leave the price blank (no sale amount).
- Agreement addition product — An agreement class product with the recurrence pattern for the billing cycle. Leave cost blank. Set the price to what you bill the customer per period.
Step 5 — Convert the opportunity to an agreement
Convert the Opportunity and select Agreement during conversion. Select only the agreement class product. Once the agreement is created, confirm the addition price matches the billing cycle. Invoice the customer as normal.
Step 6 — Convert the opportunity to a sales order
Convert the Opportunity a second time, this time selecting Sales Order. Select the inventory or non-inventory class product (not the agreement product).
Step 7 — Purchase the product
Go to Procurement > Purchasing > Actions > Create PO and create a purchase order for the inventory or non-inventory product.
Step 8 — Receive the product
Go to Procurement > Receiving and select Receive Products from the Actions dropdown.
Important: If you’re using Option 2 (inventory), make sure the product is received into the correct warehouse and warehouse bin from Step 3. Then mark the product as “Shipped” in Procurement > Product Shipment.
Step 9 — Transfer the PO to QuickBooks
Go to Finance > Accounting Interface > Unposted Procurement and transfer the PO.
For Option 1 (non-inventory), the full cost hits COGS at this point.
Step 10 — Invoice the sales order
Invoice the Sales Order. The invoice should have no sale amount — cost only. Change the Bill To on the invoice to the second internal company created in Step 2.
Step 11 — Transfer the invoice to QuickBooks
Go to Finance > Accounting Interface > Unposted Invoices and transfer the invoice.
For Option 2 (inventory), the cost hits COGS at this point.
Step 12 — Create a journal entry in QuickBooks (Option 2 only)
Skip this step if you’re using Option 1.
In QuickBooks, create a journal entry to move the cost from COGS to Fixed Assets. Then depreciate the asset normally using QuickBooks depreciation tools.
How the two options differ
Both options produce the same outcome over time: the agreement invoices sent to the customer increase revenue each period, gradually recovering the cost of the hardware or software.
The difference is when and how cost is recognized:
- Option 1 (non-inventory): The full procurement cost hits COGS when the PO transfers in Step 9. The asset never appears on the balance sheet.
- Option 2 (inventory): Cost hits COGS when the invoice transfers in Step 11, then you move it to Fixed Assets via journal entry. The asset appears on the balance sheet and depreciates over time.