Spend Management for Marketing Agencies: How to Bill Client Costs Cleanly
If you run a marketing agency and have ever found a $1,400 stock-asset purchase three months after the fact that should have been billed back to a client but never was, this guide is for you.
Marketing agencies — especially services agencies between 5 and 50 people — have a uniquely confusing spend management problem. You're not just tracking your own expenses; you're tracking pass-through costs that should hit client invoices. The difference between doing this well and doing it poorly is often the difference between 25% and 35% net margins.
Why agency spend is harder than other small businesses
A few things that make this category distinctive:
- Two parallel cost streams — your overhead, plus client-billable expenses
- Many small purchases per project — stock photos, fonts, plugins, contractor work, ad spend
- Multiple clients in flight — each with their own budget, SOW, and billing cycle
- Account managers as the buying decision-maker — not the founder or finance lead
- Tight project budgets that can be blown by a single overlooked purchase
- Pass-through costs that need to be reconciled and billed cleanly
The result: most agencies leak 3–8% of project margin to expenses that should have been billed back to clients but weren't.
The two cost streams agencies have to track
To manage agency spend, separate it into two distinct streams from day one:
Stream 1: Internal / overhead
Your operating costs: software, office, employee tools, internal services. Approved against your overhead budget. Doesn't hit client invoices.
Stream 2: Client-billable / pass-through
Costs incurred specifically for a client engagement that will be billed back. Stock photography, paid ad spend, contractor work, software subscriptions purchased for a specific project, freelance design or copywriting, third-party platforms.
These should be:
- Tagged to a specific client
- Tagged to a specific project or SOW
- Tagged with a markup (most agencies mark up 10–25% on pass-through)
- Reconciled and billed monthly
Mixing these two streams in one approval queue is the first mistake most agencies make. Separating them at request time saves hours of detective work later.
The 5-step agency spend workflow
Step 1: Configure two request types
In your approval system, create two request types:
- Internal purchase — defaults to overhead budget, requires department/category
- Client-billable purchase — requires client name, project ID, SOW reference, markup percentage
This single change fixes 70% of agency spend chaos.
Step 2: Set client budgets at SOW signing
When you sign a new client engagement, capture in your system:
- Total contract value
- Pass-through budget (the dollar amount earmarked for billable expenses)
- Markup percentage agreed in the SOW
- Expense categories the client has approved (some clients restrict categories)
Now any client-billable request can be checked against the SOW budget at submission time.
Step 3: Different approval thresholds for the two streams
Common pattern that works for agencies:
Internal:
- Under $100: Auto-approved
- $100–$1,000: Department head approves
- $1,000+: Owner approves
Client-billable (within SOW budget):
- Account manager approves up to remaining client budget
- Anything that would exceed budget escalates to owner + client conversation
The key insight: account managers should have authority to spend within their client's budget. Routing every $200 stock photo through the founder is the bottleneck that kills agencies.
Step 4: Mandatory project tagging at request time
Every client-billable request requires:
- Client (dropdown of active clients)
- Project / SOW (dropdown of active projects under that client)
- Category (so client invoices have meaningful detail)
- Markup percentage (defaulted from SOW, editable for special cases)
If your system doesn't enforce these at submission, you'll be reverse-engineering them at month-end. We've seen agency owners spend a full day every month just figuring out which client owns which expense.
Step 5: Monthly reconciliation report for billing
At month-end, pull a single report: "All approved client-billable expenses, grouped by client, with totals and markup applied."
This becomes the line item on your client invoice. With clean data, this takes 15 minutes. Without it, this takes 6 hours and you still miss things.
The expenses agencies most commonly fail to bill
In order of how often they slip through:
- Stock assets (photos, video clips, fonts, illustrations)
- Ad spend (especially when run through an in-house manager who fronts the cost)
- Plugin or tool subscriptions purchased for one project
- Freelance subcontractors (writers, designers, developers)
- Domain registrations and hosting for client microsites
- Software trials that turned into paid subscriptions mid-project
- Travel for client meetings or shoots
- Translation, transcription, or production services
Set up category templates for each of these so they're easy to capture at request time.
Markup conventions
Most agencies mark up pass-through costs to reflect the time of managing them. Common markups:
- Hard costs (printing, shipping, stock assets): 10–20%
- Subcontractor labor: 25–50%
- Ad spend: 10–20% (or charge a separate management fee)
- Travel: at-cost or with a small admin fee
The markup gets complex because some clients negotiate it down or out at SOW signing. Your system should let you set markup per project (or per category within a project), not just one global number.
Where agencies leave money on the table
Three patterns we see consistently:
Pattern 1: The "I'll bill it later" expense. Account manager pays for something out of pocket or on a personal card, intends to bill it back, forgets. Three months later it's surfaced in their expense report and the client billing window has passed. Lost revenue.
Fix: Require the request to go through the system before the purchase, even if reimbursable. The request creates the pre-billing record. Even if the receipt comes later, the billing trigger is already in motion.
Pattern 2: The undocumented markup waiver. Client says "let's just do this at-cost." Account manager agrees verbally. No record exists. Eight months and four similar conversations later, the agency has burned 5% margin on this client without realizing it.
Fix: Markup waivers must be documented in the system, ideally tied to a specific change order or written client communication. Verbal "we'll just absorb it" decisions add up.
Pattern 3: The category creep. A client signed a SOW for design services. The agency starts doing strategy work, social media management, and content production for the same client without amending the SOW or its budget. Internal hours and pass-through costs balloon. The client gets a surprise true-up invoice and is unhappy.
Fix: Hard limit on out-of-scope expenses. Any client-billable purchase that doesn't map to an approved SOW category gets escalated to the owner and triggers a client scope conversation.
The right tooling
Most off-the-shelf approval software doesn't handle agency-specific needs out of the box (client + project + markup tracking). You're left either retrofitting a generic tool or buying agency-specific PSA software (Wrike, Workamajig, Function Point, etc.) which is heavy and expensive.
A pragmatic middle path: a simple, configurable approval tool that lets you tag purchases with custom fields (client, project, markup) and exports clean data to your accounting and billing systems.
Becision supports custom fields and tagging for exactly this use case. You can set up the two-stream workflow above in an afternoon. Free for small teams. Try it →
What good looks like
After 90 days of running this workflow, agencies typically report:
- 95%+ of client-billable expenses captured and billed (vs. 60–80% before)
- Project margin reporting accurate within 1% (vs. 5–10% off)
- Month-end client billing time cut by 60–80%
- Zero "found a billable expense after billing window closed" incidents
- Owner spends 1–2 hours/week on approvals instead of 5–8
For a 20-person agency, recovering even 3% of margin previously lost to billing leakage is typically $30,000–$80,000 per year. The tool pays for itself in the first month.