TL;DR
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.
| Profession | Typical lines per invoice | Primary variance source |
|---|---|---|
| Copywriter | 1 to 2 | Word count and revisions |
| Graphic designer | 3 to 4 | Asset count and licensing |
| Marketing retainer | 4 to 6 | Channel mix and reporting |
| Web developer | 1 to 12 | Scope changes, passthroughs, milestones |
| Videographer | 6+ | 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.
| Model | Best for | Avoid when |
|---|---|---|
| Hourly | Maintenance retainers, R&D, support, Phase 0 work | Client wants a fixed budget upfront |
| Fixed bid | Locked-scope marketing sites, landing pages, MVPs | Scope is unclear or evolving |
| Milestone | $5K and larger multi-phase builds | Project 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:
- Is the scope locked with an approved spec? If yes, fixed bid or milestone. If no, hourly.
- Is the total budget over 5,000 dollars? If yes, milestone. If no, fixed bid is fine.
- 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
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 item | Hours | Rate | Amount |
|---|---|---|---|
| Frontend retainer (April 2026, contracted 60 hours) | 60 | $125/hr | $7,500.00 |
| Change request: add affiliate-link tracking to checkout | 6 | $125/hr | $750.00 |
| Change request: rebuild category filter for new taxonomy | 2 | $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:
- Each task is its own line. Do not bundle "miscellaneous frontend work" because the client cannot audit it.
- Change requests are labeled as such. Use the prefix "Change request:" so the client recognizes them as outside the contracted scope.
- Passthroughs are billed at-cost and labeled. Marking up Vercel or AWS without disclosure damages trust.
- Show the contracted hours alongside actual hours. "Contracted 60 hours" lets the client see whether you stayed within the retainer.
- 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 item | Amount |
|---|---|
| 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:
- A fixed total for the planned scope (with the SOW attached).
- A published hourly rate for any work outside that scope.
- 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
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 size | Milestone split | Stages |
|---|---|---|
| Under 5,000 dollars | 50/50 | Kickoff, launch |
| 5,000 to 15,000 dollars | 30/40/30 | Kickoff, midpoint, launch |
| 15,000 to 50,000 | 25/25/25/25 | Design lock, backend complete, frontend, launch |
| 50,000 and above | 20/20/20/20/20 | Discovery, 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 item | Amount |
|---|---|
| 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
- Index.dev: Project vs Hourly Pricing for Freelance Development (2026)
- Plutio: Invoice Payment Terms for Freelancers (2026)
- Plutio: Late Invoice Payments Playbook (2026)
- Plutio: Deposit Invoices for Freelancers (2026)
- Wethos: Freelance Payment Terms in Contracts
- Bonsai: Freelance Late Payment Fee Guide (2026)
- Abillio: Freelancer Guide to Cross-border VAT Invoicing
- Bontello: How to Invoice EU Clients as a Non-EU Freelancer
- InvoiceZap: Invoice International Clients Complete 2026 Guide
- Stop Scope Creep: Scope Creep Statistics 2026
- Gitnux: Software Project Failure Statistics 2026
- Upwork: Hourly vs Fixed-Rate Projects
