Journal · Costing
Absorption costing, explained with a two million dollar cure
Everyone knows unit cost is fixed cost divided by volume. The arguments, and the expensive mistakes, are all about the divisor, and choosing it is a judgement rather than a fact you can look up.
This post is about a price, not about a medicine. Nothing in it is medical advice. Anyone making a decision about a treatment should be talking to a clinician rather than reading an essay about cost accounting.
In December 2023 the United States approved two gene therapies for sickle cell disease on the same day, at $2.2 million and $3.1 million for a one-time treatment. In the year that followed, one of those companies reported a negative gross margin on its products: it took in $83.795 million and recorded $89.380 million of cost against it.
The interesting part is what its own filing says drove that. Not the cost of making each dose, but a reserve for excess inventories of $10.9 million, a write-down of product built for demand that did not arrive. The same company later attributed a fall in its cost of product revenue, on higher revenue, to "less costs related to excess manufacturing capacity".
That phrase is the subject of this post, in the issuer's own words. Capacity you paid for and did not use has to go somewhere, and where it goes is governed by a rule that almost everyone misremembers, including two earlier drafts of this article.
The rule, and the thing everyone gets wrong
Making things incurs two kinds of cost. Variable cost happens per unit. Fixed cost happens per year whatever you do: the factory, the machines, the production supervisor.
Absorption costing is the rule that each unit must carry a share of the fixed production overhead as well as its own variable cost. For businesses that manufacture the inventory they hold, this is not optional. What almost everyone then assumes is that the share is the year's overhead divided by the units actually made.
IAS 2 sets the allocation on the normal capacity of the facility: the output expected on average over several periods under normal conditions, after allowing for planned maintenance. It then states that the fixed overhead charged to each unit "is not increased as a consequence of low production or idle plant", and that overhead which finds no unit is recognised as an expense of the period. The inventory guidance in US GAAP, at ASC 330, converged on the same approach, with the extra condition that production must be judged abnormally low before the relief applies.
Two things the same paragraph says that are usually left out. The actual level of production may be used when it approximates normal capacity, so an actual-output rate is not forbidden, only a rate inflated by a bad year. And in a period of abnormally high production the per-unit charge is decreased, so that inventory is not measured above cost. The rule is not "always use normal capacity". It is "never let a quiet year make your inventory look more expensive".
So in a bad year the cost of each unit in inventory does not go up. What goes up is a period expense for the capacity you did not use. The standards treat idleness as something that happened to the year, not as a property of the things you managed to make.
That is the opposite of most people's intuition, and the intuition is not stupid. It is answering a different question.
Three questions that all sound like "what does this unit cost"
| The question | What you divide by, or use instead | What it is for |
|---|---|---|
| What goes into inventory and cost of sales? | Normal capacity, with the shortfall expensed | The statutory accounts. The standards decide this one for you |
| What did a year actually spend per unit it made? | Actual output | A real and useful number, and not an inventory cost |
| What should we charge, and what should we drop? | Neither. Contribution and avoidable cost | Decisions. Spread overhead belongs here only when the price has to recover the capacity it consumes, as a repeat price does |
Nearly every costing argument inside a business is two people answering different rows and assuming the other is wrong. US filers have a fourth answer to keep track of as well, since the tax rules on what must be capitalised into inventory do not simply import the accounting relief for idle capacity. That one is a question for your tax adviser rather than for us.
The cure, and the thing the published model cannot tell us
Here is a published cost model for manufacturing one autologous cell therapy, the kind where a patient's own cells are taken out, modified and returned. It was built by an academic group at a non-profit cancer centre and has two parameters, in 2018 euros, converted to dollars by the authors using purchasing power parity rather than a market rate, which runs them roughly 13% above a spot conversion: $584,131 a year of fixed cost and $46,397 per dose of materials, collection and testing. One closed manufacturing system has a maximum capacity of 18 doses a year.
| Doses made in a year | Fixed cost per dose | Variable | Total per dose |
|---|---|---|---|
| 1 | $584,131 | $46,397 | $630,528 |
| 10 | $58,413 | $46,397 | $104,810 |
| 18, the machine at maximum | $32,452 | $46,397 | $78,849 |
The same process, people and materials, and what a year spends per dose moves by a factor of 8. Nothing about the science changed. Only the division did.
You cannot read the accounting answer off that table, and an earlier draft of this post tried to. The standards need normal capacity, the output this facility would expect on average over several years. The paper gives a maximum. Those are different numbers, and a maximum is the one divisor we can be confident is not the right one, because no facility runs at its ceiling on average.
The paper does not say what the average would be, so neither will we. The honest position is that the engineering specification does not contain the accounting denominator, and anyone who tells you otherwise has quietly picked one. That is not a gap in this article. It is the most useful thing in it, because the same gap is sitting in your own costing right now.
What the table does show, and what no choice of divisor changes, is that the cost of a low-volume product is mostly a statement about the calendar rather than about the product.
What it is not
It is tempting to assume the expensive part of a gene therapy is the clever part, the engineered proteins and the custom genetic material. We went looking and could not find it. No peer-reviewed paper, regulatory document or company filing we reached publishes a per-dose cost for those ingredients, for this product or any other. We are telling you that rather than estimating.
🔴 A caution about the model, which cuts against us. That process delivers its genetic change with a viral vector, and the approved sickle cell therapy does not; it uses an electrical pulse. The vector is a substantial part of the model's variable cost, so a process without one would have a lower variable cost and therefore a larger swing between low and high output. The factor of 8 should be read as a floor. We are not putting a number on that, because the paper's line-item table sits behind a paywall we could not reach, and an earlier draft of this post quoted a figure from it that we could not verify at source.
🔴 A second caution, also against us. The vector is bought in batches, not per dose, so a year making one dose still buys a whole batch. Treating it as a smooth per-unit cost understates what a low-output year really spends, which again makes the volume effect larger than the table shows. A step cost dressed as a variable cost is its own small lesson about divisors.
Which line dominates is itself model-dependent, and we are not going to put a range on that either: the cross-study comparison we drafted here cited no source we could produce, so it is gone.
Now your workshop, where we can state the divisor
The following numbers are invented, deliberately round, and not any client's. We can demonstrate the rule here precisely because we are the ones setting normal capacity, which is the thing the published model could not give us.
A shop carries $600,000 a year of fixed production overhead: depreciation on the factory and its two machines, the production supervisor, plant insurance and maintenance. (The audit fee, the accounting software and the sales team are not in there. IAS 2 excludes selling costs, and administrative overheads that do not help bring inventory to its present location and condition, which those three do not. Note the qualifier: factory management and administration are production overhead and do belong.)
Normal capacity, meaning what this shop expects to make in an average year, is 1,000 units. So the absorption rate is $600 a unit. The year comes in at 400: demand softened, a machine was down for a month, two jobs slipped into January.
The units still carry $600 each. The rate does not rise. Only $240,000 of overhead reaches the units, and the remaining $360,000 is expensed in the period as the cost of capacity nobody used. The tempting figure, $1,500 a unit, is the one the standards do not allow you to put in inventory.
That holds while 400 is an abnormal year. The standards also require the estimate to be reviewed and revised in the light of current conditions, so if 400 is simply what this business is now, then normal capacity was misjudged and must come down, at which point $1,500 becomes the correct rate. The judgement is not a one-time setting. It is the thing that has to be revisited, and the thing an auditor will ask about.
The statutory accounts are fine. Gross margin for the year is correct in total, precisely because the $360,000 was expensed. What goes wrong is product-level and customer-level margin, because those reports are built from the standard cost, and the standard carries no hint that the factory ran at 40% of its normal volume. The business is under-recovering its fixed cost across the year, and nothing in the product report says so.
The obvious correction, re-spreading the whole $600,000 across the 400 units you really made, is a worse mistake than the one it fixes. It loads the most overhead onto your lowest-volume products, makes them look like losers, and invites you to drop them. Dropping them does not remove the fixed cost. It re-spreads onto the survivors, whose costs then rise, and the cycle repeats. Management accountants call this the death spiral, and it is why the teaching literature says to divide by a capacity figure rather than by last year's output, and to report the cost of unused capacity as its own line where it is visible and somebody owns it.
What your system will and will not tell you
🔴 Two earlier drafts of this post got this wrong in opposite directions, so here it is carefully. Check your own instance rather than trusting any article, including this one.
ERPNext's long-standing stock valuation methods are FIFO, Moving Average and LIFO. On the instance we run, those are the only options offered, there is no standard-cost valuation and no variance doctype. Frappe's current documentation, however, describes a Standard Cost valuation method, an Item Standard Cost record holding a rate with an effective date, a Purchase Price Variance account and a Manufacturing Variance account. We could not establish which versions ship it, and ours does not. So this is version-dependent and you have to look.
Overhead can reach a unit by three routes, and we checked all three on our own instance rather than from memory: an operating cost on the bill of materials, an hourly rate on a routing, and the Additional Costs table on a stock entry, whose rows carry their own expense account and an operating-cost flag. More to the point, the clearing account exists: Company has a field called Default Operating Cost Account, under Manufacturing, and manufacturing entries credit it. An earlier draft of this post told readers they would have to build that. They do not.
Here is what is actually missing, and it is narrower and more useful than what we said before. There is no normal-capacity setting anywhere in the product, no volume variance, and no period-end routine that splits the residual. Every one of those three routes absorbs overhead at a rate times the units actually produced. Make 400 instead of 1,000 and the system absorbs 400 times the rate and stops. So the operating cost account does accumulate a residual against the real overhead posted elsewhere, and that residual is your under-absorption, but nothing computes it, nothing reports it, and nothing makes anyone choose the normal-capacity divisor in the first place.
That is not a criticism of ERPNext, which is doing something defensible and simple. It is the shape of the work: the posting is already there, and what has to be added is a capacity figure somebody owns, a report that compares absorbed against incurred, and a period-end decision about what to do with the difference. The deciding is the hard part. The plumbing mostly exists.
Three questions are worth asking of any system:
- What volume is the standard built on, and who chose it? Not last year's actual, and not the machine's ceiling. The output the plant expects in an average year. If nobody can tell you who decided and when, that is your answer.
- How much of last year's production overhead actually reached a unit? If your implementation posts to an absorption clearing account, that is a balance you can read. If it does not, which is the common case, it is a reconciliation of the overhead pool against what production absorbed. That is a short piece of work, not an afternoon.
- Which products still look bad on contribution, less the fixed cost you would actually avoid by dropping them? Contribution is price less variable cost, which does not move when volume does. A positive-contribution line is usually paying something towards the factory, so cutting it can make the rest worse. But not always: if a line carries its own tooling, supervision or changeover cost that would genuinely disappear, subtract that first. And when a machine or a person is the binding constraint, rank on contribution per hour of the constraint rather than per unit, because the scarce thing is the hour.
This is the same shape as the argument in our post on what CRISPR teaches about editing behaviour you did not write: the fix is almost never at the place that looks broken. It is also a companion to why a used textbook costs six dollars, which asks what a different price is measuring.
The trap at the bottom of all this
If low volume is what makes the cure expensive, treat more people. Here the arithmetic turns on itself. Analysing a placeholder price of $2 million, before either real price was known, ICER found that about 15.5% of the patients its model assumed would start treatment each year, 388 people, could be treated over five years before the budget impact crossed its $777 million annual threshold. Read the denominator carefully, because it is flattering: those assumed starters are themselves a fifth of the eligible population, so against everyone eligible the figure is nearer 3%. The price limits the volume, and the volume sets the price.
And filling the machine does not close the gap for most of the world. A 2026 analysis in Blood found a nonmyeloablative haploidentical transplant more cost-effective than gene therapy in 100% of 10,000 simulations, and put the maximum cost-effective price for gene therapy at $627,000 to $740,000 against that transplant comparator, a two-thirds cut from today's price, and between $4,200 and $22,000 across India, Nigeria and Tanzania depending on willingness to pay. Against those lower thresholds, even the modelled cost at the machine's maximum, $78,849, is several times too high, and that figure excludes research, regulation and everything else a commercial product carries. No amount of filling a machine that makes 18 a year reaches them. That takes a different process.
Which is the last thing absorption costing teaches, and the one that transfers. When the arithmetic says your unit cost is a volume problem, the answer is more volume or a different process. It is never a better spreadsheet.
What this does not establish
The cost model is from an academic, non-profit, European study. It excludes research and development, regulatory affairs, intellectual property and return on investment, and its authors state that their results "cannot be generalized to the commercial setting". It is not the cost of goods for any approved therapy, and we have deliberately not used it to assert one. Vertex does not disclose a per-product cost of sales for Casgevy.
The negative gross margin at the top is a reported figure, and the inventory reserve inside it is disclosed in the same filing. Those figures are portfolio-wide across three products at three list prices, and that company's products use a viral vector rather than the CRISPR editing used by the $2.2 million therapy. It was in financial distress and has since been taken private. It is an illustration of the arithmetic, not a measurement of a competitor.
The workshop is invented. The three questions are a method, not a promise about what you will find. And the central admission of this piece is the one in the box above: for the published model, we do not know what normal capacity is, and we have not pretended to.
Where to start
Most businesses meet under-absorbed overhead the way most people meet a slow leak, which is after the damage. The questions above are answerable from data an existing system already holds, once somebody decides what normal capacity actually is, and that decision is usually the hard part rather than the arithmetic.
If you only do one of them, do the first. Find out what output your standard cost is built on, and who chose it. In a great many businesses the honest answer is that nobody remembers, and nobody has revisited it since the year the machine was bought. That, on its own, is the finding. Everything else in this post is about what to do once you know.
Questions people ask
What is absorption costing in simple terms?
It is the rule that each unit you make carries a share of the fixed production overhead, the factory and the machines and the production supervisor, as well as its own materials and labour. The share is set by a rate, and the rate is calculated on normal capacity, meaning the output the plant expects to achieve on average over several periods after allowing for planned maintenance. It is not calculated on whatever you happened to make that year, which is the common misunderstanding, and it is not the machine's maximum either.
Does unit cost go up when production falls?
The amount a business spends per unit it made goes up, but the inventory cost does not. IAS 2 states that the fixed overhead charged to each unit is not increased as a consequence of low production or idle plant, and that unallocated overhead is recognised as an expense of the period. The inventory guidance in US GAAP, at ASC 330, converged on the same approach, and asks you to judge the production abnormally low before applying it. Two carve-outs are worth knowing: the actual rate may be used when it approximates normal capacity, and in an abnormally high year the per-unit charge is reduced so inventory is not measured above cost. So a quiet year produces a period expense for unused capacity rather than more expensive inventory.
What is normal capacity, and how do I work mine out?
Normal capacity is the output a facility expects to achieve on average over several periods under normal conditions, after allowing for planned maintenance. It is deliberately not the maximum the plant could run at, and not last year's actual output either. Working it out is a judgement somebody has to make and record, which is why the useful question about any costing system is not what the number is but who chose it and when.
What is under-absorbed overhead?
It is the production overhead that did not reach any unit because output fell below the volume the absorption rate was set on. If the rate assumes a thousand units and you make four hundred, six hundred units' worth of overhead has nowhere to go. Under the standards it is expensed in the period rather than carried in inventory. It is the cost of capacity you paid for and did not use.
What is the difference between absorption costing and variable costing?
Absorption costing puts fixed production overhead into the cost of each unit, so some of it sits in inventory until the unit is sold. Variable costing treats fixed overhead as a cost of the period, so unit cost contains only materials and variable labour. Inventory measured on a variable costing basis does not comply with the external reporting standards, though plenty of businesses run it internally and convert at period end. The two methods report different profit only when the fixed overhead sitting in inventory changes, which usually means inventory levels changed at the same rate. If you sell everything you make, they agree.
Does ERPNext calculate overhead absorption?
Not in the sense a management accountant means. ERPNext has no normal-capacity setting and no overhead volume variance. Its long-standing stock valuation methods are FIFO, Moving Average and LIFO; current Frappe documentation also describes a Standard Cost valuation method with variance accounts, which appears to be version-dependent and was not present on the instance we checked, so look at yours. Either way those variances compare prices and input values rather than overhead absorption. Overhead reaches a unit through a bill of materials operating cost, a routing hour rate or the additional costs table on a stock entry, and a Default Operating Cost Account on the Company record does collect the credit, so a residual against real overhead does accumulate there. What is missing is the capacity denominator, the report that compares absorbed against incurred, and the period-end routine that decides what to do with the difference.
Sources
- IFRS Foundation. IAS 2 Inventories, on allocating fixed production overhead at normal capacity, on not increasing the per-unit charge in a low production period, and on excluding administrative and selling costs from inventory. https://www.ifrs.org/issued-standards/list-of-standards/ias-2-inventories/
- The CPA Journal. The Impact of COVID-19 on Sales and Production, 27 April 2021, applying the US inventory guidance to abnormally low production, with a worked example of expensing underapplied fixed overhead. https://www.cpajournal.com/2021/04/27/the-impact-of-covid-19-on-sales-and-production/
- MIT Sloan School of Management. 15.963 Management Accounting and Control, Spring 2007, lecture 11, on capacity denominators, separating the cost of excess capacity, and the death spiral. https://ocw.mit.edu/courses/15-963-management-accounting-and-control-spring-2007/
- Ran, T., Eichmuller, S. B., Schmidt, P. and Schlander, M. (2020). Cost of decentralized CAR T-cell production in an academic nonprofit setting. International Journal of Cancer 147, 3438 to 3445. https://pubmed.ncbi.nlm.nih.gov/32535920/
- bluebird bio, Inc. Annual Report on Form 10-K for the year ended 31 December 2024, filed 27 March 2025. Product revenue, cost of product revenue, and the accounting policy placing reserves for excess inventories inside cost of product revenue. https://www.sec.gov/Archives/edgar/data/1293971/000129397125000009/blue-20241231.htm
- bluebird bio, Inc. Quarterly Report on Form 10-Q for the quarter ended 31 March 2025, for the fall in cost of product revenue attributed to less costs related to excess manufacturing capacity. https://www.sec.gov/Archives/edgar/data/1293971/000129397125000014/blue-20250331.htm
- Frappe. ERPNext documentation: standard valuation rate and variance accounts. https://docs.frappe.io/erpnext/standard-valuation-rate
- Frappe. ERPNext documentation: bill of materials operating cost. https://docs.frappe.io/erpnext/bill-of-materials
- U.S. Food and Drug Administration. FDA Approves First Gene Therapies to Treat Patients with Sickle Cell Disease. News release, 8 December 2023. https://www.fda.gov/news-events/press-announcements/fda-approves-first-gene-therapies-treat-patients-sickle-cell-disease
- Institute for Clinical and Economic Review. Gene Therapies for Sickle Cell Disease, final evidence report, 21 August 2023. The placeholder price and the budget impact threshold. https://icer.org/wp-content/uploads/2023/08/ICER_SCD_Final_Report_FOR_PUBLICATION_082123_12MonthCheckUp.pdf
- Chetlapalli, K. et al. (2026). Blood 148(7), 896 to 909. The Monte Carlo result and the maximum cost-effective thresholds. https://pubmed.ncbi.nlm.nih.gov/42227898/
- Highland Willow. CRISPR and Cas9: editing behaviour you did not write, 2 November 2026. https://www.highlandwillow.com/journal/crispr-and-editing-behaviour