Hourly or fixed-price billing
Development phase tracking
Hosting and domain management
Maintenance and support packages
Web development invoicing has three distinct shapes depending on what you're being paid for. Project work splits a fixed total across milestones (discovery → design approval → build → launch), each milestone its own invoice line, with the deposit credited as you go. Hourly billing is standard for ongoing work, scope changes, and post-launch fixes — itemize hours by ticket, feature, or week so the client sees what they paid for. Retainers smooth out monthly revenue and are typical for maintenance, bug-fix queues, and small feature requests; the invoice shows hours used vs hours included, with overflow billed at the hourly rate. Beyond labor, web work usually has pass-through costs that need their own line items: hosting, domain renewals, third-party APIs, premium plugins, and SaaS subscriptions you're managing on the client's behalf. Bundling these into a labor line invites disputes when the client compares your invoice to their last DIY hosting bill. The template below structures milestone, hourly, retainer, and pass-through billing as separate concerns so every invoice is unambiguous, and the FAQ covers the questions web developers most often get asked about scope, IP transfer, and ongoing maintenance.
The categories most web developers bill for, and how to describe them on an invoice.
| Line item | Notes |
|---|---|
| Project deposit / retainer | Up-front payment to begin work. Common at 30–50% of project total for new clients. |
| Milestone payment | Discovery, design approval, build, launch, and post-launch each typically trigger their own invoice. |
| Hourly development time | For change-of-scope, bug fixes, and ongoing work. Bill in 15-min or 30-min increments per your contract. |
| Maintenance retainer | Monthly fee covering a fixed hour bucket. Show hours used vs included on the invoice. |
| Hosting / infrastructure pass-through | Hosting, CDN, database, backup. Pass through actual cost; some devs add a small management fee. |
| Third-party services / API costs | Stripe, SendGrid, premium plugins, paid SaaS. Itemize each — clients need them for their bookkeeping. |
| Rush / accelerated delivery | Premium for shortened timelines that require evening/weekend work. |
| Source code / IP transfer | Optional add-on at project completion. Spell out what's transferred (source, deploy access, asset library). |
Rate ranges vary widely by region, experience, and business model. Use the categories above as a starting point and benchmark against your local market.
Project pricing works when scope is well-defined (a marketing site, a known feature). Hourly works for retainers, scope-of-work changes, and post-launch maintenance. Retainers smooth out monthly revenue when a client needs ongoing development. Most experienced web developers use all three — project pricing for new builds, hourly for changes, and retainers for maintenance. State the model on every invoice so the basis is clear.
Always itemize them as their own lines, not buried in a labor charge. Clients need to see specific services (hosting, domain, premium plugins, APIs) for their own bookkeeping and tax records. Most developers pass through actual cost — some add a 10–15% management fee on top of pass-throughs to cover the time of monitoring, renewing, and troubleshooting these services.
For any new-client engagement and for any project over a few hundred dollars. Standard practice is 30–50% of project total at signing, with the remainder spread across milestones. The deposit covers your discovery and architecture time — work that has real value even if the client cancels. Show the deposit as a credit line on later invoices so the client sees what's already paid.
Document the original scope in writing in your contract, then issue a change-order document (a short email or signed PDF) for any work beyond it. The change order names the new work and the price impact, and the client signs or texts back approval before you do the work. On the invoice, list change orders as their own lines with reference numbers — this makes them defensible if the client later questions the total.
Whatever your contract says. Common arrangements: (a) client owns deliverables in full at final payment, (b) client owns deliverables but you retain rights to reusable components and snippets, (c) work-for-hire with full IP transfer. Pricing differs across these — full IP transfer typically commands a premium. Spell out the IP terms on the invoice line that triggers transfer (usually the final milestone payment).
Two common policies: (a) hours don't roll over — "use it or lose it," which simplifies revenue recognition, or (b) hours roll over for one billing period only, after which they expire. Document the policy in your retainer contract and reference it on the invoice. Avoid open-ended rollover — it creates large hour balances that turn into disputes later when a client wants 50 banked hours all at once.
Everything you need to create professional invoices for your business
Create your free account in seconds. No credit card required.
Add your logo, services, and client details. Choose your template style.
Download PDF or email directly to your clients. Track payment status.