billable.dev

How to Invoice Retainer Clients as a Developer

By Mark Fulton · 2026-08-26 · 13 min read

How to Invoice Retainer Clients as a Developer

Invoice a retainer in advance, on the same date every cycle, with one line item that names the period and states what the fee buys. If the client is paying for a block of hours, add a second line showing hours drawn against hours included, and a third line for anything past the block at your agreed overage rate. If the client is paying for access, leave the hours off the invoice entirely and put a short list of what was covered in the notes. The retainer figure itself never moves. Busy months get an extra line, quiet months get the same invoice as always, and that consistency is the whole point of the arrangement.

Almost every retainer argument I have watched a developer lose started with an invoice that described the wrong thing. Once a line item reads like a meter, a quiet month looks like an overcharge, and you spend the call defending your business model instead of talking about the work. The fix is boring and structural. Get the line item right at the start and the invoice stops being a monthly negotiation.

What kind of retainer are you actually running?

There are two arrangements that both get called a retainer, and they invoice differently.

A block-of-hours retainer sells a defined quantity of work per period. Twenty hours a month at an agreed rate, use them for whatever you like. The client is buying capacity they can count, so the invoice can show a count without inviting an argument. This is the one most developers actually sell, especially coming off a project into maintenance.

An access retainer sells availability. The client pays to have you already engaged, so that when production breaks at 4pm on a Friday you start now rather than in three weeks. There is no unit to count. The value is that you were reachable, and it exists in full whether the month was busy or silent.

Block of hours Access
Client is buying A quantity of work First call on your time
Invoice shows hours Yes, as a drawdown No
Quiet month feels like An overpayment, unless you handle it Insurance working correctly
Natural rollover answer Expire, or carry one period Nothing to roll over
Overage means Past the included hours Outside the covered scope
Fails when Hours become the only story Scope was never written down

Pick one and write it into the contract, because the two models answer the refund question in opposite directions. The legal profession has argued about this for a long time and has useful vocabulary for it. Cornell's Legal Information Institute distinguishes a general retainer that compensates a professional purely for reserving availability from a security retainer, where prepaid funds sit in trust and are drawn down only as work is performed. Developers are not bound by those rules, but the distinction is the same one your client will reach for when they ask why a slow month cost the same as a busy one.

The failure mode is selling access and invoicing hours. If your line item says "20 hours of development" but your contract sells availability, you have handed the client a meter and told them to read it. Decide, then make the invoice match. If you are still choosing the underlying model, hourly versus fixed price for developers covers where the risk actually sits in each.

Do you invoice at the start or end of the month?

Invoice at the start of the period the retainer covers, before the work happens.

Billing in arrears contradicts what you are selling. If the client already had a month of your availability and you are only now asking to be paid for it, the availability was free and the invoice is a bill for the past. It also removes the main operational benefit of a retainer, which is that the money arrives before the work does and your cash flow stops depending on how fast a specific client's accounts payable team moves.

Practical shape that works:

  • Issue date: the 1st, or two or three business days before the period starts if the client's payables run on a fixed weekly cycle.
  • Terms: due on receipt or Net 7 for the retainer line. Short terms are defensible on advance billing because there is no delivery to verify.
  • Overage from the previous period: bill it on the same invoice, as a separate line, so the client gets one document per month instead of two.

That last point is the practical compromise. Overage is inherently backward-looking and the retainer is forward-looking, so a September invoice will often carry the September retainer plus August's overrun. Label the overage line with its own period so nobody reconciles it against the wrong month.

One thing that catches people out: repeating invoices look like duplicates to automated payables systems. Keep the number sequential, keep the period in the line item text, and keep the issue date consistent. A clean sequence resolves a duplicate-payment flag in seconds. Invoice numbering for freelancers covers the scheme.

How do you show hours used on the invoice?

Here are both models as actual invoices for the same fictional client, so you can see how differently they read.

Example A: block-of-hours retainer

Twenty hours a month at a blended $150, billed as $3,000. The client used 23.5 hours in September, so 3.5 hours land at the agreed $175 overage rate.

Invoice INV-0142, issued 1 October 2026, terms Net 7

# Description Qty Rate Amount
1 Retainer, October 2026: 20 hours development capacity 1 $3,000.00 $3,000.00
2 September drawdown: 23.5 of 20 included hours used, 0 remaining $0.00
3 Additional hours beyond retainer, September 2026, at agreed overage rate 3.5 $175.00 $612.50

Total due: $3,612.50

Notes on the invoice:

September drawdown detail: checkout refactor 9.0, incident response and postmortem 5.5, dependency and security patching 3.0, code review and advisory calls 6.0. Overage approved by email 18 September.

Line 2 is the important one and it costs nothing. It is a zero-amount line that turns the invoice into its own statement, so the client can see where the hours went without opening a separate document or asking you for one. If your generator dislikes zero-value lines, the same sentence works in the notes block. What matters is that the count and the money appear on the same page.

For the drawdown detail, your commit history is already most of the answer. Pasting a month of git log into the tool groups commits by day and turns them into line items with the commit subjects as descriptions, which you can then collapse into the four or five summary buckets a client actually reads. Turning a git log into an invoice walks through it.

Example B: access retainer

Same client, same money, different sale. $2,500 a month buys first call on your time, weekly patching, and on-call escalation. One out-of-scope build landed in September at $175.

Invoice INV-0143, issued 1 October 2026, terms Net 7

# Description Qty Rate Amount
1 Retainer, October 2026: engineering availability, on-call escalation, weekly maintenance 1 $2,500.00 $2,500.00
2 Out-of-scope build, September 2026: Stripe webhook retry queue 6 $175.00 $1,050.00

Total due: $3,550.00

Notes on the invoice:

Covered under the September retainer: two production escalations (median response 22 minutes), weekly dependency and security patching, three advisory calls. Retry queue build quoted and approved by email 12 September as out of scope.

No hour count anywhere. That is deliberate. Attaching a running tally to an access retainer looks like transparency and functions as an invitation to audit, because a client reading "7 of 20 hours used" is being prompted to ask about the other thirteen. The covered-work note does the job the tally was meant to do. It shows a quiet month was not an empty one, without converting availability into a meter.

The response-time figure only belongs there if you actually measure it. Do not invent one. Everything else on both invoices, from your details to the tax treatment, follows the same rules as any other bill you send, which what belongs on a software development invoice covers line by line.

What happens to unused hours?

Whatever your contract says, and it needs to say something. This is the single most common gap in retainer agreements and it surfaces at the worst possible moment, which is the month the client asks for money back.

Four workable policies:

Policy What happens Best for
Expire at period end Unused hours are gone on the 1st Access retainers, and blocks where you are genuinely reserving capacity
Carry one period Unused hours are usable next month only, then expire Clients with lumpy release cycles
Banked balance Hours accumulate until used or the engagement ends Prepaid arrangements, closest to a deposit
Credit on exit Hours expire monthly, unused balance credits the final invoice Nervous first-time retainer clients

Expire is the default I would argue for on an access retainer, because there is nothing to expire. You sold availability and you delivered it. On a block-of-hours retainer, expire is still defensible if you genuinely held the capacity, but say so out loud in the agreement rather than letting the client discover it on an invoice.

Banking is the option to think hardest about. A large banked balance is an unpaid obligation sitting on your books, and it tends to get called in all at once, usually during the month you are busiest. If you bank, cap it. Three periods of hours is a reasonable ceiling, after which the oldest hours expire.

There is a bookkeeping angle here too. Money received in advance for work not yet done is not the same as money earned, and how you report it depends on your accounting method. The IRS notes in Publication 538 on accounting periods and methods that an advance payment is generally reported as income in the year it is received, with a limited election available to accrual-method taxpayers to defer part of it to the following year. If you are banking meaningful balances across a year end, that is a conversation to have with a bookkeeper before you design the policy, not after.

How do you bill overage beyond the retainer?

On a separate line, at a rate agreed when the retainer was agreed, with approval captured before the work happens.

The rule that keeps retainers alive is that the retainer line never moves. The moment you adjust it up in busy months and down in quiet ones, you have rebuilt hourly billing with extra steps and invited a negotiation on every invoice. Busy months get an additional line. Quiet months get the identical invoice they always get.

Three details worth pinning down in the agreement:

  1. The overage rate. Often above the blended retainer rate, because the discount was the reason for committing to the block in the first place. Write the number down.
  2. The approval trigger. A threshold past which you stop and ask, expressed in hours or dollars. "I will flag it when we cross 18 of the 20 hours" is a sentence clients like hearing, and it means nobody is surprised by line 3.
  3. A cap, if the client wants one. Some clients need a ceiling for internal approval. Give them one, and treat it as a stop-work line rather than a discount on hours you already worked.

Approval before the work, not after, is the part that matters. An unapproved overage line is a dispute with a dollar figure attached, and you will usually end up writing it off. This is the same discipline that keeps scope creep and change orders manageable on project work, applied to a monthly cycle.

Common questions

Should retainer invoices be identical every month?

The retainer line should be, right down to the wording. The invoice as a whole will not be, because the period changes, the number increments, and overage or drawdown lines come and go. That is the correct amount of variation. Predictability on the fixed line is what gets a retainer scheduled by a payables team instead of reviewed by a human every month, and scheduled invoices get paid on time without you chasing them.

How do I handle a client pausing the retainer?

Write the pause clause before you need it: how much notice, how long a pause can run, and whether the rate is held. A common shape is thirty days notice, a pause capped at two consecutive periods, and the original rate honoured on return within that window. Invoice up to the pause date and stop. Do not keep invoicing a paused retainer and offer credit later, because that is a receivable that will not be paid and a relationship you are quietly straining. If the pause is really an exit, say so and close it out properly, the same way a kill fee closes out a project.

Is a retainer refundable?

It depends on which model you sold, which is why the first section matters. A fee paid purely for availability is generally treated as earned by the reservation itself, since you turned down or deprioritised other work to hold that capacity. A prepaid balance drawn down against work performed is different, because the undrawn part was never earned. Cornell's Legal Information Institute notes that even within the legal profession the treatment of advance payment retainers varies by state, specifically because getting prepayments returned can be difficult for clients. Your contract, not the word "retainer", decides the answer. Say plainly whether unused amounts are refundable, and if they are not, say why.

Net terms on a retainer: same as project work?

Shorter, usually. Due on receipt or Net 7 is normal on advance billing, because the client is paying for a period that has not started and there is no delivery to inspect. Net 30 on a retainer means you are a third of the way through the covered month before the money arrives, which defeats the cash-flow reason for running one.

Local rules matter if you invoice across borders. In the UK, for instance, government guidance on late commercial payments states that where no payment date is agreed, payment is late 30 days after the customer receives the invoice or the service is provided, and that agreed terms between businesses default to a 60-day ceiling unless a longer period is fair to both sides. The United States has no equivalent federal default, so your written terms carry more weight. Getting paid on time goes deeper on terms, deposits, and late fees.

Sources


Build October's retainer once and you have built every month after it. Generate the invoice free at billable.dev, save it, and hit duplicate when the next period comes around: the number increments on its own and the retainer line carries over untouched, so all you change is the period text and any overage. Nothing you type leaves your browser and there is no account to create. If you want the structure already filled in, the retainer invoice template shows the layout and the free invoice template for developers covers the general case. Saved invoices and git log import are part of the free tool; Pro ($4 a month billed as $24 every 6 months, or $79 once) adds duplicate-for-next-month with the dates already advanced, a monthly calendar reminder, and export-all when your accountant asks for the year.

This post is general business practice guidance, not tax or legal advice. The treatment of money received in advance, and the refundability of unused retainer amounts, vary by country and state. Check your own position with a bookkeeper, accountant, or lawyer in your jurisdiction before relying on any of it.


Billable is a free, client-side invoice generator for developers. Your data stays in your browser.