Progress Billing is an invoicing method for One-Off Jobs that lets you bill clients based on completed work. Built with Design/Build projects in mind, it gives you more control over how and when a Job is invoiced.
Milestone Progress Billing is the option in which you set specific milestones based on the Job total, then bill your client as each milestone is reached.
With Milestone Progress Billing, you define each milestone by dollar amount or by percentage of the Job total. Progress Billing is available only for One-Off Jobs, including One-Off Jobs that have been split into multiple Visits.
For more information on an alternative method of progress billing follow the link - Manual Progress Billing
In this article:
Enable Milestone Progress Billing on a Job
Navigate to either the
Proposals page ,
Active Jobs page,
Completed Jobs page, or
Approved Jobs page and open the Job you want to bill by milestone.
On the Job page, find the Progress Billing section and check Enable Progress Billing.
Once Enable Progress Billing is checked, the Progress Billing Types will be displayed. Select Milestone.
Choose how you want to bill this Job — by % of the Job completed or by $ — and check the matching box. You can toggle between the two as needed.
Set up the Milestone Schedule by entering a Description and a Complete % (or dollar amount) for each milestone, using + Add Milestone to add more. Percentages must add up to 100%, and dollar amounts must equal the Job total. A running total for both is shown here so you can confirm as you go.
Finish the Job as usual, then select Save & Close.
The payment schedule for each milestone will appear on the Proposal.
Generate Progress Billing Invoice
The recommended way to invoice completed work is to use the Split Visit feature to move the Items that are ready to bill into their own Visit, so you only bill for work that's actually done.
You can do this ahead of time or as Items are completed. For details, see Split a Visit check out the Help Center Article.
Splitting isn't a strict prerequisite for generating a milestone Invoice — when you create the Invoice you can also add, edit, or remove Items directly, as long as the Invoice total equals the milestone amount. Splitting is simply the cleanest way to track completed work, and completed Items pre-populate the Invoice for you.
Navigate to:
Invoices
Click More in the top right corner and from the dropdown, select Progress Billing Invoices
This page lists every Job set up with Progress Billing that still has an un-invoiced balance. A Job drops off this page once it is fully invoiced (its un-invoiced balance reaches $0). To generate an Invoice, select + Invoice under Actions.
The Milestone Schedule you entered when creating the Job appears. Invoices must be generated in order, one milestone at a time. You can always return to the Job to edit the milestones.
Adjust the Items, quantities, and totals as needed. Select an invoice date (required), then select Save & Close. This generates the Invoice, syncs it to QuickBooks, and makes it ready to send to your client.
Find the finished Invoice on the
Invoices page.
💡You can edit the Items by either deleting them off the Invoice or by adding new Items or Item Groups.
⚠️ Important Note: The Total Price of all the Items on the Invoice have to add up to the Total Price of the milestone, which is displayed in the upper right hand corner of the screen, under Total Price. This may require you to adjust the price or quantity of the Items on the Invoice. |
Milestone Billing Video
Note: Some content in this video may reflect a previous version of SingleOps. For the most accurate guide, follow the steps above.
Troubleshooting & Things to Look Out For
Before you start
Progress Billing only appears on One-Off Jobs. If you don't see the Progress Billing section on a Job, confirm it isn't set up as a Recurring Job.
Bill only for completed work. The recommended workflow is to move completed Items into their own Visit with Visit Splitting, so they're marked done and pre-populate on the milestone Invoice. Splitting isn't strictly required to generate a milestone Invoice — the rule the system enforces is that the Invoice total equals the milestone's Total Price — but it's the cleanest way to keep billing tied to work that's actually finished.
When Turning Progress Billing on or off at the wrong time
Enable Progress Billing before the first Invoice is created — and, if you're collecting a deposit, before payment is received. Toggling it after billing has started is the most common source of Progress Billing problems.
You enabled Progress Billing by accident. The Job may show a $0 Invoice, or no standard Invoice at all, until a Progress Billing Invoice is created manually. If you don't need Progress Billing yet, unchecking Enable Progress Billing on the Job will let the standard Invoice appear again.
You saved the Job with Progress Billing enabled, then turned it off later. SingleOps won't go back and auto-generate a standard Invoice. Re-enable Progress Billing and create the Invoice manually from the jobs Invoie section
You enabled Progress Billing after a normal Invoice, deposit, or payment already existed. Invoice totals, balances, or deposit application can become inconsistent. The cleanest fix is usually to finish the original billing separately, then start a new Progress Billing Job for the remaining balance.
When Setting up the Milestone Schedule
The schedule won't reconcile. Percentages must total exactly 100%, and dollar-based milestones must add up to the Job total. Use the running totals shown on the schedule to confirm before you save.
You switched between % and $. You can toggle between billing by percentage and by dollar amount, but re-check the running total after switching so the milestones still equal the Job total.
When Generating an Invoice
You can only bill the next milestone in sequence. Milestones must be invoiced in order, one at a time — you can't skip ahead to a later milestone before the earlier ones are invoiced. If you need to change the plan, return to the Job and edit the Milestone Schedule.
The Invoice total doesn't match the milestone. The combined total of all Items on the Invoice must equal the milestone's Total Price (shown in the upper-right corner). If you can't save, adjust the price or quantity of Items — or add/remove Items or Item Groups — until the Invoice total matches the milestone amount.
A Job is missing from the Progress Billing Invoices page. This page lists only Jobs with an un-invoiced balance. If a Job has dropped off, it's fully invoiced (balance reached $0) — not an error.
Save & Close is blocked. An invoice date is required before you can generate the Invoice.
When Visit Splitting (recommended workflow)
The Split button won't work / you can't split. Visit Splitting requires at least one entire Line Item to move to the next Visit. If the Job has only one Item, or you need to bill only part of a single Item, add or split the Line Item on the Job first, then split the Visit.
Unexpected Items appear on the Invoice. When Visit Splitting has been used, Items from completed Visits pre-populate on the Invoice automatically. Remove any that shouldn't be on the current milestone.





