All articles

KajoData / Career & business

Financial KPIs: COGS, contribution margin, OPEX and cash

Positive profit can coexist with falling cash. Follow one cost, margin and payment model with reproducible calculations and explicit assumptions.

Kajo RudzińskiPublished Updated 13 min read

A blank ledger, trays of blocks and a balanced scale symbolise reconciliation in navy and yellow pixel art.

A report shows rising revenue, a positive result and less money in the bank. That does not necessarily indicate an error. The company may have sold goods on credit while paying for inventory it has not sold yet. To explain the situation, an analyst needs to separate several questions instead of looking for one number that describes the whole business.

We will work through COGS, contribution margin, OPEX, net profit margin and the relationship between fixed and variable costs. I will add a cash reconciliation because profit is easily mistaken for money available to spend. One fictional month connects the calculations. This is an educational management-reporting model with explicit simplifications, rather than a complete financial statement or instructions for calculating taxes.

Start with the period and scope

Revenue, expense recognition and cash movement can happen at different times. Before calculating, record the period, currency, organisational entity and allocation rules. Agree with finance which accounts belong to each reported line. A similar invoice description does not provide enough information to classify every transaction correctly, particularly when one supplier provides several kinds of service.

Separate two cost classifications. One describes function or presentation, such as cost of goods sold and other operating expenses. The other describes behaviour as volume changes: fixed, variable or mixed. These are not competing lists from which you choose one. A cost can appear in both perspectives without becoming two separate expenses or being subtracted twice.

I would prepare a short mapping with a definition owner and an example source entry for each line. I would also identify adjustments, estimates and the monthly closing point. A later difference between the dashboard and the agreed report can then be explained through data and rules, without guessing which number looks more plausible. Reproducibility is more useful than a convincing visual impression.

One fictional month

Consider September 2026 and a shop selling one product. All amounts are in PLN, excluding VAT. The shop sells and recognises revenue from 100 units at 200 PLN each. There are no discounts or returns. The cost of each unit sold is 80 PLN, with another 20 PLN per unit in variable sales servicing costs.

Fixed operating costs total 6000 PLN, including 1000 PLN depreciation of equipment already owned. This model contains no fixed production overhead within COGS. Interest expense is an assumed 500 PLN and income tax expense an assumed 700 PLN. These are exercise inputs, without calculating an applicable tax rate or taxable base.

Item September amount
Revenue 20000 PLN
COGS 8000 PLN
Additional variable costs 2000 PLN
Fixed operating costs 6000 PLN
Interest 500 PLN
Model income tax 700 PLN

We will view these same inputs through two cost layouts. Changing the name of a subtotal does not introduce another expense. Afterwards, payment timing will explain why the monthly result differs from the movement in the bank balance. Keep the original inputs visible so that each step can be checked independently.

COGS: the cost of what was sold

Cost of Goods Sold concerns the cost of goods that have been sold. It does not automatically equal every inventory purchase paid for during the month. The IFRS Foundation’s IAS 2 overview explains that the carrying amount of inventory sold becomes an expense in the period of the related revenue. This helps distinguish purchasing from recognising the cost of a sale.

Our 100 sold units at 80 PLN produce COGS of 8000 PLN. However, the shop purchased and paid for 125 units at the same price, spending 10000 PLN. With no opening inventory, 25 units remain, valued at 2000 PLN. The difference between supplier payment and COGS is held in unsold inventory; it has not disappeared from the analysis.

In manufacturing, inventory cost can also include labour and allocated production overhead, as the same IFRS page explains. Do not assume that COGS always behaves as an entirely variable cost. Our shop uses a simpler trading model with a constant purchase cost per unit. Another business needs its own cost mapping before the contribution calculation can be reproduced reliably.

Services and digital products also require a clear cost scope. You can value your own time when comparing alternatives or planning outsourced work. That estimate does not automatically become accounting COGS. Label it as a management assumption and agree the treatment of incurred costs with finance before combining the figures in one report. An economic comparison and a recognised expense need not be identical.

Gross profit and contribution margin

Subtracting COGS from revenue leaves gross profit of 12000 PLN, or 60% of revenue. This is the gross profit on sales subtotal, rather than profit before tax. Our example still has other variable and fixed costs. The first difference is not an amount that the owner can simply withdraw or treat as the final company result.

Contribution Margin subtracts all variable costs within the model from revenue. OpenStax explains this construction. Here the variable cost per unit is 80 + 20 = 100 PLN, and total variable costs are 10000 PLN. The additional servicing cost matters even though it sits outside COGS in our chosen presentation.

Contribution is therefore 20000 - 10000 = 10000 PLN, equivalent to 100 PLN per unit and 50% of revenue. Those three expressions represent a total amount, a unit amount and a percentage. Give them distinct labels. A card saying “margin 100” does not tell readers which interpretation applies or what unit they should use in the next calculation.

Contribution first covers fixed costs and only then produces operating profit. It is a useful starting point for pricing scenarios, but does not yet answer questions about liquidity or final net profit. Positive contribution from an individual sale does not guarantee that the actual volume covers the company’s support structure. The total and the unit calculation must be considered together.

OPEX: map the lines and avoid double subtraction

In this report, OPEX means operating expenses shown outside COGS: 2000 PLN of additional variable costs and 6000 PLN of fixed costs, totalling 8000 PLN. I state that convention explicitly. Other reports may use a broader scope or a different presentation, so refer to the account mapping and agreed layout rather than assuming the abbreviation settles the question.

The functional layout gives 20000 PLN revenue minus 8000 PLN COGS minus 8000 PLN OPEX, producing 4000 PLN operating profit. The cost-behaviour layout reaches the same result: 10000 PLN contribution minus 6000 PLN fixed costs equals 4000 PLN. Both views must reconcile because they describe the same business activity and expense population.

Subtracting all OPEX from contribution would be a mistake. The additional variable costs of 2000 PLN would be deducted again, although they are already included in the contribution calculation. This error can occur even when individual dashboard cards contain correct totals. Check the relationships between cards as well as the accuracy of each isolated aggregation.

OPEX is not a synonym for fixed costs. A tool charged by usage may vary, and a contract may combine a subscription with a per-unit fee. Do not classify an entire supplier based on its name. Read the charging mechanism and establish which activity changes the cost within the range being analysed. That distinction becomes particularly relevant when modelling a different sales volume.

Net profit margin: use the complete stated result

Subtract 500 PLN interest from 4000 PLN operating profit to obtain 3500 PLN profit before tax. After the assumed 700 PLN tax expense, net profit is 2800 PLN. Net profit margin is 2800 / 20000, or 14%. The numerator and denominator must cover the same period and entity, rather than mixing one team’s result with company-wide revenue.

Do not confuse margin and markup. Margin relates the relevant profit amount to revenue, while markup relates a relevant difference to cost. Different denominators produce different answers even for the same transaction. Before comparing reports, inspect the formula instead of relying on the word “percentage” or similar chart colours. Terminology alone is insufficient evidence of comparability.

Compare the percentage alongside absolute profit and sales scale. A lower percentage margin does not automatically make every form of growth pointless; costs, risk and objectives provide context. I am not setting a universal healthy margin for every company. This model explains the calculation rather than judging an investment opportunity or prescribing how a business should allocate capital.

Advertising reports need careful labels too. Attributed revenue divided by advertising spend describes the revenue-based form of ROAS, rather than return after all costs. Google explains that conversion values can represent different measures, so inspect the configuration. Campaign revenue alone is not company net profit. The ecommerce KPI guide connects acquisition cost and customer value in more detail.

Fixed to variable costs: define the relationship

For this report, F/V means fixed operating costs divided by variable operating costs. Interest and tax are outside that scope. The result is 6000 / 10000 = 0.6. This describes the structure of our selected model, without treating F/V as one universally prescribed accounting metric. Its usefulness depends on the question and the consistency of the classifications.

The fixed-cost share of total operating costs is a different calculation: 6000 / 16000 = 37.5%. Do not label the ratio of 0.6 as a 60% share of all costs. The first denominator contains variable costs only; the second contains both categories. A small denominator change can substantially alter the interpretation of an otherwise convincing management slide.

A fixed cost stays fixed within a specified range and time horizon, rather than forever. OpenStax discusses relevant ranges and step costs. An additional shift, workstation or warehouse can change the cost level once current capacity is exceeded. A higher-volume scenario therefore needs a capacity check before the existing fixed-cost total can safely be retained as an assumption.

Do not automatically consider a lower F/V ratio better. A change can transfer costs between categories while affecting quality, availability or risk. Show the assumptions and compare the complete result at several volumes. Only then can the consequences be discussed, instead of selecting the lowest percentage without understanding the process that produced it.

A price scenario and operating break-even

At a price of 200 PLN and variable cost of 100 PLN per unit, each sale contributes 100 PLN. Fixed costs of 6000 PLN therefore require 60 units for operating profit to reach zero. This applies the break-even calculation described by OpenStax. Here the threshold is operating break-even, before interest and tax, assuming unchanged unit costs and sufficient capacity.

If the price falls to 180 PLN, unit contribution becomes 80 PLN. At 100 units, total contribution falls to 8000 PLN and operating profit to 2000 PLN. Recovering the earlier 4000 PLN operating result requires 10000 PLN contribution, or 125 units at the new price, with every other assumption unchanged. The required volume follows from the cost model rather than observed customer response.

This is a conditional calculation, not a demand forecast. A price reduction does not guarantee another 25 units sold or unchanged costs. Check stock availability, the ability to service higher volume, possible returns and payment timing. I would bring several scenarios to the discussion, clearly distinguishing historical inputs from future assumptions and identifying what evidence would support each one.

A blank ledger, waiting envelopes and moving blocks on separate platforms represent different recording and movement times.

Reconcile profit with cash

The shop begins the month with 5000 PLN cash, no receivables and no inventory. Customers pay 16000 PLN of the 20000 PLN recognised sales, leaving 4000 PLN receivables. The 125 purchased units cost 10000 PLN, paid in full. Additional variable expenses, interest and the assumed income tax are also paid entirely within the month.

Only 5000 PLN of the 6000 PLN fixed costs requires current payment. The remaining 1000 PLN is depreciation of earlier equipment. The example has no other cash movements, new equipment purchases or changes in liabilities. These assumptions make reconciliation possible, but do not replace a complete cash flow statement for a real entity with additional transactions and reporting requirements.

Cash movement Amount
Customer receipts +16000 PLN
Purchased inventory payment -10000 PLN
Additional variable costs -2000 PLN
Paid fixed costs -5000 PLN
Interest -500 PLN
Model income tax -700 PLN
Change in cash -2200 PLN

Closing cash is 2800 PLN. Net profit is positive at 2800 PLN, while cash falls by 2200 PLN. The identical net profit and closing cash amounts are coincidental here. Reconciliation is: profit of 2800 plus depreciation of 1000 minus the receivables increase of 4000 minus the inventory increase of 2000, giving the cash change of -2200 PLN.

The SEC’s educational cash flow material explains adjustments for non-cash items and changes in assets and liabilities. Our example shows the specific differences: some sales await collection and some purchased goods await sale. Net profit margin alone therefore cannot establish the current bank balance or the timing of the next required payment.

Percentages, missing values and boundaries

In a separate comparison, net margin rising from 10% to 14% represents four percentage points and a relative increase of 40%. These are different descriptions. State which one appears in a chart title. A bare percentage symbol for a difference between rates can mislead readers who interpret it as a relative change from the earlier value.

With zero revenue, net margin as a ratio is undefined even if the loss amount is known. With positive revenue and negative profit, show a negative margin. F/V is similarly undefined when variable costs are zero. Missing cost data is a different problem: it does not mean zero cost. Mark the result as incomplete before displaying a seemingly valid margin.

Describe a move from loss to profit primarily with amounts and the sign change. Mechanically dividing the change by a negative base can produce a percentage suggesting the opposite direction. Across segments, calculate the combined margin from total profit divided by total revenue. An unweighted mean of percentages ignores differences in sales scale and may misrepresent the whole business.

What the analyst should deliver

I would provide a reconciled input table, a cost map, both routes to operating profit and an explanation of the difference between profit and cash. Every card would state its period, unit and definition. Technical joins would be checked through record counts and totals, following the approach in SQL for analysts.

Then I would record questions for finance and operations: where each cost comes from, what changes it as sales grow and when payment occurs. That moves the discussion from abbreviations to a concrete process. A useful report lets people inspect assumptions and calculations instead of asking them to trust one impressive number without understanding its limits.

Keep budget, forecast and actuals separately labelled. If some expenses remain estimated, indicate that status and the update date. A later adjustment should not silently erase the information available when an earlier decision was made. Preserving that distinction makes both the report and the decision history easier to explain.

Key takeaways

Does COGS equal every inventory purchase paid for?

No. COGS here concerns units sold, while part of the paid purchase remains in inventory. Expense recognition and cash movement must be separated.

Is contribution margin the same as gross profit?

Not always. Contribution subtracts all variable costs in the model, while gross profit subtracts COGS. COGS and fixed/variable classifications describe different cost perspectives.

Does positive net profit mean cash increased?

No. The example combines 2800 PLN profit with a 2200 PLN cash decrease. Depreciation and increases in receivables and inventory explain the difference.

AI was used in an automated way while working on this article. If you want to learn how to do it too, check out this project.

Kajo Rudziński

Newsletter KajoData

Let’s keep in touch.

I write about data analysis, learning and changing careers. My newsletter and the sign-up form are in Polish. If that works for you, I’d be glad to see you there.