Why cost isolation is the whole game
In a normal business, misclassifying a cost between an expense account and an inventory account is a presentation issue that washes out over time. In a cannabis business operating under Section 280E, it is the difference between recovering a dollar and never recovering it. A dollar that belongs in inventory and is coded to overhead is a dollar of permanent federal tax leakage at the operator's marginal rate. Multiply that across a cultivation payroll and the annual cost of sloppy coding routinely exceeds the entire accounting budget.
Cost isolation means that the classification decision is made once, at the transaction, by the person who has the facts — not at year end by a preparer reading a vendor name. Every invoice, timecard, purchase order and journal entry carries the functional coding at the moment it enters the system. That requires three things: a chart of accounts that has a place for every real cost, a coding policy short enough that a warehouse manager will actually follow it, and a review step that catches drift before the period closes.
The standard to hold yourself to is reconstruction independence. If the operator, the bookkeeper and the controller all disappeared, could a competent third party rebuild the cost of a specific harvest batch or extraction run from the records alone? If yes, the numbers will hold in examination, in diligence and in front of a lender. If no, the numbers are an assertion.
Section 471-11 and inventoriable cost for licensed producers
Treasury Regulation Section 1.471-11 governs inventory costing for producers using the full absorption method. It divides production cost into direct production costs and indirect production costs, and it sorts indirect costs into three categories: costs that must be included in inventory, costs that need not be included, and costs whose treatment follows the taxpayer's financial statements. For a licensed Oregon producer or processor, this regulation is the single most valuable page of tax law in existence, because everything properly absorbed into inventory under it becomes cost of goods sold when the product sells — outside the reach of Section 280E.
Direct production costs include raw materials and direct labor: for a cultivator, clones and seeds, growing media, nutrients, pest management inputs, and the wages of the people whose hands are on the plants. For a processor, direct cost includes purchased biomass, solvents, distillation inputs, cartridges and hardware consumed in the finished unit, and the wages of extraction technicians and packaging staff.
Category one indirect costs must be capitalized: repair and maintenance of production facilities and equipment, utilities consumed in production, rent of production facilities and equipment, indirect labor and production supervisory wages including basic compensation and overtime, indirect materials and supplies, tools and equipment not capitalized, quality control and inspection, taxes attributable to production assets, and depreciation on production assets to the extent reported for financial purposes. Category three costs — including certain administrative, officer compensation and insurance costs — follow the treatment used in the taxpayer's own financial statements, which is precisely why the financial statements and the tax return must be built on the same costing model rather than reconciled after the fact.
Two disciplines make this real. First, an allocation basis for every shared input: square footage for facility cost, metered or sub-metered consumption for utilities where available and documented engineering estimates where not, direct labor hours or machine hours for supervisory and equipment cost. Second, absorption at the batch level rather than the period level. Cost pooled monthly and spread across everything produced is defensible; cost pooled monthly and dumped into a single average that ignores yield differences between batches is not, and it destroys your ability to see which rooms and which cultivars actually make money.
- Direct materials and direct production labor traced to the batch
- Category one indirect costs capitalized without exception — production utilities, rent, repairs, indirect labor, QC, depreciation
- Category three costs treated consistently with the financial statements
- A written allocation basis for every shared input, applied consistently and refreshed on build-out changes
The general ledger code structure
A cannabis chart of accounts fails when it is organized by vendor type instead of by function. The structure below organizes by where cost belongs in the inventory model, which means the trial balance itself becomes the costing schedule. Use a segmented code — account, then license or entity, then location, then department or room — so a single ledger supports both consolidated reporting and batch costing.
Reserve a distinct account range for each production function rather than relying on class or department tagging alone. Tagging is lost in exports, mis-keyed by temporary staff, and invisible in most lender-facing reports. An account number is not.
- 5000–5099 Direct materials — clones, seeds, growing media, nutrients, pest management inputs
- 5100–5199 Cultivation manufacturing labor — propagation, plant care, defoliation, harvest, trimming wages and payroll taxes
- 5200–5299 Raw biomass and packaging inputs — purchased biomass, jars, bags, cartridges, closures, compliant labels, child-resistant packaging
- 5300–5399 Extraction and processing labor — extraction technicians, post-processing, filling and packaging crew
- 5400–5499 Extraction facility utilities and consumables — solvents, gases, filtration media, sub-metered power, water, HVAC and dehumidification attributable to the extraction suite
- 5500–5599 Production facility cost — production rent, production repairs and maintenance, production insurance, production property taxes
- 5600–5699 Production supervision and quality — cultivation and production managers, in-house QC, compliance testing fees, sampling cost
- 5700–5799 Production depreciation — lights, benches, HVAC, extraction equipment, packaging lines
- 5800–5899 Inventory adjustments — shrink, waste destruction, moisture loss, reconciliation variances, lower-of-cost-or-market
- 6000+ Non-production operating expense — retail labor, delivery, marketing, general administration, non-production rent (disallowed federally, restored via the Oregon 280E subtraction)
Separating cultivation labor, packaging inputs and extraction utilities
Cultivation manufacturing labor is the largest single misclassification in Oregon cultivation accounting. The fix is timekeeping, not journal entries. Every production employee clocks into a task code — propagation, transplant, plant care, harvest, dry and cure, trim — and those task codes map directly to the 5100 range. Supervisors split time between direct supervision and general administration, and the split comes from the timeclock, not from a percentage the controller remembers. Payroll exports post by task code, so the wage, employer payroll taxes and benefit loading land in the same account as the hour.
Raw biomass and packaging inputs are conceptually simple and operationally leaky. Packaging that becomes part of the sold unit is inventoriable; marketing collateral, exit bags at retail and promotional items are not. The purchasing system should require a product-versus-non-product flag at the purchase order, because the invoice alone will never tell you which pallet of bags went to the packaging line and which went to the sales floor. Count packaging in the physical inventory. Unlabeled and obsolete packaging held for discontinued SKUs is a real write-off, and it needs to be identified rather than carried indefinitely at cost.
Extraction facility utilities are where the largest defensible dollars usually sit and where the weakest documentation usually lives. Sub-meter the extraction suite if the build permits it; the meter pays for itself in the first year of support for the allocation. Where sub-metering is impossible, build an engineering allocation from connected load: list equipment, nameplate draw, and documented run hours, compute the extraction share of total facility consumption, and refresh the study annually or whenever equipment changes. Attach the study to the workpapers. An allocation percentage with a study behind it is a position; the same percentage without one is a guess.
- Task-code timekeeping so labor classification originates at the timeclock
- Product-versus-non-product flag captured at the purchase order for all packaging
- Sub-metering or a documented connected-load study for extraction utilities
- Annual refresh of every allocation study, with the prior version retained
The 10-to-15 day end-of-period close checklist
The close is a scheduled sequence with owners and dates, not a state of mind. The schedule below assumes a fifteen-business-day target and is aligned to OLCC recordkeeping and disclosure expectations — licensees must maintain complete and accurate financial and inventory records and produce them on request, so every step below ends in a saved reconciliation with a preparer, a reviewer and a date.
- Day 1 — Cutoff: close the point-of-sale period, lock the prior period in the accounting system, confirm no Metrc activity is dated into the closed period
- Day 2 — Cash: reconcile every bank account, armored transport manifests, vault counts and till-over-short by location
- Day 3 — Revenue: reconcile point-of-sale gross sales, discounts, refunds, exempt patient sales and tax collected to the deposit and to the sales subledger
- Day 4 — Tax liabilities: roll forward the 17% state marijuana tax payable and the local option tax payable by location; confirm collected equals accrued
- Day 5 — Accounts payable: match vendor statements, accrue received-not-invoiced production inputs, verify functional coding on every production invoice
- Day 6 — Payroll: post the final payroll accrual through period end and verify task-code allocation between production and non-production accounts
- Day 7 — Physical inventory: complete cycle counts of finished goods, work in process, raw biomass and packaging; document counters and count sheets
- Day 8 — Metrc extraction: pull package, transfer, adjustment, waste and conversion reports for the full period
- Day 9 — Track-and-trace reconciliation: tie physical weights and unit counts to Metrc and to the inventory subledger; document every variance
- Day 10 — Costing: run the batch absorption schedule, apply overhead pools, value ending inventory and compute cost of goods sold from the schedule rather than a plug
- Day 11 — Shrink and waste: post moisture loss, destruction and yield variance to the 5800 range with supporting Metrc waste event references
- Day 12 — Accruals and fixed assets: depreciation, prepaid amortization, interest, CAT accrual, and additions or disposals with placed-in-service dates
- Day 13 — Intercompany and equity: eliminate intercompany balances across entities, confirm distributions and contributions, agree equity roll-forward
- Day 14 — Review: independent reviewer signs the reconciliation binder, flux analysis against prior period and budget, exception list resolved or documented
- Day 15 — Reporting: issue profit and loss, balance sheet, cash flow, margin by license and location, KPI summary and a written variance narrative to ownership; archive the binder
Metrc track-and-trace reconciliation, end to end
Metrc is the state's system of record for what exists. The general ledger is the system of record for what it cost. When those two disagree, the licensee has both a compliance exposure with the OLCC and an inventory valuation exposure on the tax return, and the two are usually discovered together. The reconciliation is monthly, non-negotiable, and takes a trained person a single day once the process is built.
Start from the Metrc side. Export the beginning package inventory, all incoming transfers, all outgoing transfers, all package adjustments, all conversions and repackages, all waste and destruction events, all retail sales deliveries, and the ending package inventory. Convert everything to a common unit of measure. Build a quantity roll-forward by item category: beginning plus received plus produced, less transferred out, less sold, less waste and adjustments, equals ending. Prove that roll-forward foots before you compare it to anything.
Then run the same roll-forward from the inventory subledger and the general ledger in both quantity and dollars. Compare item by item, not in total — offsetting variances in flower and trim will net to nearly zero and hide two real problems. For each variance, classify it: a timing difference where an event was recorded in different periods in the two systems, a unit-of-measure or conversion-factor error, an unrecorded waste or destruction event, a data-entry error on a package tag, a physical count error, or genuine unexplained loss. Only the last category is a compliance concern, and the point of the classification exercise is to shrink that category to something you can defend in a sentence.
Manufacturing and moisture shrink deserve a specific method rather than an apology. Establish an expected yield range for each process — wet-to-dry conversion for harvest, biomass-to-oil for extraction, oil-to-finished-unit for filling — from your own historical data, in writing, with the sample period stated. Record actual yield by batch, compare it to the expected range, and require a documented explanation and supervisor sign-off for any batch outside the range. Post shrink within the range as an inventory cost absorbed into remaining units; post abnormal shrink as a period cost with the batch reference and the explanation attached. A licensee who can produce a yield study, batch-level actuals and exception documentation is having a technical conversation with a regulator or an examiner. A licensee who cannot is having a credibility conversation, and those are far more expensive.
Close the loop with a signed reconciliation summary each month: total Metrc quantity by category, total ledger quantity, the variance, the classification of every variance line, the resulting journal entries, and the preparer and reviewer names and dates. File it with the close binder. That single document is the artifact that satisfies an OLCC records request, supports the inventory balance in a lender's field exam, and anchors the COGS number on the federal return.
- Roll forward quantities in Metrc and in the ledger separately, then compare item by item
- Classify every variance — timing, conversion, unrecorded waste, entry error, count error, unexplained
- Maintain written expected-yield ranges per process, with batch-level actuals and exception sign-off
- Absorb normal shrink into remaining units; expense abnormal shrink with documentation
- Sign and archive a monthly reconciliation summary as part of the close binder
