web developmentfreelancetechinvoicing tips

How to Invoice as a Web Developer: Rates, Terms and Templates

Web developer invoicing: hourly vs milestone pricing, deposits, hosting and maintenance lines, mistakes, and a web design invoice template.

InvoiceQuickly Team··Updated ·7 min read

TL;DR: Invoice per milestone (design handoff, build, QA, go-live), separate recurring costs like hosting and domains from one-time build fees, itemise third-party licences as pass-through charges, and bill retainer maintenance monthly with hours-used tracking.

Web developers often bill implementation sprints, bug-fix buckets, and ongoing retainers. Invoices should separate build phases from hosting, domains, and third-party API fees so clients see recurring versus one-time costs. Staging environments, content migration, and analytics setup frequently get lost in a single “build” line—break them out so non-technical stakeholders understand the bill.

When clients delay content or approvals, your contract should allow pause billing or milestone re-timing—reference that clause on revised invoices if needed. Accessibility remediation and performance budgets are increasingly contract clauses—if you priced them, echo them on the milestone where you shipped the fix. Third-party script audits (tag managers, chat widgets) that bloated Core Web Vitals deserve their own line when you spent days untangling them.

Typical rates

Hourly for support and unclear scope; fixed milestones for launches (design handoff → build → QA → go-live). Maintenance retainers monthly. Benchmarks fluctuate; Stack Overflow’s developer survey illustrates how specialisation affects earning power—use as context, not a quote. Retainer buckets (e.g. “up to 6 hours/month”) should show hours used versus rolled on each invoice to justify renewals. Emergency support can be 1.5× with a minimum increment—state it before the pager goes off. Headless CMS content models and webhook integrations often take longer than visual pages—split them on the invoice so stakeholders see where backend time went.

Hourly billing ($75-$200+ depending on stack and market) works for support tickets, bug fixes, and retainer-style work. Fixed milestone pricing is standard for new builds: scope the project into 3-5 milestones with clear deliverables at each stage. Monthly retainers ($500-$5,000+) suit ongoing maintenance, security updates, and feature development. Day rates ($600-$1,600+) work for intensive on-site or embedded-team sprints.

Specialisation drives rate increases. Full-stack developers who handle both frontend and backend command more than single-stack specialists. E-commerce developers with Shopify Plus or Magento experience can charge premium project rates. Accessibility (WCAG compliance), performance optimisation, and headless CMS expertise are all rate multipliers. Raise prices when your pipeline is consistently full, when you add a valuable certification, or when client results demonstrate clear ROI.

Sample invoice line items

DescriptionQtyRateAmount
Website build -- homepage, about, services, contact (Next.js + Sanity CMS)1 milestone$6,500 flat$6,500.00
Blog template and CMS integration -- post listing, single post, categories1 milestone$2,800 flat$2,800.00
E-commerce integration -- Stripe checkout, product pages (12 SKUs)1 milestone$3,500 flat$3,500.00
Monthly maintenance retainer -- updates, backups, uptime monitoring (May)6 hrs used of 8$150/hr$900.00
Hosting -- Vercel Pro plan (annual, prorated monthly)1 monthpass-through$20.00
Domain renewal -- clientsite.com (1 year)1pass-through$14.99

When to send the invoice

For milestone-based builds, invoice at each milestone completion -- typically after the client reviews and approves the deliverable (design comp, staging site, final QA sign-off). Do not wait until the entire project is done; progress billing keeps your cash flow healthy and reduces risk on both sides.

On maintenance retainers, invoice on the first of each month. Include a summary of work performed (tickets closed, updates applied, hours used vs remaining) so the client sees value and does not treat the retainer as a forgotten subscription.

For hosting, domains, and third-party renewals, invoice as they come due. Bundling annual renewals into a single invoice with clear descriptions ("Domain renewal -- clientsite.com, 1 year") prevents clients from missing payments that could take their site offline.

Payment terms

Deposit (30%–50%) before heavy build, progress invoices per milestone, final before DNS cutover or within Net 14 after launch per agreement. Net 30 for larger clients with good credit. Document out-of-scope work as separate line items. For due-date language, use invoice payment terms. Agency pass-through work sometimes needs client name + parent brand on the invoice header for AP routing—ask your PM contact.

What to include

Project or ticket reference, description per milestone (features shipped, environments), hours and rate if hourly, licences and pass-through (hosting, plugins), support window if selling a post-launch package, tax, total, due date. Use how to write an invoice for numbering and business details. Accessibility fixes beyond the original WCAG target should reference the change ticket or audit finding ID so product understands why hours spiked. Content entry you performed for the client belongs on its own line when it was not part of the build estimate.

Common mistakes

Bundling hosting into dev fees with no renewal date—clients forget to pay. “Bug fix” ambiguity—define severity or SLAs in the contract and summarise on the invoice. No kill fee language for cancelled builds—address in agreement and reflect any partial invoices. Third-party API keys on your card without recharge—pass through or mark up transparently. SEO or analytics tag implementation buried in “launch” when it was half the sprint. Single currency assumed for distributed teams—state USD/GBP/EUR explicitly. Cookie consent or CMP implementations treated as “small JS tasks” when they were multi-sprint compliance work—split legal-driven work on the invoice so privacy teams recognise the effort.

Not separating hosting renewal from build fees -- when hosting is buried in the project total, clients forget to pay it after launch and blame you when the site goes down. Failing to log content-entry time when the client asked you to populate pages -- entering 50 product descriptions is not "part of the build" unless your estimate said so. Open-ended "bug fix" lines without severity or time caps -- define what counts as a bug (your code) versus a feature request (new scope) in the contract and reflect that distinction on the invoice.

FAQ

Should I bill hosting separately or include it in my retainer? Bill hosting as a separate pass-through line, even if you manage the account. This makes the cost transparent, avoids the appearance of markup on a commodity, and ensures the client understands that hosting is an ongoing expense separate from your development services. If you do mark up hosting (common for managed hosting where you handle server maintenance), disclose it.

How do I handle scope changes on a fixed-price project? Issue a change order before doing the additional work. On the invoice, list original-scope milestones and change-order items in separate sections. Reference the CO number and approval date. This protects you from "I thought that was included" disputes and gives the client a clear financial record of how the project evolved.

What is the best way to invoice for a retainer when hours vary month to month? Show the retainer fee, hours included, hours used, and a brief task summary. If rollover is part of your agreement, show the balance. If the client used fewer hours, the retainer fee stays the same (that is the point of a retainer). If they exceed the included hours, add an overage section at your hourly rate.

Start from our web design invoice template for milestone-friendly structure (design plus dev phases).


Join early access to generate web project invoices faster.

Free Invoice Checklist

Download our 15-point invoice checklist to make sure every invoice you send is complete, professional, and tax-compliant.

Free PDF, no spam. Unsubscribe anytime.

Get invoicing tips that actually help

Join 5,000+ freelancers and small business owners. One email per week with practical invoicing advice, tax tips, and product updates.

No spam, ever. Unsubscribe anytime.

How to Invoice as a Web Developer: Rates, Terms and Templates | InvoiceQuickly