Invoices are how the time, services, licenses, and materials you've delivered turn into money. ZestMSP centralizes invoices in one module, with multiple entry points for generating them from the work you've already tracked. This article covers each generation path, what lands on an invoice, and how invoices flow out through accounting.
Open the Invoices module
Go to Invoices in the left nav.
The Invoices list shows every invoice you've generated, with search to find specific records. The + Create invoice button creates one from scratch — but most invoices are better generated from the source work, which automatically pulls the line items.
Three ways to generate an invoice
1. From a Customer Company
For routine billing on a customer (recurring services, accumulated billable time, materials added since last invoice):
- Go to Customers → Companies.
- Find the customer in the list.
- Use the Generate invoice action.
ZestMSP rolls up everything billable for that customer since the last invoice — Contract Services and Licenses, billable time entries, and materials — into a draft invoice.
2. From a Project
For project-based billing on milestone or completion:
- Open the Project (Projects → click the project).
- Click Generate invoice in the top right.
This pulls the Project's billable time, materials, and any pre-defined billing items into a draft invoice for the Project's customer.
3. From scratch
For ad-hoc invoices (e.g., a one-off charge that doesn't tie to existing work):
- Go to Invoices.
- Click + Create invoice.
- Pick the customer and add line items manually.
What lands on an invoice
A generated invoice typically includes:
- Header info — Invoice number, date, customer, your company info, payment terms (inherited from the customer).
- Contract Services — recurring service lines from the customer's active Contracts (e.g., Managed Services - 78 seats).
- Contract Licenses — license lines from the customer's Contracts (e.g., Microsoft 365 Business Premium - 78 seats).
- Billable time entries — hours logged at the rates configured on the customer's Contract.
- Materials — Products and Services attached to Tickets and Projects since the last invoice.
- Block Hours adjustments — when applicable, the new block charge or any draw-down.
- Totals — subtotal, tax (if configured), grand total.
Review the draft before sending. Common edits:
- Remove time entries that shouldn't be billed (write-offs).
- Adjust quantities on Services lines for partial months.
- Add a custom line item for a one-time discount or surcharge.
Send the invoice
Invoices can be:
- Sent directly from ZestMSP via email to the customer's Main contact.
- Exported as PDF for use in your own templates or for filing.
- Synced to QuickBooks or Xero (if connected) so the same invoice exists in your accounting system without re-entry.
See Connect QuickBooks or Xero for accounting sync for the accounting flow.
Payment terms
Each customer has a default Payment terms value (e.g., Due upon receipt, Net 15, Net 30) set on the Customer Company profile. The invoice inherits the terms from there. To use different terms on a specific invoice, override on the draft before sending.
Invoicing cadence — recommended patterns
A few cadences that work well at most MSPs:
- Monthly Contract billing on the same day each month (1st, 5th, or 15th). Use From a Customer Company to roll up.
- Project invoicing at milestone completion or at project close. Use From a Project.
- Block Hours top-ups generated automatically when a customer's block depletes.
- Out-of-band charges (emergency on-site, one-off purchases) as they happen, generated from scratch.
Pick a billing day and stick to it — predictability matters more than perfection.
Reconcile against payments
If you've connected QuickBooks or Xero, payment status from your accounting system flows back into ZestMSP, so you can see paid vs. outstanding without leaving the app.
Without the accounting integration, you'll need to mark invoices as paid manually as payments come in.
Troubleshooting
- Time entries didn't show up on the invoice. Confirm the Worktype on those entries is mapped to a billing rate on the customer's Contract. Time logged against Worktypes that aren't specified on the Contract is covered by the customer's recurring Services and won't appear as a separate line.
- A Service line is missing. Confirm the Service is on an Active Contract with an Effective Date on or before the invoice period.
- Wrong total on Block Hours. Confirm the customer has Block Hours enabled and the block size is correct on their profile.
- Customer didn't receive the invoice. Check the Main contact email on the customer profile. ZestMSP sends to that address by default.
Related articles
- Build Contract Types and customer Contracts
- Set up Services and Products
- Log time with Timesheet and Time Entries
- Connect QuickBooks or Xero for accounting sync
- Add and manage Customer Companies