Resources

Warehouse Labor / Cost & Margin

How Do You Know Which Warehouse Loads Actually Made Money?

An invoice tells you what the work sold for. It takes a second number, attached to the same job, to tell you what it cost.

September 16, 2026 · 8 min read


The month closes. Volume was up, the crews were busy, the invoices went out — and the number at the bottom is smaller than it should be.

So the question becomes: which of those jobs actually made money? And that turns out to be surprisingly hard to answer, not because the information is missing, but because no one place holds both halves of it.

Revenue per job is easy to find. Cost per job is usually not recorded anywhere at all.

The two numbers are kept in different shapes.

Both figures exist in every warehouse labor business. They are just organized around different things:

  • Revenue is organized by customer. An invoice covers a month of work for one account, so it answers “what did Anchor Bay owe us in August?” and not “what did Tuesday's container earn?”
  • Labor cost is organized by employee. A payroll run covers a week of work for one person across every job they touched, so it answers “what do we owe Rosa?” and not “what did that container cost us?”

Neither is organized by job. To get margin on one Load you have to take a slice out of an invoice, take slices out of four people's timesheets, and join them by hand — which is why it usually gets done once, for the one job somebody argued about, and never for the other two hundred.

Put both numbers on the job.

This is a completed Load in FOREMAN. Anchor Bay Foods, a container of mixed cases stripped at their Stockton DC on September 15, worked by a crew of four.

Example account shown with simulated data. The figures are illustrative, not a real customer's results.

Production & Financials

Cases

1,850

Sorts

0

Weight

0 lbs

Crew Members

4

Total Crew Hours

14h 15m

Billed Amount

$518.00

Payout Amount

$313.50

Pay & Billing Snapshot — Captured Sep 15, 2026

Unit of Measure

Case

Employee Pay

Hourly · $22.00

Customer Billing

Production · $0.28

Frozen — these amounts will not change even if this Work Type's live rates are updated later.

  1. What the job took — 1,850 cases, 4 crew members, 14h 15m of crew time. Total Crew Hours is the sum of each person's clocked time on this Load, not how long the job was open — that difference is the whole reason the cost is knowable.

  2. Billed Amount — 1,850 cases at $0.28 per case. This is what the work sold for, computed from the quantity the crew actually completed rather than typed in later.

  3. Payout Amount — 14h 15m at $22.00 an hour. This is the Load's total labor payout across all four crew members — not one person's pay — and it is the number that is usually missing.

  4. The rates, frozen to this job — The pay and billing rules are captured when the Load is created. Raise the customer's rate next quarter and this Load still reports what it earned under the rate it was run on.

The margin is just the subtraction.

$518.00 billed, $313.50 in labor, so the job returned $204.50 — a gross margin of 39.5%. Nobody calculated that during the month. Both numbers were produced by the work being recorded: the cases came off the floor, the hours came off the crew's clock-ins, and the rates were already attached to the job.

The rates being attached matters more than it sounds. They are captured when the Load is created and stay frozen to it, so renegotiating a customer's pricing in November doesn't quietly restate what September earned. A margin history you can't trust to stay still isn't a history.

Where the margin actually moves.

Look again at how this job is priced. The crew is paid hourly. The customer is billed per case. Those are two independent decisions, and plenty of warehouse labor companies run exactly that combination.

It means the two sides of this job respond to completely different things. Billing is fixed the moment the container is empty — 1,850 cases is 1,850 cases. Cost keeps running for as long as the crew is clocked in. Take three hours longer on the same container and the labor comes to $385.00, the billing stays at $518.00, and the margin falls from $204.50 to $133.00. Same work, same invoice, a third less left over.

That is not an argument against hourly pay. It is the reason the two numbers have to sit on the same record: pricing that works at one crew speed and fails at another is invisible until someone puts the cost beside the revenue. The same applies in reverse to production pay, where cost is fixed per unit and it is the hours that float.

Then the same subtraction, across the period.

One job answers one argument. The useful version is the same arithmetic over everything that finished, which is what the dashboard's financial workflow carries.

Financial workflow

Last 30 days

$59,437.00

Billable revenue

$37,140.00

Payroll cost

$22,297.00

Gross margin

37.5% margin

$51,120.00

Invoiced revenue

18 invoices

Billing

$8,317.00

Unbilled

3 records

$51,120.00

Invoiced

18 records

  1. Billable revenue — What the completed work in this period billed — the sum of every finished Load's billed amount, not what has been invoiced or collected.

  2. Payroll cost — The same Loads' payout amounts, added up. Because it comes from the jobs rather than from a payroll run, it lines up with the revenue beside it period-for-period.

  3. Gross margin — The subtraction, plus the percentage. $22,297.00 on $59,437.00 of billable revenue is 37.5% — a number nobody had to assemble.

Billable revenue and invoiced revenue are deliberately separate lines. The first is work that has been performed; the second is work that has been put onto an invoice. The $8,317.00 gap between them is finished work that hasn't been billed yet — margin that has already been earned and paid for, and not yet asked for.

And per customer, which is where it gets uncomfortable.

Because every Load carries both figures, they add up along any line the Load already knows about — customer, site, work type. Customer is usually the one that changes somebody's mind.

Customer Report

One row per customer

Customers

4

Total Loads

118

Total Billed

$59,437.00

Gross Margin

$22,297.00

Anchor Bay Foods$8,624.00
44 completed · $21,742.00 billed · $13,118.00 payout
Lakeshore Produce Co.$4,534.00
31 completed · $16,480.00 billed · $11,946.00 payout
Vantage Retail Group$5,933.00
22 completed · $12,905.00 billed · $6,972.00 payout
Copperline Beverage$3,206.00
17 completed · $8,310.00 billed · $5,104.00 payout
  1. The same figure, for the whole book — Total Billed and Gross Margin across every customer. This is the period number from the previous screen, seen from the customer side.

  2. And then per customer — Anchor Bay Foods returns 39.7% on $21,742.00. Lakeshore Produce Co. bills nearly as much and returns 27.5%, which is the kind of thing that stays invisible when revenue and payroll are only ever read separately.

Two accounts of roughly the same size returning 39.7% and 27.5% is a rate conversation, or a staffing conversation, or a work-type conversation. It is not visible at all in a revenue report, because in a revenue report Lakeshore looks like a good customer.

What this number is, and what it isn't.

Worth being precise, because a margin figure invites more weight than it can carry:

  • It is gross margin on direct labor. Billed minus crew payout. Payroll taxes, workers' comp, supervision, equipment and overhead are not in it, so it tells you whether the work was priced right — not what the business kept.
  • The cost side is the job's payout, not a payroll run. It comes from the Load, which is what lets it line up with the revenue beside it. Approved payroll is a separate figure covering a pay period, and the two are not meant to match to the cent.
  • Only finished work counts. A Load still being worked has a cost that is still climbing, so including it would flatter every number on the page.
  • It is not for everyone. Rates, payouts and margin are administrator-only. Crew and supervisors on the floor see the job, never the money on it.

When you want the whole list.

The screens above answer “how are we doing” and “who with”. For the per-job version — every completed Load with its hours, its billing, its payout and its margin, in one sheet you can sort — the Load Report exports exactly that, with payout and margin as columns you switch on. Which is the same data, handed over in the shape the spreadsheet was always trying to produce. Divide the cost side by the quantity instead and you get cost per unit of warehouse labor, which is the version to check a quoted rate against.

One record, measured once.

None of this needs a new measurement. The hours are already captured when the crew clocks onto the job, the quantity is already captured when the work is completed, and the rates were set when the customer was onboarded. Margin is what falls out when those three things are recorded against the same Load instead of into three different places.

It is the same principle that makes the rest of the operation legible — one record per job, carrying everything that happened on it, read by whoever needs it.

Common questions

How do you calculate margin on a warehouse load?

Subtract what the labor on that job cost from what the job billed the customer. The difficulty is rarely the subtraction — it is that the two figures are usually recorded in different systems, organized by different things, so neither one is attached to the job itself.

Can warehouse labor companies pay crews hourly while billing customers per case?

Yes, and it is common. Employee pay and customer billing are separate business calculations, so one can be time-based while the other is production-based. It also means the cost of a job moves with how long the crew took while the amount billed does not, which is exactly where margin is won or lost.

Is gross margin per load the same as profit per load?

No. Gross margin here is the billed amount minus the direct labor payout for that job. It does not include payroll taxes, workers' compensation, insurance, supervision, equipment or any other overhead, so it is a measure of whether the work was priced correctly, not of what the business ultimately kept.

Why does margin change when a customer's rates change?

It should not, for work already completed. A job's pay and billing rates should be captured when the job is created and stay frozen, so repricing a service next month never quietly rewrites what last month's completed work earned.

Which loads should count toward margin?

Only work that is actually finished. A job still being worked has an incomplete cost — the crew is still clocked in — so including it understates cost and overstates margin. Completed and closed jobs are the ones that can be measured.

See what your work is actually returning.

FOREMAN keeps labor cost and customer billing on the same Load, so margin by job, by customer and by period is a consequence of running the work rather than a month-end exercise. The full capability list covers how the rest of it connects.