Recruiting Agency Profit: Per Placement and Per Recruiter, Not per Open Role
«We keep a steady 60 roles in progress. Sixty! I was sure we were flying. Then we finally sorted the money by recruiter and by filled role, and it turned out that last quarter we actually got paid for eighteen. Half the team spends months carrying roles nobody will ever pay us for».
Your board is packed with vacancies. Recruiters are on calls from morning to night, the team chat never stops, candidates keep going to interviews. You look at the number of roles in progress and feel the agency growing. Then the month ends and the account holds a sum that makes you uneasy: everyone is grinding, yet the money looks as if you barely started.
In recruiting, money almost never disappears loudly. It quietly gets stuck between a role in progress and a fee that was paid and stayed with you. Those are two very different things. A role in progress is a promise. Money comes only from a filled position that has also survived the guarantee period. Everything between the two is cost: recruiter time, database access, salaries you pay every month whether the role closes or not.
The reason for thin profit is almost always the same. The agency measures itself by the number of roles in progress, yet it earns by filled positions and by specific recruiters. Until you sort the money onto those shelves, you are steering blind, paying the people who carry empty air exactly the same as the ones who feed you.
Profit per placement and per recruiter in plain words
Your income is a placement fee. The classic model: a percentage of the candidate's annual salary, usually 15 to 25 percent. Place a manager on a salary of UAH 80,000 a month, that is UAH 960,000 a year, and at 18 percent your fee is UAH 172,800. A good number. But it appears only the moment the candidate starts and signs the offer, not when the role landed on your desk.
Profit per placement is simple to calculate: the fee minus the direct costs of that fill. Direct costs are first of all the recruiter's time converted into the money of their salary, plus job-board and CV-database access, the cost of advertising the role, sometimes a bonus to the recruiter for closing. What is left of the fee after those costs is your real earnings on that position.
Profit per recruiter answers a different question, the one that matters most to the owner: whose book actually feeds the agency. Every recruiter has their own set of roles, their own speed, their own share of candidates who reach an offer and stay. One recruiter closes two expensive roles a month and leaves the agency half the fee as clean profit. Another heroically holds fifteen roles, closes one cheap one, and eats their own salary. On the board of roles in progress the second one looks busier. Sorted by filled positions, the truth shows.
Why roles in progress are not profit yet
Roles in progress is a metric of hope, not of money. It shows how many promises you have taken on, not how many will be paid. Between a client handing you a role and the money staying with you lies a long road, and at every step some roles fall away.
The client may fill the position themselves or hand it to three more agencies, and whoever presents the candidate first takes the fee while the rest worked for free. The client may freeze hiring. A candidate may accept the offer and back out at the last minute. And worst of all, a candidate may start, earn you the fee, and quit a month later, at which point you refund the money. Every one of these turns a role in progress into spent time without a penny of revenue.
A separate plague is dead vacancies. A client with a salary 30 percent below market and requirements fit for an astronaut. A role the client opened just in case and is not actually ready to hire for. A vacancy given to you on exclusive, then quietly filled by an internal hire. These roles hang on the board, create a feeling of being busy, and eat the hours of your best people, yet no one will ever pay for them. As long as you measure yourself by the number of roles, you cannot even see how many of them are dead.
An example: three recruiters, one team
Let us break down a hypothetical agency over one month. All three recruiters carry roughly the same number of roles in progress, twelve to fifteen, and earn the same salary. We look not at their load but at filled positions and at how much survives for the agency after direct costs.
| Recruiter | Placements/mo | Revenue | Margin |
|---|---|---|---|
| Oksana (leadership, senior) | 2 | UAH 300,000 | UAH 165,000 (55%) |
| Dmytro (volume hiring) | 5 | UAH 250,000 | UAH 55,000 (22%) |
| Iryna (mid, many returns) | 3 | UAH 210,000 | UAH 30,000 (14%) |
Look at Oksana. She has the fewest placements, her board looks the calmest, and in a stand-up it seems she works less than anyone. Yet she leaves the agency more money than the other two combined. Expensive roles, a high fee, candidates who reach the offer and stay, almost no returns.
Dmytro runs volume hiring and closes five times more positions. On the board he is the hero. But the roles are cheap, the fee is small, each one eats a lot of time, and after his own salary and the cost of advertising the roles, twenty-two percent is left for the agency. He works a lot and brings in little.
Iryna is the most worrying. Revenue is decent, three placements, but the margin is fourteen percent. The reason is not laziness, it is returns: some of her candidates do not survive the guarantee period, and the fee has to be refunded or the role filled again for free. On the summary report you cannot see it, the revenue was there. Sorted by recruiter and by returns, it is clear that Iryna is effectively working to fix her own placements.
The guarantee period and fee clawbacks as a hidden risk
This is the most underrated hole in a recruiting agency's economics. Almost every contract carries a guarantee: if the candidate quits within one, two or three months, you either refund the fee or find a replacement for free. It sounds fair. The problem is that you already received the fee and most likely already spent it, while the refund comes out of next month's money.
Imagine that out of ten placements in a quarter, two candidates fall away during the guarantee period. Twenty percent returns. You thought you earned on ten roles, but really on eight, and nobody built those two surprises into the plan. If the return is in cash, you are also handing back a sum you already booked as profit and perhaps paid out in bonuses. A replacement instead of a refund does not save you: the recruiter spends weeks again, meaning you pay for the same position twice and collect the revenue once.
So a healthy owner watches not revenue but revenue minus expected returns, and keeps a reserve against them. If you historically refund every tenth fee, then a tenth of every payment is not your money but a deferred promise to give it back. Spend it, and the first candidate who leaves punches a cash gap in your month out of nowhere.
Recruiter productivity and time-to-fill
Two numbers govern the agency's economics more than any slogan about motivation. The first is productivity, how many placements a month a recruiter actually makes. The second is time-to-fill, how many days pass from receiving the role to the candidate starting.
These two numbers are directly linked. If the average time-to-fill is 20 days, one recruiter comfortably closes two or three roles a month. If that same recruiter grinds for 55 days per role, they physically cannot close more than one, and you pay the same salary. A long time-to-fill is not just delayed money. It is a direct loss: for every day the role stays open the recruiter costs you money while the revenue is not there yet and may never come, if the client fills the role themselves in the meantime.
So productivity must be measured not in roles in progress but in placements per month and in average time-to-fill per recruiter. A recruiter with fifteen roles and one placement a month is not a busy recruiter, they are a drowning one. And the one with six roles and three placements brings you three times the money on the same salary.
How it sounds in real life
You will recognise these lines, because they are spoken in your team every week. Behind each one is money quietly leaking out.
- «We have loads of roles in progress, we are slammed». Slammed with promises, not with paid placements.
- «Let's take this role, maybe we'll close it». They take a dead vacancy nobody will pay for and put your best recruiter's hours into it.
- «The candidate started, the fee came in, let's celebrate». The money was booked as profit while the guarantee period is not over.
- «Dmytro is a star, most placements of all». Most placements and the smallest margin, but nobody counts that.
- «We've had this role three months, but the client is a good one». Three months the recruiter costs money and the revenue is zero.
None of these lines sounds like a mistake. Each feels like the normal work of an agency. Together they explain exactly why the board is full and the profit is thin.
How to see this in Finmap
To manage profit per placement and per recruiter you do not need a half-million CRM. You need the agency's money sorted onto the right shelves and updating on its own. Here is how it looks in Finmap.
Income by recruiter and by client. Every fee is tagged with the recruiter who filled the role and the client the money came from. You open a report and see not a lump of total revenue but who exactly brought in how much and which client genuinely feeds you, with no month-end scramble in Excel.
Direct costs kept apart from shared ones. Recruiter salaries, job-board access, role advertising and closing bonuses attach to their recruiter or line. Rent, admin and subscriptions sit in shared. That way each recruiter's margin is real, not blurred by the whole agency's overhead.
Margin by recruiter. You see not a blended agency-wide figure but Oksana at 55 percent and Iryna at 14, and why. It is immediately clear who to unload from dead vacancies and who to hand the expensive roles to.
A payment calendar and a reserve for returns. You see when the fees will land and when payroll falls due, so you never hit a cash gap between a placement and the client's payment. And against guarantee returns you hold a separate reserve: a share of every fee is set aside as money that, statistically, you will have to give back. Then the first candidate who leaves does not blow a hole in your month.
The key thing: all of it updates itself, pulling from the bank, instead of living in a spreadsheet someone has to keep by hand in the evenings. You open your phone and in a minute see which recruiter is feeding the agency this month and who is carrying empty air.
Where to start this week
- Stop measuring the team by the number of roles in progress. The core metric is placements per month and time-to-fill per recruiter.
- Calculate the margin of each recruiter for last quarter: fees minus their salary, database access and role advertising. One evening will open your eyes.
- Work out your return rate for the year and build that share into a reserve. Revenue minus expected returns is your real income.
- Audit the board and flag the dead vacancies: below-market salary, unrealistic requirements, a client not ready to hire, no exclusive. Pull your best people's hours off them.
- Separate your lines: expensive senior roles with a high fee and volume hiring are different economics and must be counted apart.
- Agree internally: a fee counts as profit only after the guarantee period ends, not on the day the candidate starts.
On a related note, read how Pareto client profitability analysis works, to see which 20 percent of your clients bring 80 percent of your real profit, and how team utilization ties to profit, since for an agency a recruiter's busyness and their placements are two different things that are easy to confuse.
«A role in progress is someone else's promise. A filled position that survived the guarantee is your paycheck. Confusing the two is expensive».
«An agency does not earn on the number of roles. It earns on recruiters who fill expensive positions fast and do not get candidates handed back».
Money Doesn't Disappear. You Just Don't See It.
Your agency's money does not evaporate. It is stuck between roles in progress and filled positions while you stare at the board instead of the profit. Sort the money by recruiter and by filled role and you will see who feeds you, who carries empty air, and how much the guarantee returns eat. Finmap does this for you: income by recruiter and client, direct costs kept apart, real margin per recruiter and a payment calendar with a reserve for returns, all updating on its own. Try it free for 14 days, connect your team, and see this week why the board is full and the profit is thin, and what to do about it.
Frequently Asked Questions
Revenue is the sum of every fee you were paid. Profit per placement is the fee minus the direct costs of that fill: the recruiter's time in money, database access, role advertising, the closing bonus. A position can carry a good fee and almost zero profit if it took weeks of work or had to be filled again because of a return. Watch the margin of the placement, not the size of the fee.
Because a role in progress is a promise, not money. Some positions will never close: the client hires internally, freezes the search, or hands the role to three more agencies. Some will close but at a low fee the recruiter's salary eats up. And some filled roles will return during the guarantee period, and the fee has to be handed back. The number of roles fuels a feeling of being busy, but profit is built only by filled positions that survive the guarantee.
Take your history for the year: how many placements and how many of them returned during the guarantee period. If one in ten returns, set aside ten percent of every fee as a reserve and do not treat that money as yours until the guarantee ends. Then a candidate leaving does not blow a hole in your month, because the refund money is already put aside.
First you have to see them: below-market salary, unrealistic requirements, a client not ready to hire, no exclusive. Move such roles to low priority, or honestly talk through with the client the conditions under which a fill is even possible, or decline. The main thing is to keep your best recruiters' hours off them, because that is a direct loss with no chance of a fee.
No. Even a team of three recruiters gains from seeing each one's placements, time-to-fill and margin separately. You do not need an expensive CRM; it is enough to tag fees by recruiter and client, keep direct costs apart and returns in a reserve, and read the report once a month. In Finmap this takes an evening to set up and then updates itself from the bank.
