Cannabis COGS: Where Manufacturers Lose Margin They Can't See
In short If you make product and sell it in your own stores, your POS calculates house-brand margin from a cost someone typed in. The real cannabis COGS for that unit is spread across Metrc, manufacturing records, payroll and accounting. Join those systems and you get a true seed-to-sale cost per unit, and a four-wall view of every store built on it.
The least reliable number in your business is the margin your stores report on the products you make.
Your POS calculates margin from a cost field. For a third-party brand, that field holds the invoice price, and the margin is right. For your own products, it holds whatever was entered when the SKU was set up: a transfer price, a standard cost from a launch spreadsheet, sometimes a placeholder. In Dutchie, for example, the cost on a product’s catalog record becomes the default cost per unit each time the product is received. Nothing updates it when hardware gets more expensive, an extraction run comes in short, or a batch fails testing.
So the stores that sell the most house product look like your best stores. Some of them are your worst.
This post follows one unit from the grow room to the register, names the system that holds each piece of its cost, and shows what happens to a store ranking when real cannabis COGS replaces the typed number. The spine is one metric: seed-to-sale COGS per unit.
What cannabis COGS includes, from seed to sale
Cannabis cost of goods sold is the cost of making or buying the product you sold, and what counts depends on your license. A retailer capitalizes what it paid for product and the cost of getting it to the store. A producer using full absorption adds direct labor and a defined set of indirect production costs: supervision, production-space rent and utilities, equipment repairs and depreciation, supplies, and quality control.
A vertically integrated operator is both, so the true cost of a house-brand unit is everything the company spent to make it and get it to the shelf:
Seed-to-sale COGS per unit = cannabis input + production labor + non-cannabis inputs + allocated overhead + testing, losses and transport
Roll that up to a store and you get four-wall EBITDA, the number retail and restaurant operators use to judge each location on the costs it controls, before corporate overhead:
Four-wall EBITDA = net sales − seed-to-sale COGS − store labor − rent, utilities and other store costs
Budtender hours sit outside COGS on purpose. They’re a real cost of running a store, not of making the product, and a retailer can’t capitalize them.
If you only sell wholesale, the store half of this post belongs to your customers. The unit cost half is still yours, because it’s the floor under every price you quote.
Where cannabis COGS goes missing
Each piece of that formula lives in a different system:
- Metrc knows which harvest became which package and which package each sale came from. It records waste and failed tests. It holds no dollars.
- Manufacturing records hold recipes, yields, production runs and the hardware lots each run consumed.
- Payroll knows who worked Tuesday, but not which batch they worked on unless someone coded the time.
- Accounting holds the invoices for hardware, packaging and ingredients, plus rent, utilities, depreciation and testing fees. It has the dollars and none of the batches.
- The POS holds realized price after discounts, units by store, and the cost field.
Seed-to-sale COGS needs all five. The POS cost field was built from none of them.
The split shows up in real numbers. In one manufacturer’s live cannahub view (figures anonymized), a vape cost $10.27 to make before overhead: 51% biomass, 20% labor from payroll, and 29% hardware and packaging from vendor invoices. Half of what that vape cost to make never appeared in Metrc.
Four kinds of cannabis manufacturing costs fall through the gaps.
Non-cannabis inputs Metrc can’t price
Metrc may record that terpenes went into a batch. It has no price for them, or for the cartridge, the jar, the child-resistant bag or the label. Nearly all vape hardware is made in China, so the 2025 tariff increases reached manufacturers as a new line on a vendor invoice. That invoice went to accounting, not to the POS cost field. And if those inputs are booked to supplies expense instead of inventory, they fall out of COGS, which for an adult-use operator under 280E means they aren’t deductible.
Labor that isn’t tied to a batch
Without time coded to a production run, extraction and packing labor lands in a wage account and the unit cost carries none of it. We walked through that batch by batch in our post on Metrc reporting software.
Batches you destroyed and yield you didn’t get
Metrc records the failed test. The oil, hardware and hours in that batch were still spent. At your normal failure rate, the batches you destroy are part of the cost of the batches you sell, and so is the yield you planned and didn’t get.
The transfer price between your own licenses
When your production entity transfers product to your retail entity, somebody sets a price. Between separate entities, that price has to hold up as arm’s length under Section 482, which makes it your CPA’s decision. It moves margin between your companies. It doesn’t measure what a unit cost to make, and nothing forces it to change when that cost does.
Why cannabis COGS weighs more on vertically integrated operators
Vertical integration is common, and sometimes required. Florida’s medical program requires license holders to cultivate, process and dispense, a rule the Florida Supreme Court upheld in 2021. When the supplier and the store are the same company, nobody outside it checks the price between them.
House brands concentrate the error. A store’s overstatement equals its house-brand sales times the gap between the margin the POS reports and the margin the product earns. At 15% house product, a store barely moves. At 60%, it can look like your best location while earning the least.
Under 280E, a missing cost costs you twice: once in a margin you can’t see, and again on the return, because COGS is the deduction adult-use operators keep. The April 2026 order moved state-licensed medical marijuana to Schedule III, and Treasury said 280E is “generally expected to no longer bar” deductions for businesses whose activities no longer involve Schedule I or II substances. Adult-use stayed in Schedule I, and as of mid-September 2026, Treasury still hadn’t issued guidance on how hybrid operators should split their costs. This is general information, not tax advice. Confirm your position with your cannabis CPA.
The fix: join the five systems instead of replacing them
The usual answer is one system that does everything. That’s a multi-year migration, and cannabis operators don’t get to pick one stack: the state picks your traceability system, and every acquisition brings its own POS.
That’s the problem cannahub was built for. It’s a centralized data warehouse for cannabis operators that pulls Metrc, POS, payroll, accounting and manufacturing data into one place, models it so the fields agree, and serves reports and dashboards on top. Your systems of record stay where they are.
For cannabis COGS specifically:
- Metrc becomes the spine. Sales are reported against package tags, and each package traces back to a harvest, so a cost from payroll or a vendor invoice can attach to the unit that sold.
- Non-cannabis inputs land with the batch. When hardware gets more expensive, the unit cost moves the same month.
- Labor lands where it belongs. Production hours go into unit cost. Store hours go into the four-wall view.
- Fully burdened cost per gram, per batch and per SKU, traceable to the transfer and the invoice behind it.
- Four-wall EBITDA by store, with house brands carried at what they cost to make.
- Your data, your tools. Power BI, SQL, OData or Excel on our license, priced per system and connector, not per user.
The initial sync takes 48 hours, with first reports by week three. The point is replacing a number someone typed with one your data produces.
What it looks like: one vape, three stores
Start with one unit, a house-brand 1g all-in-one vape.
The POS has carried this SKU at $9.60 since launch: oil, hardware and packaging at launch prices, with no labor, overhead, testing or failed batches, and a hardware price that predates the 2025 tariffs. On a $26.00 realized price, the POS reports a 63% margin. The unit earns 43%.
Twenty points on one SKU is a pricing problem. Across a store’s house line, it changes which stores look good.
On the POS cost, Store A is your best store, with the most EBITDA and the highest margin. Its manager gets the bonus and the next remodel budget. On seed-to-sale cost it’s the worst of the three, because 60% of its sales are house product: $50,232 a month that production paid for and the store report never saw. Store C sells 85% third-party product, whose POS cost is an invoice, so it barely moves and goes from last to first.
The fair objection is that a store should pay a market price for house product, like it would for any brand. For judging a store manager, that’s reasonable, if the transfer price is a real market price someone keeps current. For deciding whether a product or a store makes money from seed to sale, you need the cost. The POS cost field gives you neither.
The $50,232 isn’t lost profit, either. Production absorbed it, so consolidated EBITDA is identical in both views. What changes is which store, which SKU and which manager looks like they earned it, and every capital decision runs on that attribution.
The same number at each altitude
If you’re the owner, CFO or controller, seed-to-sale COGS tells you which products to keep making, where the floor is on a wholesale price, and which store gets the next dollar of capital. It’s also what your 280E position rests on and what a buyer will ask you to reproduce in diligence.
If you run the plant or a store, it answers the same question on a shorter clock: which SKU got more expensive this month and why, and which store earns its keep after labor and rent.
Same number, different altitude. Compute it once, correctly, for everyone.
Frequently asked questions
Producers using full absorption include direct materials, direct labor and indirect production costs such as supervision, production-space rent and utilities, equipment depreciation, supplies and quality control. Retailers are limited to what they paid for product plus the cost of getting it to the store. Confirm the specifics with your cannabis CPA.
Add every cost of a production run, from the cannabis input through labor, hardware, packaging, allocated overhead and testing, then divide by the units that passed and were packaged. At your normal failure rate, losses belong in the total. The math is simple. Pulling the costs out of five systems is the hard part.
For a producer, a cost belongs in inventory when it’s incurred to make the product, and a cartridge or a compliant package qualifies. Booked to supplies expense instead, it falls out of COGS, and for adult-use activity under 280E, out of your deductions. Confirm the treatment with your CPA.
It’s store-level profit before corporate overhead: net sales minus cost of goods sold, store labor, rent, utilities and other costs the store controls. For a vertically integrated operator, it’s only as accurate as the cost used for house brands.
Both, for different questions. A current, market-based transfer price is fair for judging a store manager. Seed-to-sale cost tells you whether a product or a store makes money for the company. A transfer price set for tax purposes belongs to your CPA and shouldn’t drive either decision.
The POS calculates margin from a cost entered at receiving. The P&L records what you spent. For third-party products the two tend to agree. For house brands, the gap between the POS cost and the real cost of production sits in the plant’s books, where the POS never looks.
The takeaway
Manufacturers don’t lose margin in one place. They lose it in five, a few dollars at a time: a hardware invoice that never reached the unit cost, extraction hours sitting in a wage account, a failed batch written off to expense, a transfer price nobody revisited, and a POS that reports all of it as profit at the store selling the most house product.
None of those costs is invisible. Each one sits in a system you already pay for. Join them, and cannabis COGS becomes a number you can price, staff and invest against.
Going deeper on the compliance side? Read Metrc reporting software: compliance without the spreadsheet tax.


