Clearmargin

How to Invoice Freelance Development Clients

How to Invoice Freelance Development Clients

You shipped the feature, but now you have to get paid for it. Invoicing sounds trivial until you're juggling three clients with different billing models, trying to remember if that Thursday debugging session was billable, and wondering whether "2 hours: misc bug fixes" is a line item that'll actually get approved.

Here's how to invoice development clients without leaving money on the table or creating friction that delays payment.

Pick the Right Billing Model Before You Start

Your invoice format depends entirely on how you agreed to bill. Get this wrong and you'll spend more time explaining invoices than writing code.

Milestone billing works for defined projects — a marketing site, an MVP, a migration. You agree on deliverables and prices upfront, then invoice at each milestone:

  • Discovery & architecture — $3,000
  • Frontend build (pages + components) — $6,500
  • Backend API + integrations — $5,500
  • QA, deployment, handoff — $2,000

The key: milestones should map to demonstrable deliverables, not phases. "Sprint 2" means nothing to a client. "User authentication + dashboard MVP deployed to staging" does.

Retainer billing is for ongoing maintenance, support, or fractional CTO arrangements. You invoice monthly for a fixed amount regardless of hours, typically with a cap or rollover policy:

  • Monthly retainer: 20 hours @ $150/hr = $3,000/mo
  • Overage: billed at $175/hr
  • Unused hours: no rollover (or roll up to 5 hours, your call)

Retainers are great for steady income. The invoice is simple — one line item for the retainer, plus any overage hours itemized separately.

Time & Materials (T&M) is the default for most ongoing dev work. You track hours, apply your rate, and invoice for actual time spent. This is where line items matter most.

What Good Line Items Look Like

Clients don't want to see "40 hours of development — $6,000." They want to understand what they're paying for, even if they can't read your code.

Bad: ` Development work — 40 hrs — $6,000 `

Good: ` Sprint 14: Checkout flow rebuild (Stripe integration, cart persistence, error handling) — 18 hrs @ $150 — $2,700 Bug fixes: payment webhook failures, mobile layout regressions — 6 hrs @ $150 — $900 DevOps: CI/CD pipeline setup, staging environment configuration — 8 hrs @ $150 — $1,200 Client meetings & code review — 4 hrs @ $150 — $600 Deployment & post-launch monitoring — 4 hrs @ $150 — $600 `

Group by type of work, not by day. Clients don't care that you spent Tuesday on bugs and Wednesday on features. They care about categories: feature work, bug fixes, infrastructure, meetings.

Pro tip: Write line item descriptions in plain English, not ticket numbers. "JIRA-1234" is meaningless on an invoice. "Search functionality — full-text search with filters and pagination" tells the client exactly what they got.

How to Handle "Quick Bug Fixes"

Every developer knows this pattern: the client Slacks you about a "quick fix," you spend 45 minutes on it, and it never makes it to an invoice because it felt too small to track.

This is how freelancers lose thousands per year. A study by TeamStage found that 36% of freelancer time goes to unbilled admin work — and untracked "quick" requests are a huge part of that.

The fix is simple: bill everything, but batch it.

Don't send an invoice for 0.75 hours. Instead, keep a running log of small requests and group them on your next invoice:

` Ad-hoc bug fixes & small requests: - Fix broken OAuth redirect on Safari — 0.75 hrs - Update API rate limit configuration — 0.5 hrs - Resolve CSS grid issue on invoice page — 0.25 hrs - Add missing error handling on file upload — 1.0 hrs Subtotal: 2.5 hrs @ $150 — $375 `

This communicates two things: you're tracking everything (which discourages frivolous requests), and you're being transparent about time spent (which builds trust).

Invoice Timing and Payment Terms

For T&M work, invoice every two weeks or monthly — whichever aligns with your cash flow needs. Bi-weekly invoicing means smaller amounts that get approved faster. Monthly means fewer invoices to manage.

Standard payment terms for dev work:

  • Net 15 — for small clients and startups (they'll pay in 15-20 days)
  • Net 30 — for mid-size companies with AP departments
  • Due on receipt — for retainers and milestone payments

For project work, always collect a deposit. 25-50% upfront is standard. If a client pushes back on a deposit, that's a red flag — you're about to do $15,000 of work for someone who might not pay.

Handling Late Payments

A 2026 Fundbox survey found that 64% of freelancers experience late payments. Your invoice should include:

  • Clear due date — not just "Net 30" but the actual date: "Due: April 15, 2026"
  • Late fee policy — 1.5% per month is standard and legal in most jurisdictions
  • Multiple payment methods — ACH/bank transfer for lower fees, credit card for convenience

Send a reminder 3 days before the due date, the day it's due, and 3 days after. Automate this. You shouldn't be manually chasing payments.

The Invoicing Workflow That Actually Works

  1. Track time daily. Not weekly, not from memory. Daily. Even 30-second entries are fine.
  2. Categorize as you go. Tag time entries by type (feature, bug fix, DevOps, meetings) so invoice generation is painless.
  3. Invoice on a fixed schedule. Pick a day (1st and 15th, or just the 1st) and always invoice on that day.
  4. Send immediately. Don't sit on a finished invoice. Every day you wait is a day added to your payment timeline.
  5. Follow up systematically. Automated reminders before and after due dates.

The goal is to make invoicing a 15-minute task, not a half-day ordeal. If you're spending more than that, your time tracking or tooling needs work.

Proposals, time tracking, expenses, invoicing, and payments — all in one place.

Clearmargin is the financial stack for freelancers and small teams. Know what you're making on every client — without the accounting degree.

Start your free trial14-day free trial. No credit card required.