Project profitability at a small agency is the margin left on a piece of work after the costs that belong to it: freelancers, media, production, software and the share of salaried time it used. Client profitability is the same calculation across everything you do for one client in a period. Most guides on the subject assume you run timesheets. Most agencies with fewer than twenty people do not, and the ones that try stop within a quarter. This guide shows how to get a reliable margin per project and per client from the records you already create, which invoices, bills, expenses and payroll runs, using numbers a Dubai or Riyadh agency would recognise.
Why the P&L is not enough
An agency P&L in September might show AED 180,000 revenue, AED 120,000 costs and AED 60,000 profit, a 33% margin. That is a healthy month. It can also hide that:
- two retainers produced AED 55,000 of that profit,
- a website project lost AED 12,000 because two freelancer invoices arrived after the client was billed,
- a third client is at break-even once you count the account manager's time.
The agency is profitable and one third of its work is not. You cannot fix that from the P&L because the P&L does not know which client a cost belonged to.
The formula
For a project or a client over a period:
Profit = revenue billed − direct costs − allocated team cost
- Revenue billed is the fee lines on invoices tagged to the project. Exclude pass-through media unless you mark it up, in which case count only the mark-up.
- Direct costs are bills and expenses tagged to the project: freelancers, production, printing, stock, ad spend you funded, project-specific software.
- Allocated team cost is the share of salaried people's cost that the project used. This is the part everyone assumes needs timesheets. It does not.
Two margins matter:
| Margin | Formula | Healthy range for a small agency |
|---|---|---|
| Delivery margin | (Revenue − direct costs − allocated team cost) ÷ revenue | 50% or better on projects |
| Gross margin | (Revenue − direct costs) ÷ revenue | 65% or better, higher for retainers |
The ranges are typical, not rules. A production-heavy agency will run lower gross margins and should hold a higher fee percentage on the pass-through.
Allocating team cost without timesheets
Three methods, from roughest to most accurate. Pick the one your team will actually keep doing.
1. Headcount split
Assign each salaried person a percentage per client for the month, agreed in a five-minute conversation. An account manager on three clients might be 50 / 30 / 20. Multiply by their monthly cost. Update it when scopes change. This is crude and it is still far better than nothing.
2. Retainer-weighted split
For retainer-heavy agencies, allocate each person's cost across their clients in proportion to the retainer fees. It assumes bigger retainers use more time, which is usually true, and it needs no input at all once set up.
3. Deliverable counting
Count the deliverables produced per client in the month, weight them by type (a video counts more than a story), and allocate cost by weighted share. More accurate for content agencies, and the counts already exist in your reports to the client.
Whichever you choose, post the allocation as a payroll cost against the project or client in your books, monthly. If it lives in a spreadsheet it will not be there in March when you need it.
A worked example
A Dubai agency, one month, two clients.
Client A, retainer. AED 24,000 per month for social and content.
Client B, project. Website build, AED 60,000, billed in three milestones. Two milestones billed this month, AED 40,000.
| Client A (AED) | Client B (AED) | |
|---|---|---|
| Revenue billed | 24,000 | 40,000 |
| Freelancer bills | 3,000 | 18,000 |
| Software and stock | 600 | 1,200 |
| Allocated team cost | 9,500 | 19,000 |
| Profit | 10,900 | 1,800 |
| Delivery margin | 45% | 4.5% |
Client B looks like the bigger account and is barely profitable, and the third milestone will land next month with the remaining freelancer bill against it. Whether the project ends positive depends on that last AED 20,000 and how much more freelancer time it takes. That is the conversation to have now, not after delivery.
From the platform: in Staks, every invoice, bill, expense and payroll run can be tagged to a project, and the project sits under its client. The project profitability report and the client profitability report are built from those tags, so the table above is what you see when you open them, without a timesheet or a spreadsheet.
Multi-currency changes the answer
A Riyadh client on SAR, a freelancer paid in USD and books in AED means the margin depends on the exchange rates on the dates things happened. Two rules:
- Record each transaction at the rate on its own date. The SAR 90,000 invoice is worth a specific AED amount on the invoice date and a slightly different one when the payment arrives. The difference is a realized gain or loss and it belongs to that client.
- Do not measure margin at a single month-end rate. It flatters or punishes clients depending on which way the currency moved that month.
If your accounting tool stores the rate on every transaction, this is automatic. If it does not, budget an hour per month to correct it by hand, and expect to stop doing that by month three.
What to do with the numbers
Once you can see margin per client, the decisions are mostly obvious.
- Re-price at renewal. A retainer under 40% delivery margin gets a scope cut or a fee increase at the next renewal. Bring the number to the meeting.
- Stop funding pass-through. If media or production for a client is being paid from your cash and rebilled at cost on 60-day terms, switch it to a deposit. It does not change the margin, but it changes whether you can pay salaries.
- Watch scope creep as a cost, not a favour. Every "quick change" is freelancer time or team time against a fixed fee. If a project's margin drops below 30% before delivery, issue a change order.
- Pay commissions on margin, not revenue. A salesperson paid 10% of revenue is rewarded for closing Client B. A salesperson paid on delivery margin is rewarded for closing Client A. Tie commissions to the deal and calculate them once the project is costed.
Setting this up in a week
| Day | Task |
|---|---|
| 1 | List clients and open projects. Decide which costs are direct and which are overhead. |
| 2 | Tag every open invoice, bill and expense to a project. Anything unassignable goes to overhead. |
| 3 | Choose an allocation method for team cost and set the percentages. |
| 4 | Post last month's payroll allocation against projects. |
| 5 | Run the report, sort by margin, and book the two conversations that fall out of it. |
Frequently asked questions
Do I need time tracking to measure project profitability?
No. Time tracking gives a more precise team-cost allocation, at the price of everyone filling in a timesheet. For agencies under about twenty people, a monthly percentage allocation is accurate enough to make pricing and staffing decisions, and it actually gets done.
Should pass-through media count as revenue?
Only the mark-up or fee. Counting a AED 200,000 media budget as revenue inflates the top line and makes a 10% fee look like a 90% cost ratio. Keep it on separate lines and report it separately.
What margin should a small agency in the UAE or Saudi Arabia aim for?
Typical targets are 50% or better delivery margin on projects and 20 to 30% net margin for the agency after overhead. Retainers usually run higher than projects because the scope is stable. Treat these as ranges to compare your own clients against, not benchmarks to publish.
How do I handle a project that spans several months?
Tag every month's costs to it and recognise revenue by milestone. Look at the running margin monthly and the final margin at close. A project that looks bad in month one because the kickoff freelancer bill landed early often ends fine; a project that looks bad in month three usually does not.
Related reading
- How to invoice agency clients in the Gulf: retainers, milestones, and getting paid
- The best accounting software for agencies in the UAE and Saudi Arabia
- How to track business expenses in the GCC with AI
- Bookkeeping with AI for MENA businesses
Staks gives you project and client profitability from the invoices, bills and payroll you already record, with the exchange rate stored on every transaction. Start a free 14-day trial. No credit card required.