---
title: Contract margin you find out about at month end is not margin you managed
description: On a contract desk the money is the gap between two rates, on hours somebody must approve. Five ways that gap closes quietly, with the arithmetic laid out.
---

[Skip to content](https://www.echorecruit.com/blog/contract-margin-you-find-out-about-at-month-end-is-not-margin-you-managed#main-content)

[![echo-recruit-logo-760x180](https://www.echorecruit.com/hs-fs/hubfs/echo-recruit-logo-760x180.png?width=300&height=71&name=echo-recruit-logo-760x180.png)](https://www.echorecruit.com)

Open main navigation

Close main navigation

- [Contact us](https://www.echorecruit.com/contact-us)

[Contact us](https://www.echorecruit.com/contact-us)

[All posts](https://www.echorecruit.com/blog/all)

 October 27, 2026

# Contract margin you find out about at month end is not margin you managed

 By   Echo Recruit  ·   5 minute read

*The rate card says 20%. The management accounts say 6%. Both are correct, and everything interesting happens in between them.*

In short

- Headline margin is the gap between bill rate and pay rate. Real margin is what is left after on-costs, and on-costs are not a rounding error.
- Overtime is where margin inverts: paid at a premium, frequently billed at standard.
- An hour that has not been approved is not revenue. It is a hope with a timesheet attached.
- Margin reviewed monthly is margin reviewed after it has already happened. Weekly, per assignment, worst first.

A permanent desk has a simple relationship with money: one placement, one fee, one invoice, and you know within a day whether it was a good deal. A contract desk does not work like that. The money arrives in weekly slices for months, the cost arrives in the same slices, and the difference between them is a number nobody sees until somebody produces the management accounts.

By then the assignment is half over.

## Start with the headline, then ruin it

Here is the number on the rate card, for one contractor on a standard week.

Headline margin, one contractor, one week

| Bill rate to client | $45.00 / hr |
| --- | --- |
| Pay rate to contractor | $36.00 / hr |
| Gap | $9.00 / hr |
| Standard week | 37.5 hrs |
| Gross margin per week | $337.50 — 20% |

Twenty percent. It is the number on the rate card, the number in the pitch, and the number the recruiter has in their head when the client asks for a discount. Now add the costs that sit between the pay rate and what the contractor actually costs you.

The same week, with on-costs

| Bill rate | $45.00 / hr |
| --- | --- |
| Pay rate | $36.00 / hr |
| Employer payroll taxes and statutory contributions at 9% of pay — the rate and the name differ by country | $3.24 / hr |
| Holiday and paid leave accrual at 4% of pay, where it applies to the engagement type | $1.44 / hr |
| Pension or retirement contribution at 3% of pay | $1.08 / hr |
| Insurance, levies and administration | $0.54 / hr |
| True hourly cost | $42.30 / hr |
| Actual margin | $2.70 / hr — 6% |

The percentages are illustrative and vary enormously by country and engagement type — employed, self-employed, umbrella, statement-of-work. Put your own in. The point is the size of the move, not these specific figures.

Twenty percent became six. Nothing went wrong, nobody made an error, and the rate card is still technically accurate. The desk has simply been quoting a number that was never the margin.

This is worth doing properly once, for each engagement type you run, and writing the result on the wall: *our break-even gap is $X per hour*. Every rate conversation afterwards is a different conversation.

## Then the five leaks

### 1. Overtime billed at the wrong multiple

The contractor is paid 1.5× for hours over forty. Whether you bill the client 1.5× depends on the contract, and on somebody having read the contract. Bill overtime at standard while paying it at time-and-a-half and the margin does not shrink — it inverts.

Ten overtime hours, paid at 1.5× and billed at 1.0×

| Pay for those hours $36.00 × 1.5 | $54.00 / hr |
| --- | --- |
| True cost with on-costs the same 16% plus $0.54, on a higher pay rate | $63.18 / hr |
| Billed to client | $45.00 / hr |
| Margin on each overtime hour | −$18.18 |

Ten hours of that wipes out nearly two weeks of the margin earned on standard hours by the same contractor.

And overtime is not evenly distributed. It concentrates on exactly the assignments that are going badly and the clients under the most delivery pressure — the ones where you are already working hardest.

### 2. The rate rise that only happened on one side

A contractor is good, the client wants to keep them, and a raise is agreed. The pay rate goes up in payroll immediately, because a contractor notices a short payment within one cycle. The bill rate goes up when somebody remembers to amend the client’s purchase order, which is a different person with a different deadline.

The gap between those two events is pure loss, it runs at the full size of the raise, and the only way to catch it is a control that stops a pay rate changing without a bill rate decision.

### 3. Unapproved hours

Hours that arrive as a message, a photo of a sheet, or a verbal “usual week” are hours you cannot evidence. When a client queries a timesheet four weeks later, the question is not whether the contractor worked — it is whether anyone with authority signed for it.

An hour without an approval is not revenue. Treat it as a receivable you have already lost the argument about, and you will chase approvals with the urgency they deserve.

### 4. Hours that arrive late

A timesheet submitted eleven days after the week it covers misses the invoice run, lands on the next one, and gets paid thirty days after that. On a twelve-week assignment, a habitual ten-day lag means the last invoice goes out after the contractor has finished and your leverage has gone home with them.

Lateness is not a finance problem; it is a margin problem with a delay on it.

### 5. Effective dates that rewrite history

A subtle one. If a raise in June is stored by editing the rate on the assignment, then every report run afterwards believes April was billed at June’s rate. Your historic margin changes shape every time someone updates a record, and the year-to-date figure quietly stops reconciling to the invoices you actually issued.

Rates need effective dates: a raise in June adds a period, it does not rewrite April.

## What to do about it

- **Store both rates on the assignment, effective-dated.** Not on the candidate, not on the client, not in a note. On the assignment, with dates, because the same person can be on two assignments at two rates.
- **Model on-costs once per engagement type** and apply them automatically. If your margin figure does not include them, it is not a margin figure.
- **Make approval a state, not an email.** An hour is worth nothing until a named approver at the client has accepted it, and that fact should be visible on the timesheet rather than in somebody’s inbox.
- **Review weekly, per assignment, sorted worst first.** A monthly average across forty contractors is arithmetic that exists to hide the three that are underwater.
- **Alert on change, not on level.** An assignment that has run at 6% for eight weeks is a pricing decision. An assignment that was at 18% last week and is at 6% this week is an incident.

One more thing, which is about people rather than arithmetic: decide who can see margin. It is commercially sensitive in both directions — a recruiter who knows the client’s bill rate has a number they can accidentally use in a candidate conversation, and a contractor who learns the spread rarely responds well. If the restriction matters, enforce it where the data is rather than by hiding a page.

In Echo Recruit

Margin on the line it came from

Contract margin is computed from the billable and payable rates on the approved timesheet line, so the figure is tied to hours somebody actually signed for rather than to a rate card. Assignments and pay are effective-dated: a raise in June does not rewrite April. Timesheets carry an approval state, and approved hours become invoice lines at the rate the signed quote set.

Margin and revenue are admin-only, refused by the database rather than hidden by the page — a recruiter calling the API directly gets the same refusal as one clicking the link.

## Common questions

How do you calculate true contract recruitment margin?

Bill rate minus pay rate is only the headline. Subtract on-costs too: employer payroll taxes, holiday and leave accrual, pension, insurance and admin. On a $45 bill rate against a $36 pay rate, the headline 20% gap becomes about 6% once roughly 16% of pay plus $0.54 an hour of admin is added. Put your own percentages in.

Why does overtime destroy contract margin?

Because it is often paid at a premium and billed at standard. Paying $36 at 1.5× is $54, about $63.18 an hour once on-costs are added, against a $45 bill rate — a loss of $18.18 for every overtime hour. Ten such hours wipes out nearly two weeks of the margin earned on standard hours by the same contractor.

Why do contractor rates need effective dates?

Because editing a rate in place rewrites history. If a June raise overwrites the assignment's rate, every report run afterwards believes April was billed at June's rate, and the year-to-date figure quietly stops reconciling to the invoices you actually issued. A raise should add a dated period rather than replace one.

Share [facebook-f icon](http://www.facebook.com/share.php?u=https://www.echorecruit.com/blog/contract-margin-you-find-out-about-at-month-end-is-not-margin-you-managed) [linkedin-in icon](http://www.linkedin.com/shareArticle?mini=true&url=https://www.echorecruit.com/blog/contract-margin-you-find-out-about-at-month-end-is-not-margin-you-managed) [twitter icon](https://twitter.com/intent/tweet?url=https://www.echorecruit.com/blog/contract-margin-you-find-out-about-at-month-end-is-not-margin-you-managed) [pinterest-p icon](http://pinterest.com/pin/create/link/?url=https://www.echorecruit.com/blog/contract-margin-you-find-out-about-at-month-end-is-not-margin-you-managed) [envelope icon](mailto:?body=https://www.echorecruit.com/blog/contract-margin-you-find-out-about-at-month-end-is-not-margin-you-managed)

linkedin-in icon

 

Copyright © 2025, Echo Recruit

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Echo Recruit",
    "url" : "https://www.echorecruit.com/blog/author/echo-recruit"
  },
  "dateModified" : "2026-10-27T05:45:20.698Z",
  "datePublished" : "2026-10-27T05:45:20.000Z",
  "headline" : "Contract margin you find out about at month end is not margin you managed",
  "mainEntityOfPage" : {
    "@id" : "https://www.echorecruit.com/blog/contract-margin-you-find-out-about-at-month-end-is-not-margin-you-managed",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://www.echorecruit.com/hubfs/image-1789710173979.png"
    },
    "name" : "Echo Recruit"
  }
}
```

```json
{
  "@context" : "http://schema.org",
  "@type" : "Article",
  "author" : {
    "@type" : "Person",
    "name" : [ "Echo Recruit" ]
  },
  "datePublished" : "2026-10-27T05:45:20+0000",
  "description" : "On a contract desk the money is the gap between two rates, on hours somebody must approve. Five ways that gap closes quietly, with the arithmetic laid out.",
  "headline" : "Contract margin you find out about at month end is not margin you managed",
  "image" : "",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://www.echorecruit.com/hubfs/image-1789710173979.png"
    },
    "name" : "Echo Recruit"
  },
  "url" : "https://www.echorecruit.com/blog/contract-margin-you-find-out-about-at-month-end-is-not-margin-you-managed"
}
```