Skip to content

Web development invoice template

An invoice for development work, written so a client who doesn’t read code can follow it: features and fixes on dated lines, a monthly fee, and hosting at cost.

Opens in the free invoice generator. No account, and nothing you type is sent anywhere.

Fig. 01 · The template, filled in with a made-up clientEdit these lines

What to put on it

What changed, in the client’s words
“Fixed cart totals when a coupon and free shipping are combined”, not “fix: cart total calc”. The client approves what they can understand.
A date or range per line
Work that ran across days gets a range: “Nov 2–4”. It ties the invoice to what the client saw happen that week.
Recurring fees named by month
Maintenance, monitoring or support goes on its own line with the month it covers.
Hosting and licenses at cost
Domains, hosting and paid plugins go on separate lines at the amount paid, unless your agreement folds them into a fee.

From commit log to invoice

Your commit history already records what you did and when. It is written for other developers, though. For an invoice, group the commits into the pieces of work the client asked for, and describe each in the terms they would use.

Fixed-price projects and milestones

For a fixed-price build, bill each milestone as a flat-fee line when it is delivered: “Milestone 2, checkout and payments”. Work outside the agreed scope goes on hourly lines under it, so the extra is visible and explained.

Questions

More on writing invoices in the guides.

How detailed should a web development invoice be?

One line per feature, fix or task the client would recognize, each with a date and hours. Detailed enough that nobody has to ask what the hours were for, without listing every commit.

How do I bill for website maintenance?

As a flat monthly fee on its own line, naming the month. If the fee includes a set number of hours, list time beyond that on hourly lines.

Can an invoice be written from my git commits?

Yes. With a free account on this site you pick the repository and dates, enter your hours and rate, and it drafts dated lines from the commit history. It reads commit messages and file names, never the code.

Related templates

Beyond a template

Have the lines written from your notes.

A template still leaves the writing to you. With a free Sandglass account you paste the notes you kept, a time-tracker export or a git log, enter your hours and rate, and it drafts the dated lines. Then it emails the invoice and tracks whether it was paid.

Start free

Free plan: 3 drafted invoices a month. No card.

See how it works