Blog

Why does my gross margin move every month when nothing changed?

The short answer

Most monthly gross margin swings are timing, not performance. Inbound freight expensed on invoice, quarterly count adjustments, and supplier rebates booked in lumps land cost in the wrong months. Roll the quarter and compare it to the months. If the quarter is stable and the months are not, the margin never moved.

A nine point swing in one quarter, and the business never changed. Where the movement actually comes from.

By Stephen Ninesling, FynScale

What makes a stable margin look unstable?

Here is a consumer brand doing $40M a year. Same products, same price list, same three contract manufacturers all quarter. No promotions beyond the usual. The CEO opens the Q1 monthly reports and sees this:

MonthRevenueCOGSGross margin
January$3,000,000$1,860,00038.0%
February$2,800,000$1,600,00042.9%
March$3,600,000$2,380,00033.9%

Nine points of swing between February and March. On March revenue, one point of margin is $36,000, so nine points is $324,000 of apparent gross profit that appeared and then vanished inside sixty days.

The interesting part is the quarter. Add the three months together and Q1 gross margin is 37.9%. That number is close to right. Every month inside it is wrong.

That is the signature of a timing problem rather than a business problem. Costs are landing in the month an invoice arrived or an adjustment got booked, not the month the goods sold. The margin is not moving. The cost recognition is moving, and the margin is just reporting it.

Three mechanics cause most of it. In this set of books they were worth 4.8 points in March and 3.9 points in February, in opposite directions.

Where should inbound freight and duty actually sit?

Inbound freight, duty, customs brokerage, and drayage are part of what the inventory cost. Under accrual accounting they belong in the inventory value on the balance sheet, and they release into COGS as the units sell.

The common shortcut is to expense them when the invoice arrives. The freight forwarder bills in March, so March eats the cost.

In this company one container cleared in March. Ocean freight, duty and brokerage came to $114,000 against 13,500 units, which is $8.44 of landed cost per unit. Those units sold across the following four months. March absorbed the whole $114,000 and booked almost none of the matching revenue.

$114,000 on $3.6M of revenue is 3.2 points. That is a third of the swing, from one invoice.

Two things follow. The first is that the months with a container clearing look bad and the months without one look good, on a schedule set by the shipping calendar rather than by anything commercial. The second is quieter: if landed cost never gets capitalized, inventory on the balance sheet is understated by the freight sitting in it. This company carries $2.1M of inventory. At roughly 8% unabsorbed landed cost, that is $168,000 of asset value that is not there, which also means $168,000 of cost that already ran through the P&L early.

Why does a quarterly inventory count ruin one month in three?

Most companies in this range count inventory quarterly, not monthly. Shrink, damage, mispicks and receiving errors accumulate for three months, then get trued up in one entry.

The March count produced a $57,000 adjustment to COGS. That is real cost and it belongs in the books. It just does not belong entirely to March. It accrued at roughly $19,000 a month across January, February and March.

$57,000 on March revenue is 1.6 points. So March carried 1.6 points that January and February should have carried about a third of each.

This is why the month after a count often looks unusually strong. The accumulated cost has just been flushed out and the new pile has not built up yet.

Are supplier rebates landing in the month they were earned?

Volume rebates, co-op allowances and freight credits are earned continuously and paid in lumps. When the credit memo hits, it lands as a reduction to COGS in that month.

February received a $90,000 rebate from a contract manufacturer, earned across the prior six months at roughly $15,000 a month. On $2.8M of revenue, booking all of it in February is worth 3.2 points.

That is most of the reason February looked like a 42.9% month. It was not a better month. It was a month that received six months of credit.

Do merchant fees and outbound shipping belong above or below the margin line?

This one does not usually cause swings. It causes a margin number that cannot be compared to anything.

There is no single correct answer. Both treatments are defensible:

  • Payment processing fees, outbound freight and fulfillment labor in COGS gives a contribution-style margin that reflects what it costs to get the product to the customer
  • The same costs in operating expenses gives a product margin that reflects manufacturing only

What matters is that the choice is written down, applied the same way every month, and understood when the number gets compared to a benchmark. A brand running 39% with fulfillment in COGS and a brand running 39% with fulfillment in opex are not running the same business. On a $40M brand the gap between those two definitions is routinely 8 to 12 points.

The failure mode worth checking is inconsistency inside one year. If merchant fees were reclassified in a system cleanup in month five, the margin trend line breaks at month five and the trend is measuring the reclassification.

Does this happen if I do not hold inventory?

Yes, through a different door. The mechanic is the same: cost recognized on a schedule that has nothing to do with when the revenue was earned.

In a services business it is usually contractor and freelance invoices. An $18M agency recognizing roughly $1.5M of revenue a month depends on subcontractors submitting invoices, and they submit when they submit. One month arrives carrying $132,000 of cost that belongs to the prior month. On $1.5M that is 8.8 points of gross margin, and the month it belonged to looked correspondingly strong. Nothing about the work changed. The billing did.

The same shape appears in bonus and commission accruals settled quarterly, in annual software and hosting commitments expensed on renewal rather than spread, and in support or implementation headcount that sits in cost of revenue one year and in operating expenses the next after a reorganization.

The check is identical. Roll the quarter, compare it to the months, then read the largest entries in the extreme months. If the quarter holds and the months do not, you are looking at period assignment.

Which months are wrong, the good ones or the bad ones?

Both, in opposite directions. Once the three mechanics above are pushed into the periods they belong to:

MonthReportedAdjusted
January38.0%37.4%
February42.9%39.0%
March33.9%38.6%

Reported, the quarter swings 9.0 points. Adjusted, it swings 1.6 points, which for a physical-product business with a changing mix is close to flat.

The honest read is that this brand runs somewhere around 38%, every month, and has for a while. Nothing in the reported numbers said that.

What does it cost to price off the wrong number?

This is the part that shows up in cash rather than in a report.

The CEO in this example built a wholesale program in the spring using recent margin as the input. February was the freshest strong month and the one that felt like the real capability of the business. The pricing assumed something close to 42.9% and left room accordingly.

Actual margin was 39.0%. On $8M of annual wholesale revenue, pricing off a number 3.9 points too high is $312,000 of gross profit that was given away at the price list and cannot be recovered without going back to the accounts.

The same error runs the other way and is harder to spot. Judging a channel off a month that absorbed a container and a quarterly count makes a healthy channel look marginal. Product lines get cut, ad spend gets pulled back, and a customer segment gets deprioritized on the strength of a shipping schedule.

How do I separate a timing artifact from a real margin change?

Three checks, and none of them need a new system.

Roll the quarter and compare it to the months. If quarterly margin is stable and monthly margin is volatile, the problem is period assignment, not performance. That single comparison sorts most cases. In the example above, 37.9% for the quarter against a 33.9% to 42.9% monthly range answers the question immediately.

Pull the five largest COGS entries in the worst month and the best month. Not the accounts, the individual entries. Look for a freight invoice, a count adjustment, a credit memo, a reclassification. In practice the swing is usually two or three entries, not a broad drift, and you can name them in under an hour.

Check whether unit economics moved. Take one product with steady volume. Compute landed cost per unit and price per unit for each month. If cost per unit is flat and reported margin moved, the movement is in the accounting. If cost per unit actually moved, that is a real margin change and it deserves a different conversation, usually with a supplier.

A real margin change looks different. It shows up in unit cost, it persists across quarters, and it tracks to something you can point at: a supplier price increase, a mix shift toward a lower-margin SKU, a discount program, a freight rate reset. It does not appear for one month and reverse the next.

What does it take to fix rather than explain?

Explaining the swing every month is the expensive outcome, because the number still cannot be used for anything.

The fixes are ordinary bookkeeping decisions:

  • Capitalize inbound freight and duty into inventory cost and release it as units sell, which requires a landed cost per unit and a receiving process that applies it
  • Accrue expected shrink monthly at the observed rate and use the physical count to true the accrual instead of to create the whole charge
  • Accrue rebates monthly as earned, based on the contract terms and running volume, and use the credit memo to settle the accrual
  • Write down where fulfillment, merchant fees and shipping sit, and stop moving them

None of that is difficult. It is scoping. A monthly close built to produce a filed tax return will not do it, and it was never asked to. A monthly close built to support pricing decisions has to.

Common questions

Is a 9-point monthly margin swing normal for a consumer brand? Reported, it is extremely common at this revenue range. Real, it is not. If underlying unit economics genuinely moved 9 points in one month, something significant happened in purchasing or mix and it should be nameable in one sentence.

Does capitalizing inbound freight change my taxes? It changes timing, not the total. Capitalizing moves cost from the current period into the period the goods sell, so in a growing business with rising inventory it typically increases current-period income. It also has to be applied consistently. This is a conversation with whoever prepares the return before the method changes.

We count inventory once a year, not quarterly. Is that worse? For margin reporting, yes. An annual count concentrates twelve months of accumulated shrink into one month, which distorts that month severely and leaves the other eleven overstated. A monthly shrink accrual matters more when counts are infrequent, not less.

Can my accounting system do landed cost automatically? Most mid-market systems handle it. QuickBooks Online does not do it natively and needs either an inventory app or a manual monthly allocation entry. The absence of the feature is usually why the shortcut got adopted.

Why does my margin look fine annually but wrong every month? Because the errors are timing errors and timing errors net to roughly zero over a long enough period. Annual figures being right is not evidence that monthly figures are usable, and monthly figures are what decisions get made on.

Should I restate prior months once I find this? Usually not. Restating closed periods creates reconciliation work and confusion with the tax return for limited benefit. The better path is to fix the method going forward and produce one adjusted view of the trailing twelve months for decision-making, clearly labeled as management reporting rather than as the books.

How long does it take to find which entries are causing this? For a single company with a normal chart of accounts, a few hours against the GL detail. The general ledger is where this lives. A P&L will show that the swing exists and will not show why.

At FynScale we read books like these and hand back what we found in writing, with the dollar figures attached.