Billing Fixed-Fee Projects When Harvest Wants Hours

· 5 min read

You agreed a flat 6,000 dollars for a website redesign. No hourly rate, no time budget, just a number and a deadline. Then you open Harvest to invoice, and it wants to pull your invoice from tracked time entries. Now you are either faking hours to hit 6,000 or generating a blank invoice and typing the whole thing by hand every month. Neither is how the work actually got sold.

Harvest is built around the timer. That is fine if you bill by the hour. But if you quote projects, sell packages, or split payment across milestones, the time-first model fights you at every step. Here is how to run fixed-fee and milestone billing cleanly, from the quote through to an approved invoice.

Start with a quote, not a time budget

Fixed-fee work should begin as a written quote, because the number you agreed is the contract. In Harvest you would set up an estimate, but its estimates lean on the same hours-and-rate thinking. Instead, build a proper quote where each deliverable is its own line item with a flat price.

For the redesign example, your quote might read: discovery and sitemap, 1,500 dollars. Design of five key pages, 2,500 dollars. Build and launch, 2,000 dollars. That is the scope in plain terms. The client sees exactly what they are paying for, and you have three natural payment points already defined.

Add a valid until date so the price does not stay open forever, and send it. With a quote your client can accept online, the recipient opens a link, reviews the line items, and types their name to sign. No PDF round trip, no chasing a countersignature. The moment they accept, you have an agreed scope and a record of who agreed to it. If you want a head start on wording, the project quote builder lays out the structure.

Turn the accepted quote into milestone invoices

Once the quote is accepted, you invoice against it in stages rather than all at once. This is milestone billing, and it maps directly onto the line items you already wrote.

When discovery wraps, create an invoice for that first line only: discovery and sitemap, 1,500 dollars. You are not reopening the scope or recalculating anything. You are billing one agreed chunk. When the five page designs ship, invoice the 2,500. At launch, invoice the final 2,000. Three invoices, each tied to work the client can see is done.

Because JupiterInvoice bills from line items you type, not from a timer, this is straightforward. You create the invoice, add the milestone as a line item, set your terms, and share the link. There is no time-entry step to work around. The full walkthrough of moving from a signed quote to a paid invoice is covered in this quote-to-invoice guide, and the same shape works whether you have three milestones or ten.

Handle the PO number and billing details the AP team needs

Fixed-fee project work often goes through a client's procurement process, which means their accounts payable team will not pay without a matching purchase order. This is where the hourly-tool workflow usually breaks: the invoice goes out, AP bounces it for a missing PO, and you are back editing and resending.

Instead, let the recipient fix their own details. On the shared invoice, your client can add their PO number, set the correct billing entity, update the billing address, and name an AP contact. You get notified, and you can revert anything that looks wrong. That is the point of letting the customer edit their own invoice. The person who knows the PO enters the PO. You stop being the middleman for a field you were never going to get right on the first try.

If the client wants to change the actual money, say they want to split the launch milestone into two smaller payments, that goes through a change request. You approve or decline it, and an approved content change creates a new version. PO and billing edits stay as amendments to the current version, so your numbering does not sprawl. The difference between the two is worth understanding, and this breakdown of versions and amendments spells it out.

Lock the approved invoice and move to the next milestone

When the client approves a milestone invoice, that version locks permanently. The invoice number, issue date, your bank details, and the agreed line items are fixed. Nobody can quietly edit the amount after approval, and you have a clean record for each stage of the project.

Then you repeat the pattern for the next milestone. The accepted quote is your reference the whole way through, so you never have to renegotiate mid-project or reconstruct what was agreed.

If most of your work is priced this way, an hourly-first tool will keep getting in your way. JupiterInvoice was built as a Harvest alternative for invoicing beyond hourly work, so quotes and milestone line items are the default path, not a workaround. Agencies running project and retainer billing side by side will find the agency invoicing setup useful, and consultants selling packaged engagements can see how it fits on the consultant page.

Write your next quote as three line items with three prices, send the link, and invoice each milestone as it lands. That is the whole workflow, and it never once asks you how many hours you spent.

Send an invoice your customer can actually respond to

JupiterInvoice lets recipients add PO numbers, update billing details, request changes, and approve for payment, all from a private link. No account needed on their side.

Create an invoice