Skip to content
Agencies Guide

How to Set Up Retainer Billing for Agency Clients

A practical guide to retainer agreements: how to structure them, track hours against them, invoice monthly, and handle overages without awkward conversations.

Vipul A M Vipul A M · · 3 min read
Billing
Miru invoicing screen with invoice status and totals
This article is currently written in English. Navigation, dates, and calls to action follow your selected language.

Structure the agreement clearly

Miru invoicing for retainer clients

A retainer has three numbers: the monthly fee, the included hours, and the overage rate.

Monthly fee: What the client pays every month, whether they use the hours or not. This is the point — they’re buying availability, not just output.

Included hours: The number of hours covered by the fee. Be specific. “40 hours of development work per month” is clear. “Ongoing support” is not.

Overage rate: What you charge per hour beyond the included amount. This should be in the contract before you start. Negotiating overage rates mid-project is a conversation nobody enjoys.

Put all three numbers in writing. Not in an email. In a signed agreement. Retainer disputes are almost always the result of ambiguity in the original terms, not bad faith.


Track every hour against the retainer

This is where most agencies fail. They have a retainer agreement but track time the same way they track project work — loosely, inconsistently, and without tying entries back to the retainer pool.

Create a dedicated project in Miru for each retainer client. Every entry against it counts toward the monthly pool, and the time entry report shows the running total.

miru time create --project-id 15 --duration 120 --date 2026-03-12 --note "Refactored auth middleware, patched session timeout bug"

Two seconds. Every entry logged against the retainer project. At month end, the math does itself.

The client should see this too. Share a report or give them portal access. Transparency is what makes retainers sustainable. When the client can see they’ve used 38 of 40 hours by the 20th, they’ll either prioritize better or approve the overage willingly.


Invoice on the same day every month

Pick a date. The 1st works. So does the 15th. What doesn’t work: “sometime around the end of the month, depending on when I remember.”

Generate the invoice directly from Miru. The retainer fee is the base line item. Overage hours go on at the agreed rate. Pass-through expenses go on as line items too.

Send it on the 1st. The client pays through the Stripe link, same as every other invoice.


Handle overages before they become surprises

The worst thing you can do with overage hours is surprise the client at invoice time. “By the way, you went 15 hours over this month, here’s an extra $2,250” is a relationship-damaging sentence.

Instead: send a heads-up at 80% utilization. A quick message — “You’ve used 32 of 40 hours with 10 days left in the month. Want to discuss priorities or approve overage?” This takes 30 seconds and prevents a 30-minute argument later.

Open the time entry report, filter by the client and group by project to see the retainer’s hours. Check it weekly. If you’re trending over by mid-month, have the conversation early.


The bottom line

Retainer billing works when three things are true: the terms are clear, the hours are tracked, and the invoices are predictable. Miss any one of those and you get disputes, scope creep, or both.

Set up the retainer project. Track every hour. Invoice on a schedule. Communicate overages early. That’s the whole system. Start with Miru and get the first retainer running this week.

More agency billing tips →

Hard Stop

Run this loop for two weeks without skipping cleanup. The compounding effect is real.

Start with Miru or read the docs.

Share:
Vipul A M

Vipul A M

Co-founder at Saeloun. Building Miru. Rails contributor. Shipping from Pune, India.

Put it to work

Run one cleaner billing cycle in Miru.

If this article is about tracking time, billing clients, comparing tools, or automating work, Miru is the product version of that idea. Start for $1/member, invite the team, and send the next invoice from tracked work.

What you get

  • Time tracking, invoices, expenses, and payments in one place.
  • $1 per member per month. Free if you self-host.
  • Open source, with CLI, API, MCP, and self-hosting paths.
See Miru

The article is the argument. Miru is the workflow.

Track the work, approve the hours, send the invoice, and get paid without bolting together three separate tools.

Billing
Miru invoicing screen with invoice status and totals
Invoicing Miru