FreeInvoices.co

Clients and pricing

Invoicing for Web Developers: Milestones, Hosting, and Maintenance

Milestone billing for web developers: deposits, client delay clauses, final payment before launch, care plans, hosting markups, and restart fees.

By the FreeInvoices.co team | Updated July 10, 2026 | 6 min read

Web projects go sideways financially in one predictable way: the site is 90% built, the client has gone quiet on content, and the final invoice is chained to a launch date that keeps sliding. Milestone billing exists to prevent exactly that. Here's how working developers structure deposits, progress payments, maintenance plans, and hosting so the money keeps pace with the work instead of waiting on it.

Milestones Beat Halves

The classic split, 50% up front and 50% at launch, has a flaw: the second half is hostage to a launch date you don't fully control. Three milestones tied to deliverables work better. A common shape is 40% at signing, 30% at design approval, and 30% when the site is ready to launch on staging. Each trigger is something observable that you control the delivery of, never a calendar date and never the word “launched.” On larger builds, add a fourth milestone at development complete. The signing payment does double duty, by the way: it books your calendar and it filters out the clients who were never going to pay. Spell the whole schedule out in the proposal so the first invoice surprises nobody.

A $6,000 Site in Three Milestones

Milestone 1, at signing: 40% .......... $2,400

Milestone 2, at design approval: 30% .......... $1,800

Milestone 3, site ready to launch on staging: 30% .......... $1,800

Care plan after launch .......... $95 per month

Out-of-scope requests .......... $110 per hour, quoted first

The Client Delay Clause

Projects stall because clients stop sending content and approvals, not because developers stop building. The fix is a clause: milestone invoices come due when your work for that milestone is delivered, and if client feedback or content runs more than 30 days late, the pending milestone bills anyway. After 60 days of silence the project parks, and a restart fee applies to bring it back. That sounds stern right up until you've carried a six-week project into its sixth month as an interest-free loan. Clients who know a payment is attached to their own response time find their content remarkably fast.

Charge for the Pause

A parked project costs real money when it wakes up: re-onboarding, re-learning the codebase, reshuffling your calendar. A restart fee of $250-500, named in the proposal, makes that cost visible and does wonders for client response times.

Final Payment Before Launch

Bill the final milestone when the site is approved on staging, and flip DNS after the payment clears. The same rule covers handing over admin credentials and repository access. This isn't hostility; it's sequencing, the same as any trade that collects on completion before handing over the keys. Your leverage drops to zero the moment the site is live on the client's domain, and every developer who has launched first and invoiced second has learned exactly how long “I'll send it this week” can stretch. If a client needs the site live before they can pay in full, that's fine too: put the remainder on a short written payment plan first, then launch.

Care Plans Turn Launches Into Recurring Revenue

A care plan at $50-250 a month covers updates, backups, security scans, uptime monitoring, and a capped allowance of small content edits, usually 30-60 minutes. Define the exclusions in writing: new features, new pages, redesigns, and integrations get quoted separately. The plan is also your scope-creep pressure valve, because “can you just quickly add” requests now have a home: inside the allowance, done; beyond it, quoted. Bill plans as recurring invoices on the first of the month, and price the no-plan alternative honestly: your full hourly rate, with a response time of whenever you can fit it in.

Hosting and Domains: Pass Through or Mark Up

Two workable models. The clean one: hosting and domain accounts belong to the client, billed to their card directly, and you administer them with delegated access. No middle-of-the-night liability, no markup conversation. The profitable one: you resell managed hosting at $25-60 a month bundled into the care plan, and you own the 2am problem when the host has one. Both are legitimate. What isn't legitimate is registering the client's domain under your own account, which turns every future disagreement into a hostage negotiation. The domain is the client's name on the internet, and it belongs in their name from day one.

Frequently asked questions

How big should a web project deposit be?

Between a third and half, with 40% common on projects in the $3,000-10,000 range. It should comfortably cover your setup time and the first stretch of design work, and it screens out clients who were never going to pay. A client who balks at a standard deposit is showing you the final-invoice conversation early, while walking away is still free.

What if the client disappears before the final milestone?

This is what the delay clause is for: the pending milestone bills after 30 days of silence, and the project parks at 60 with a restart fee. You keep everything paid to date, the client keeps nothing live, and the staging site stays yours. Send a plain summary of that status, then stop chasing. Parked projects often wake up at budget season.

Should I put client hosting on my own account?

Only if you're deliberately in the hosting business, with a care plan priced for that responsibility. Reselling is real recurring revenue, but you own outages, migrations, and renewals. If you don't want those calls, set accounts up in the client's name, bill for the setup time, and administer with delegated access. Either way, the domain registration stays with the client.

Put it into practice

Create a professional invoice in about a minute. No signup, no watermark, and the math (tax, discounts, deposits, balance due) is done for you.

Create Free Invoice