Skip to main content
Invoicing

Web Developer Invoice: Hourly vs Fixed Bid vs Milestone (2026 Template)

Updated 13 min read

TL;DR

A 2026 web developer invoice is one of three formats: hourly (line per task), fixed-bid (one line + change-order lines), or milestone (one invoice per milestone). The hybrid that beats scope creep is fixed-bid for planned scope plus an hourly change-request rate. Standard deposits: 50/50 under $5K, 30/40/30 for $5K-$25K builds, 25/25/25/25 for $25K+. Net 15 is the freelancer-preferred default. Late fee 1.5 percent/month is standard. EU B2B uses reverse charge (Article 196); UK B2B same post-Brexit. Five universal sections: header, line items, subtotals + taxes, payment terms, footer.
On this page

A web developer invoice is one of three line-item formats based on the billing model in your contract. Hourly invoices use one line per task with hours and rate, fixed-bid invoices put the deliverable on one line with separate change-order lines, and milestone invoices bill one invoice per phase with that phase's fee plus approved change orders. The five universal sections of the invoice (header, line items, subtotals and taxes, payment terms, footer) stay constant across all three; only the line-item format changes. This piece is the developer-specific decision framework: which model fits which engagement, what the invoice should literally say in each case, and the hybrid model that handles the 70%+ scope-creep rate that the Standish Group documented across software projects.

The general invoice basics live in how to write a freelance invoice. This post is the web-developer-specific deep dive on hourly vs fixed-bid vs milestone billing.

Why Web Developer Invoices Are Different

A copywriter invoice has 1 to 2 lines. A graphic design invoice has 3 to 4. A web developer invoice can be anywhere from a single fixed-bid line to a 12-line milestone with change orders, passthroughs, and platform fees. The reason is variance: a copywriter delivers one document, a designer delivers a finite set of assets, but a web developer delivers a system whose scope can shift mid-build. The invoice format has to absorb that variance without the client losing visibility.

ProfessionTypical lines per invoicePrimary variance source
Copywriter1 to 2Word count and revisions
Graphic designer3 to 4Asset count and licensing
Marketing retainer4 to 6Channel mix and reporting
Web developer1 to 12Scope changes, passthroughs, milestones
Videographer6+Day rate, kit, crew, post, license

The three billing models all converge on five universal invoice sections; the difference is what populates the line-items section.

The 3 Billing Models for Web Development in 2026

There are three production billing models. Each has a use case and a specific invoice format.

ModelBest forAvoid when
HourlyMaintenance retainers, R&D, support, Phase 0 workClient wants a fixed budget upfront
Fixed bidLocked-scope marketing sites, landing pages, MVPsScope is unclear or evolving
Milestone$5K and larger multi-phase buildsProject is under 1 week of total work

Per Index.dev's 2026 analysis of freelance pricing models, fixed-price places the estimation risk on the freelancer and hourly places it on the client. Milestone billing is the middle ground: a fixed total split across phases the client can approve incrementally.

The decision tree most senior freelancers use in 2026:

  1. Is the scope locked with an approved spec? If yes, fixed bid or milestone. If no, hourly.
  2. Is the total budget over 5,000 dollars? If yes, milestone. If no, fixed bid is fine.
  3. Are there ongoing maintenance tasks? If yes, hourly retainer alongside the project invoice.

The hybrid that beats scope creep, covered later in this post, is fixed-bid for the planned scope plus a published hourly rate for change requests outside that scope.

What Goes On Every Web Developer Invoice (5 Universal Sections)

These five sections appear on every web developer invoice regardless of billing model.

The 5 universal invoice sections

Header (your business name, address, tax ID/EIN/VAT, client name, address, invoice number, date issued, due date)
Line items (model-specific format: hourly task lines, single fixed-bid line, or milestone line plus change orders)
Subtotals and taxes (subtotal, sales tax/VAT or reverse-charge note, total)
Payment terms (Net 15 or Net 30, late-fee clause, accepted payment methods, bank details or payment link)
Footer (thank-you note, your support email, contract reference number)

The line-items section is the only one that changes between billing models. Everything else stays the same. Per Plutio's 2026 invoice payment terms research, invoices with explicit due dates get paid 7 days faster and reduce late payments by 42%, so always include a specific due date in the header (not just "Net 30") and a late-fee clause in the payment terms section.

Hourly Invoice Format (With Worked Example)

Use the hourly format for retainers, support work, R&D, Phase 0 discovery, and any engagement where scope is unclear or evolving. Each line is a discrete task with hours, rate, and amount.

Sample hourly retainer invoice

A senior React developer on a 60-hour-per-month retainer at $125/hr, plus 8 hours of approved change requests at the same rate, plus one passthrough cost.

Line itemHoursRateAmount
Frontend retainer (April 2026, contracted 60 hours)60$125/hr$7,500.00
Change request: add affiliate-link tracking to checkout6$125/hr$750.00
Change request: rebuild category filter for new taxonomy2$125/hr$250.00
Passthrough: Vercel Pro seat (April, at-cost)1$20.00$20.00
Subtotal$8,520.00
Sales tax (n/a, B2B service in CA)$0.00
Total due (Net 15, due 2026-05-14)$8,520.00

Five conventions worth copying:

  1. Each task is its own line. Do not bundle "miscellaneous frontend work" because the client cannot audit it.
  2. Change requests are labeled as such. Use the prefix "Change request:" so the client recognizes them as outside the contracted scope.
  3. Passthroughs are billed at-cost and labeled. Marking up Vercel or AWS without disclosure damages trust.
  4. Show the contracted hours alongside actual hours. "Contracted 60 hours" lets the client see whether you stayed within the retainer.
  5. The late-fee clause goes in the footer, not buried in the contract: "A late fee of 1.5 percent per month accrues on unpaid balances after the due date."

pro tip

Track time inside a tool the client can see (Harvest, Toggl, or your project tracker's exports) and attach the time-tracking export with the invoice for any retainer over 20 hours per month. Auditable hours make the invoice defensible and shorten payment cycles.

Fixed-Bid Invoice Format (With Worked Example)

Use fixed-bid when scope is locked. The invoice has one or two lines for the deliverable plus separate change-order lines for anything that exceeded the original scope.

Sample fixed-bid invoice (single delivery)

A 7,500 dollar Webflow marketing site for a Series A SaaS, billed at completion (the 50% deposit was invoiced separately at kickoff).

Line itemAmount
Webflow marketing site build (5 pages, CMS, mobile-responsive, per SOW)$7,500.00
Less: deposit received 2026-04-02 (Invoice #2026-018)($3,750.00)
Change order CO-01: blog template (approved 2026-04-15)$850.00
Change order CO-02: testimonials carousel (approved 2026-04-22)$400.00
Subtotal$5,000.00
Sales tax$0.00
Total due (Net 15, due 2026-05-14)$5,000.00

The deposit appears as a negative line so the client sees the full project value and what they have already paid. Change orders reference their CO number from the contract addendum, with the approval date.

When fixed-bid breaks (scope creep)

Per Stop Scope Creep's 2026 statistics roundup, over 70% of software projects and 80%+ of freelance projects experience scope creep. A pure fixed-bid invoice with no change-order mechanism is an invoice that absorbs every requirement shift unpaid. The fix is the hybrid model.

The Hybrid Model: Fixed Bid + Hourly Change Requests

The hybrid is what most senior freelance web developers use in 2026 because it captures the predictability clients want plus a billing channel for the inevitable change requests.

The contract specifies:

  1. A fixed total for the planned scope (with the SOW attached).
  2. A published hourly rate for any work outside that scope.
  3. A change-request process: client requests in writing, you scope and quote, work begins after written approval.

The invoice then has two distinct line groups: the fixed-bid total (often split across milestones) and the change-order lines from approved CRs. Per Wellingtone PPM Intelligence cited in Jobera's 2026 software project failure data, projects with no formal change control are twice as likely to fail. The change-request process and the change-order lines on the invoice are that formal change control.

Change-order workflow that protects fixed-bid revenue

Define 'in scope' with a bullet-point SOW attached to the contract
Publish your change-request rate (typically 1.0x to 1.25x your standard hourly rate)
Require change requests in writing (email is fine, Slack is not)
Quote the change in hours and dollars before starting
Get written approval (a one-line email reply is enough)
Add the approved CR as a numbered line on the next invoice
Keep a CR log in the project repo so both sides can audit

Milestone Invoice Format

Use milestone billing when the project is over 5,000 dollars and runs across multiple phases. Each milestone is a binary deliverable the client signs off on, and you invoice the milestone fee on completion.

Standard 2026 milestone splits per Plutio's 2026 deposit invoices guide:

Project sizeMilestone splitStages
Under 5,000 dollars50/50Kickoff, launch
5,000 to 15,000 dollars30/40/30Kickoff, midpoint, launch
15,000 to 50,00025/25/25/25Design lock, backend complete, frontend, launch
50,000 and above20/20/20/20/20Discovery, design, backend, frontend, QA, launch

Each milestone invoice references the contract's milestone clause by section, names the deliverable, lists any approved change orders, and bills only that milestone's fee.

Sample milestone invoice (Milestone 2 of 4)

A 14,000 dollar React + Node MVP build, 25/25/25/25 split, billing the second milestone (backend complete).

Line itemAmount
Milestone 2 of 4: backend complete (per Section 4.2 of contract)$3,500.00
Change order CO-03: add Stripe webhook for refunds (approved 4/19)$625.00
Subtotal$4,125.00
Sales tax$0.00
Total due (Net 15, due 2026-05-14)$4,125.00

The "per Section 4.2 of contract" reference makes the milestone invoice unambiguous; the client can match it back to the contract clause they signed.

Deposit Math, Net 15 vs Net 30, and Late Fees

Three financial mechanisms make a web developer invoice enforceable.

Deposit math

A 25 to 50% non-refundable deposit before any work begins is the single most-effective protection against client default. If a 6,000 dollar project starts with a 3,000 dollar deposit and the client stops responding after Milestone 1, you have already collected half. Per Plutio's deposit invoice playbook, the standard 2026 deposit on a sub-15,000 dollar web build is 30 to 50% at kickoff.

Net 15 vs Net 30

Net 30 is the most common B2B term and what enterprise procurement workflows expect. Net 15 is the freelancer-preferred contract default in 2026 because it cuts wait times in half without creating significant friction. Per Wethos' freelance payment terms guide, Net 15 is what experienced freelancers quote and only relax to Net 30 when the client's procurement system requires it.

Late-fee clauses

Standard 2026 late fee: 1.5% per month, non-compounding, on the unpaid balance. Phrasing per Bonsai's late payment fee guide:

If this invoice is unpaid by the due date, a non-compounding late fee of 1.5 percent per month accrues on the outstanding balance. Late fees apply on the day after the due date.

The fee must look reasonable to be enforceable in court. A 250 dollar late fee on a 5,000 dollar project reads as fair. A 100 dollar late fee on a 150 dollar project does not. Cap the late fee at the state usury law (typically 18% APR in the US).

The full ruleset on payment terms structure is in freelance payment terms.

International Tax: 1099, VAT, and Reverse Charge

Three scenarios cover most freelance web developer cross-border invoices in 2026.

US dev invoicing US client (1099)

You do not charge federal VAT (there is none). State sales tax depends on nexus rules and whether your state taxes digital services. Provide your EIN or SSN on the W-9 the client requests. The client issues a 1099-NEC at year-end if you billed them more than 600 dollars total.

US dev invoicing EU B2B client (reverse charge)

You do not charge VAT. The EU business client self-assesses VAT under the reverse charge mechanism. The required invoice phrasing per Abillio's cross-border VAT guide and Bontello's EU invoicing guide for non-EU freelancers:

VAT reverse charge applies, Article 196, Council Directive 2006/112/EC. Recipient liable for VAT.

Always include the EU client's VAT registration number on the invoice. Leave the VAT line at 0.

US dev invoicing UK B2B client (post-Brexit reverse charge)

Same rule as EU B2B: reverse charge applies, you charge no VAT, the UK business self-assesses. UK consumers (B2C) pay your UK VAT only if you are UK VAT-registered (the 2026 threshold is 90,000 pounds in UK turnover).

The deeper rules for cross-border invoicing are in the international invoicing guide.

Scope-Creep Clauses on the Invoice Itself

Most freelance contracts have a scope-change clause. Most invoices do not surface it. Adding two lines to the invoice footer turns the contract clause into an active billing instrument:

Out-of-scope work is billed at the published change-request rate (see Section 3.4 of contract). Change requests require written approval before work begins. Approved change orders for this billing period are itemized above as CO-XX lines.

Solo freelancers lose between 7,800 and 15,600 dollars per year on average to unbilled scope creep per MicroGaps' 2026 freelancer scope-creep data. The footer clause does not prevent scope creep on its own; it makes the invoice the place where scope changes get billed once they are approved. Combined with the change-order workflow above, it closes the loop.

pro tip

Keep a "change request log" in the project repo (a simple Markdown file works) with each CR's date, description, hours estimate, dollar amount, approval status, and resulting invoice CO number. When the client questions a CO line on an invoice, the log is your single source of truth.

Tools That Automate the Web Developer Invoice

The mechanical work of generating, sending, and tracking invoices is the easy part to delegate to tooling. The decisions (which model, what deposit, what late-fee clause, what change-request rate) are the work that has to come from you.

The FreelanceDesk invoice generator handles the mechanical work in the browser: header, line items, subtotals, taxes, payment terms footer, and PDF export. The proposal builder and contract generator cover the upstream artifacts that lock scope and billing model before you ever invoice. The hourly rate calculator sets the rate that drives both your hourly invoices and your change-request rate on fixed-bid projects.

For the underlying rate benchmarks that justify your invoice numbers, the 2026 freelance web developer rate survey is the data study that pairs with this post. The average freelance web developer rates post covers the broader rate distribution by stack, region, and seniority. The web development proposal that wins is the upstream artifact that converts to the invoice. The estimate freelance project hours post is the methodology behind a fixed-bid number that holds up.

References

  1. Index.dev: Project vs Hourly Pricing for Freelance Development (2026)
  2. Plutio: Invoice Payment Terms for Freelancers (2026)
  3. Plutio: Late Invoice Payments Playbook (2026)
  4. Plutio: Deposit Invoices for Freelancers (2026)
  5. Wethos: Freelance Payment Terms in Contracts
  6. Bonsai: Freelance Late Payment Fee Guide (2026)
  7. Abillio: Freelancer Guide to Cross-border VAT Invoicing
  8. Bontello: How to Invoice EU Clients as a Non-EU Freelancer
  9. InvoiceZap: Invoice International Clients Complete 2026 Guide
  10. Stop Scope Creep: Scope Creep Statistics 2026
  11. Gitnux: Software Project Failure Statistics 2026
  12. Upwork: Hourly vs Fixed-Rate Projects

Frequently Asked Questions

Tired of recreating documents from scratch?

Save clients, templates, and brand kit in one place. $49 once. Your data never leaves your browser.

Get 45 Templates + Unlimited Docs for $49