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.
Retainers are the best billing arrangement in agency work. Predictable revenue for you, guaranteed availability for the client. No scoping every task. No quoting every request. The client pays X dollars a month for Y hours of your time, and you both get on with the work.
But most agencies set up retainers wrong. They agree on a number, don’t track hours against it, and end up either undercharging (doing 60 hours of work on a 40-hour retainer) or overcharging (doing 20 hours and hoping nobody notices). Both outcomes destroy trust.
Here’s how to do it right.
Structure the agreement clearly

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 time entry against that project counts toward the monthly pool. At any point in the month, you can see exactly how many hours you’ve used and how many remain.
miru time create --project-id 15 --duration 120 --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 as the base line item, any overage hours as additional line items at the agreed rate, and any pass-through expenses attached to the project.
For retainer clients on autopay, set up Stripe recurring billing. The invoice generates, the charge processes, the receipt sends. One less thing to manage every month. One less thing that can fall through the cracks.
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.
Miru’s reports show retainer utilization in real time. 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.
Vipul A M
Co-founder at Saeloun. Building Miru. Rails contributor. Shipping from Pune, India.
Read next
How to Bill Clients Without Losing Your Mind
A practical guide to client billing for agencies: time tracking, invoicing, expense management, and getting paid on time.
The Freelancer's No-BS Guide to Getting Paid
Track your hours, send professional invoices, and get paid without chasing. A practical guide for freelancers who'd rather do the work.
Billing for Remote Teams: What We Learned Running a Distributed Agency
Practical lessons from billing clients across timezones. Time tracking, invoicing, and getting paid when your team spans continents.