Invoicing for Developers

Fixed-price, hourly, or retainer — often all three for the same client. Bill milestones instead of waiting for launch, charge change requests as they happen, and turn post-launch support into recurring revenue.

Scope creep is a billing problem, not a client problem

Every freelance developer has lost money to the same pattern. A fixed-price build gets agreed, then a steady drip of small requests arrives — "can we also…", "quick change", "while you are in there" — none individually worth arguing about, all adding up to weeks of unpaid work.

The fix is not being tougher in conversation. It is making the boundary visible in writing:

  • Quote from a written scope that lists what is included, and say plainly that anything else is billed separately
  • When a request arrives outside that scope, price it and get a yes before building it
  • Invoice change requests as they happen, never bundled into a final surprise. A client who approves a $400 change in week two accepts it; the same $400 discovered on the final invoice reads as padding.

Send the original scope as an estimate and convert it to an invoice on approval, so the number the client agreed to is the number they are billed.

Milestones and deposits beat invoicing at launch

Billing everything on completion means financing the project yourself and concentrating all your risk at the moment a client is least motivated. It also creates the classic freelance standoff over the final ten percent.

Split the engagement instead: a deposit at signing, payments at defined milestones, and the balance at handover. Each invoice is small, expected, and tied to something visibly delivered. Nobody argues about a milestone invoice for work they can see running.

Tie final payment to handover of source files, deployment, or repository access. Not as a threat — it simply aligns the last payment with the last deliverable, which is what both sides want anyway.

Turn launch into recurring revenue

The most valuable thing a freelance developer can build is not a bigger project pipeline — it is a book of clients paying monthly for maintenance and support. It smooths the feast-and-famine cycle that makes freelancing stressful, and it is worth far more than the same hours billed reactively.

After launch, offer a monthly retainer covering updates, dependency patching, backups, and a block of support hours. Set it up as a recurring schedule and it invoices itself every month without another email from you. Bill hosting and third-party services as pass-through lines so the client sees which costs are yours and which are vendors.

Recurring schedules and automatic reminders are part of Pro. The free plan covers three invoices a month.

Stop retyping the same lines

Most of what you bill is the same handful of things over and over. The price book saves them once — description, labor or materials, unit, your rate — and then you add them to an invoice, estimate, or recurring schedule in one click instead of typing them again.

That matters beyond keystrokes. When the price lives in one place, the same job stops being billed one figure this week and a different one next week, and raising your rates is a single edit rather than something you have to remember every time. Prices are copied onto each invoice as you create it, so putting your rates up never rewrites a document you already sent.

There is a ready-made Software / Web Developer starter list built in, with the lines this trade typically bills already sorted into labor and materials. Rates are left blank on purpose — pricing varies far too much by region for a suggested number to be worth anything. You fill in yours once.

Example invoice line items

A realistic developer invoice, itemized the way that prevents questions:

DescriptionAmount
Milestone 2 — API & integrations$3,200.00
Change request — additional admin role$480.00
Development — 6 hrs @ $110/hr$660.00
Hosting & infrastructure (pass-through)$85.00

Frequently asked questions

Should I charge hourly or fixed price as a freelance developer?

Fixed price works when the scope is genuinely well defined and you have built something similar before — and it rewards you for getting faster. Hourly is safer for discovery, legacy codebases, and anything exploratory, where nobody can honestly estimate the work. Many developers use fixed price for the build and hourly for changes, which is a reasonable default.

How much deposit should I take on a development project?

A deposit at signing plus milestone payments is standard, with the balance at handover. The exact split matters less than not carrying the whole project on your own cash flow, and not concentrating all the payment risk at the end when the client is least motivated and most able to stall.

How do I bill for a maintenance retainer?

A fixed monthly amount covering updates, patching, backups, and a defined block of support hours, invoiced on a recurring schedule so it goes out automatically. State what happens to unused hours — most developers do not roll them over, since the client is buying availability rather than a bank of time.

Ready to get paid faster?

Start free today. No credit card required. Your first 3 invoices are on us.

Create Your First Invoice →