How to Read Your Own Profit and Loss Statement
Why this matters
Reading a profit and loss statement passively is close to worthless. You open it, the numbers look plausible, you feel briefly good or briefly bad, and you close it. Nothing was learned, because a statement read with no expectation cannot surprise you: whatever it says becomes what you assumed all along, retroactively, within about four seconds.
The read that teaches you something has one extra step at the front. You write down what you think it will say before you open it. Everything useful comes from the gap between your prediction and the page. A month you predicted correctly needs no investigation no matter how ugly the result. A month you predicted wrongly needs investigating even when the result is good, and that second case is the one that saves shops.
This is about the reading session, not about statement anatomy. If you need the structure of a P&L, the sections it carries, and what each one means, that is a separate card and worth reading first.
Step 1: predict four lines, in writing, before you open anything
Four numbers, all as a percentage of that month's revenue, plus one count.
- Gross margin as a percent of revenue.
- Overhead as a percent of revenue, meaning everything that is not direct job cost.
- Net as a percent of revenue, which must equal your first number minus your second.
- Revenue as a multiple of your trailing three-month average, not as a figure. "About 1.15 times a normal month" is a prediction you can actually make from memory of the schedule.
Writing the third one as a subtraction rather than a guess is deliberate. It forces the prediction to be internally consistent, and it means a failure has to land on a specific line rather than dissolving into a vague sense that the month was off.
Predict from the schedule and the work, not from the bank. The bank tells you about collections, which is a different question, and mixing the two makes the prediction untestable.
Step 2: read in percentages first, totals second
Open the statement and read the percentage-of-revenue column against the trailing three months before you look at a single total. Totals move with volume, and volume is the thing you already know about. Percentages tell you whether the work itself behaved differently, which is the only thing the statement knows that you do not.
If your statement does not carry a percentage-of-revenue column and a trailing three-month comparison, ask for both. That is a formatting request, not a bookkeeping question, and it takes minutes to set up once.
Step 3: apply the gate
The gate, stated once. Per predicted line, per closed month: a gap of more than 3.0 percentage points on a percentage line, or more than 15% relative on the revenue multiple, means you did not know what happened in your shop that month. That line gets investigated before you form any opinion about the month as a whole. A gap at exactly 3.0 points does not trigger; it gets noted and watched.
What triggering changes. You investigate the failed line to a named cause, and you classify the cause as structural or episodic. If the same line fails the gate in two consecutive months, it stops being a monthly investigation and becomes a standing line on your close packet with its own trailing figure, so you stop rediscovering it.
Why the gate is on the prediction rather than on the trailing average. A variance against the trailing average tells you the month was different. A variance against your prediction tells you the month was different in a way you did not see coming, which is a much narrower and much more actionable set. A shop that plans a slow February and gets a slow February has no problem to solve. The same statement, compared only against the trailing average, generates a variance to explain, and explaining it costs an hour and teaches nothing.
The same gate, two months, opposite answers
One shop, two consecutive months, the identical rule applied both times.
Month A: the one that looked bad and passed
Revenue landed at about 0.86 times the trailing three-month average, a 14% down month. The owner knew it: two crews had planned time off and one commercial account paused for a remodel.
| Line | Predicted | Actual | Gap | Gate |
|---|---|---|---|---|
| Gross margin | 42% | 43% | 1.0 point | Pass |
| Overhead | 35% | 35% | 0.0 points | Pass |
| Net | 7% | 8% | 1.0 point | Pass |
| Revenue multiple | 0.85x | 0.86x | about 1% | Pass |
Every line passes, so nothing gets investigated, and net at 8% against a trailing 12% is not a problem to solve. Watch why. Trailing overhead ran 30% of revenue. Overhead is largely fixed, so at 0.86 of normal revenue the same absolute overhead has to occupy a larger share: 0.35 times 0.86 is 0.301, essentially the same absolute spend as the trailing 0.30. The overhead line did not get worse, it got concentrated. Gross margin actually improved by a point, which is what you would expect when the work that did happen was ordinary work with nobody stretched.
The owner's correct move here is to do nothing to the business and everything to the schedule. The month behaved exactly as a low-volume month with fixed overhead behaves, and an owner who reacted by cutting overhead would be cutting capacity in response to a planned dip.
Month B: the one that looked good and failed
The following month revenue came in at about 1.15 times the trailing average, a genuinely busy month. The owner predicted it and predicted the overhead dilution correctly: fixed overhead of 30% spread over 1.15 times the revenue is about 26%.
| Line | Predicted | Actual | Gap | Gate |
|---|---|---|---|---|
| Gross margin | 42% | 36% | 6.0 points | Fail |
| Overhead | 26% | 26% | 0.0 points | Pass |
| Net | 16% | 10% | 6.0 points | Fail |
| Revenue multiple | 1.15x | 1.15x | 0 | Pass |
Two lines fail, and they fail by the same amount because the net gap is entirely the margin gap passing straight through. Overhead behaved exactly as predicted, which narrows the investigation to direct cost before any digging starts. That narrowing is the whole reason the prediction is split into separate lines.
Inside direct cost, two components moved. Materials went from 34% to 35% of revenue. Direct labor went from 24% to 29%. Total direct cost moved from 58% to 64%, so gross margin moved from 42% to 36%.
Now convert labor out of percentages, because a percentage of a bigger base hides the size of the change. Labor at 29% of a 1.15 revenue base is 0.29 times 1.15, about 0.334, against a trailing 0.24. Labor cost rose about 39% to deliver 15% more revenue. That is the finding. The shop absorbed a volume spike with overtime rather than with capacity, and overtime carries both a premium and, late in a long week, lower output per hour.
And the number that makes the month legible: net at 10% of a 1.15 revenue base is 0.115, against a trailing 12%. The best revenue month of the quarter produced about 4% less profit than an average one. Nothing on the face of the statement says that. Revenue was up, net was positive, every account reconciled. Only the comparison of the prediction to the page finds it.
The cause classifies as structural rather than episodic, because the condition that produced it, no slack capacity at 1.15 times normal volume, is still there. The action is a capacity rule set before the next spike: at a forecast above roughly 1.10 times normal weekly volume, the work gets subcontracted, rescheduled, or declined, rather than absorbed. That decision is worth making in a calm week, because it is unmakeable in a busy one.
What this gate cannot see
Three things move a P&L without any of your predictions failing, and none of them are bookkeeping errors.
Timing. A prepaid annual expense booked in one month, a bonus, an insurance renewal. These are real costs in a real month and they will blow a line you predicted correctly on the underlying work. Ask whether the line contains something annual before treating it as a trend.
Non-cash entries. Depreciation is a cost on the statement that took no money out of the account this month. It belongs there, and it is the most common reason an owner's mental arithmetic disagrees with the net line.
Owner compensation treatment. Whether you take a draw or a wage changes where your money appears, or whether it appears at all, and it moves net by more than most operational variances do. Two shops with identical operations can show materially different net simply from this choice. It is a question for the accountant who signs your return, not something to solve by reading the statement harder.
Checking your read before you act on it
Three arithmetic checks, none taking more than a minute, all of which catch a real problem before you make a decision on a broken page.
- Does the statement close? Revenue minus direct cost minus every operating expense should equal the net line exactly. If it does not, something is sitting in a category that is not displayed, and you are reading a subset.
- Does the trailing column re-sum? Add the three prior months' revenue and divide by three, and confirm it matches the trailing average the statement prints. A trailing column built on a different window than you assume will make every gap you calculate wrong in the same direction.
- Does revenue tie to invoices? Take the count of invoices issued in the month and compare it against the job count that closed. They will rarely match exactly, but a large gap in either direction means the revenue line is not measuring the work you think it is, and no percentage on the page is trustworthy until that is resolved.
References
- Generally Accepted Accounting Principles (GAAP), revenue recognition and matching concepts
- U.S. Small Business Administration (SBA), guidance on reading small business financial statements
- See related: Reading Your Profit and Loss Statement; The Monthly Close SOP; The Numbers an Owner Should Be Able to Recite