Guide
Minnesota Cannabis Accounting Guide: 2026 Edition
Transaction-level cost isolation, 471-11 COGS, and a Metrc-reconciled close.
Cannabis accounting fails in predictable ways: a generic chart of accounts that cannot separate an inventoriable cost from a disallowed one, undocumented cash handling, and a perpetual inventory balance that has never once tied to the state track-and-trace system. Each of those failures is survivable on its own. Together they convert an ordinary examination into an assessment.
This is the framework we install for Minnesota licensees. It covers transaction-level cost isolation, cost of goods sold optimization under Treasury Regulation Section 1.471-11, the specific general ledger coding required to separate cultivation and manufacturing labor from raw biomass and packaging inputs and extraction facility utilities, a 10-to-15 day end-of-period close checklist aligned to Minnesota Office of Cannabis Management disclosure expectations, and a complete Metrc reconciliation procedure for tying physical warehouse weights to the state-mandated seed-to-sale database.
It is written so a competent internal bookkeeper can execute it and so a specialist can review the output without reconstructing it first.
Transaction-level cost isolation: the governing principle
Every dollar a cannabis business spends belongs to exactly one of three populations: it is an inventoriable production cost that becomes part of cost of goods sold, it is a period cost disallowed by Section 280E, or it is a capital item. The tax outcome of the entire business is determined by how accurately that sorting happens, and the sorting has to happen at the moment the transaction is recorded. Nothing recoverable is gained by sorting at year end. An expense classified once, at entry, by someone who can see the invoice and the purchase order is a defensible classification. The same expense sorted eleven months later from a bank feed description is an estimate wearing the costume of a record.
Transaction-level isolation means three attributes are captured on every posting: the natural account, the cost center or department, and the entity or license. A wage dollar is not simply payroll. It is direct cultivation labor at the Rochester facility under the cultivator license, or it is retail floor labor at the Minneapolis store under the retail license, and those two dollars have opposite tax outcomes. A ledger that cannot express that difference at posting cannot produce a defensible return.
This is also the point at which most operators discover their point-of-sale and seed-to-sale integrations are working against them. An integration that pushes thousands of transaction-level lines into the general ledger produces a ledger that no human can review and no examiner can navigate. The correct configuration pushes summarized journals by day, by location and by category, with the transaction-level detail retained in the source system and available on request. Reviewability is a control, not a convenience.
- Capture natural account, cost center and license on every posting, without exception
- Classify at entry from source documents, never from a bank feed description at year end
- Push summarized daily journals from POS and seed-to-sale; keep line detail in the source system
- Require a purchase order reference on every inventory-related invoice before it posts
- Prohibit any general ledger account that could hold both an inventoriable and a disallowed cost
COGS optimization under Treasury Regulation 1.471-11
Section 471 and its regulations govern what a producer may include in inventory, and Regulation 1.471-11 is the full absorption costing rule for manufacturers. It matters enormously here because the broader uniform capitalization rules of Section 263A are generally unavailable to a business whose deductions are disallowed under 280E — a taxpayer cannot capitalize into inventory an amount that is not otherwise allowable as a deduction. That leaves 1.471-11 as the operative framework for a licensed cultivator, manufacturer or extractor, and it makes the producer versus reseller distinction the single highest-value structural decision in cannabis accounting.
Under 1.471-11 a producer must include direct production costs in inventory: direct material and direct labor. It must also include the category of indirect production costs the regulation designates as required, which covers repairs to production equipment, maintenance, utilities attributable to production facilities, 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, and costs of quality control and inspection. A further category of indirect costs is includible or excludible depending on the taxpayer's financial statement treatment, which is why the tax method and the book method must be reconciled deliberately rather than allowed to drift.
Optimization here does not mean aggression. It means completeness. The most common and most expensive error we correct is a producer that has left required indirect costs sitting in period expense where 280E kills them, when the regulation actually requires those costs to be inventoried. Production facility utilities, quality control salaries, maintenance on extraction equipment, production supervision — these are frequently classified as overhead and expensed by a bookkeeper following ordinary commercial instinct. In this industry that instinct is a tax error in the government's favor, and it is fully correctable prospectively through disciplined coding.
The second structural issue is the retailer. A pure reseller is limited to the acquisition cost of the product plus transportation and other necessary acquisition charges. Retail floor rent, budtender wages and store utilities are not inventoriable for a reseller and are disallowed. This is why vertically integrated Minnesota operators need entity-level and cost-center-level clarity: production activity conducted by a producer entity absorbs a far broader cost set than the same activity buried inside a retail entity's ledger.
Every method position must be written down. A cost accounting memorandum stating the inventory method, each cost pool, the allocation base for each pool and the authority relied upon, updated annually and signed, is the document that converts a methodology from opinion into a supportable position. Absent that memorandum, an examiner is entitled to conclude the allocations were derived to reach a result.
- Determine producer versus reseller status per entity and per activity; it drives the entire cost set
- Inventory all required indirect production costs under 1.471-11, including production utilities and QC
- Reconcile the tax inventory method to the book method and document every difference
- Maintain a signed annual cost accounting memorandum stating pools, bases and authority
- Recompute standard costs and allocation rates at least annually against actual results
General ledger codes for cultivation, manufacturing and extraction
The chart of accounts is the tax position expressed as structure. If capitalizable and non-capitalizable costs can land in the same account, year-end becomes reconstruction rather than reporting. The coding scheme below is the one we install; the specific numbers matter less than the discipline of never letting two tax outcomes share an account.
Reserve a block for inventory assets and never post an expense into it. Reserve a separate block for production cost pools that clear to inventory each period. Reserve a third block for period costs that are disallowed, and a fourth for the small population of costs that are neither. Then layer cost centers so that the same natural account can be reported by facility, and layer license or entity so that a vertically integrated group can produce a standalone view for each licensed activity.
- 1300-1349 Inventory assets: raw biomass, work in process by stage, finished goods, packaging materials
- 1350-1369 Inventory reserves and shrink allowances, held separately from the gross asset accounts
- 5000-5099 Direct material: raw biomass purchases, clones and seed stock, nutrients, growing media, solvents and extraction consumables
- 5100-5149 Direct production labor: cultivation labor, trimming and harvest labor, manufacturing and infusion labor, extraction operator labor
- 5150-5199 Packaging inputs: primary containers, child-resistant closures, labels, tamper-evident seals, secondary and shipping packaging
- 5200-5249 Indirect production labor: production supervision, cultivation management, quality control and inspection wages, production maintenance staff
- 5250-5299 Production facility utilities: cultivation electricity and HVAC load, extraction facility power and gas, water and sewer for grow operations, production waste disposal
- 5300-5349 Production facility occupancy: rent of cultivation and manufacturing space, production equipment leases, facility depreciation attributable to production
- 5350-5399 Production repairs, maintenance, tools, small equipment and production supplies
- 5400-5449 Cost pool clearing accounts: applied overhead, variance accounts, capitalization entries clearing to 1300-series inventory
- 6000-6499 Disallowed period costs under 280E: retail wages, marketing and advertising, delivery, retail occupancy, executive compensation, professional fees
- 6500-6599 Taxes and licenses posted as liabilities where applicable, kept strictly separate from expense accounts
- Cost center segment: each cultivation site, each manufacturing or extraction suite, each retail location, corporate
- License segment: each OCM license held, so any single licensed activity can be reported standalone
The 10-to-15 day end-of-period ledger close checklist
A well-run single-license Minnesota operation closes in ten to twelve business days. Fifteen is the outer bound for a multi-entity vertically integrated group. Longer than fifteen almost always indicates an upstream data problem rather than a bookkeeping speed problem, and the fix belongs in daily procedure rather than in the close.
Order matters. Reconciling inventory before revenue is tied out produces conclusions that change once revenue moves, and every hour spent investigating a variance that a later step would have resolved is wasted. Work the sequence below in order, with a named owner and a sign-off on each day. The checklist is structured to align with Minnesota Office of Cannabis Management disclosure expectations, so that the records supporting a regulatory request are a byproduct of the close rather than a separate project.
- Day 1 — Cash and vault: reconcile every bank account, count and reconcile the vault under dual custody, tie armored carrier manifests to deposits, resolve all in-transit items
- Day 2 — Revenue tie-out: reconcile point-of-sale gross sales to the general ledger by category, location and channel; investigate every void, discount and manual override report
- Day 3 — Tax liabilities: agree cannabis gross receipts tax and state and local sales tax collected at the register to the liability accounts and to the filed or draft returns
- Day 4 — Purchases and accounts payable: match every inventory invoice to its purchase order and receiving document, accrue unvouchered receipts, close the payable subledger
- Day 5 — Payroll and labor coding: post payroll, verify every hour is coded to a production or non-production cost center, reconcile the timekeeping export to the payroll register
- Day 6 — Physical inventory: complete cycle counts or full counts by stage, record weights, capture count sheets with two signatures per location
- Day 7 — Metrc reconciliation: reconcile physical weights and unit counts to the seed-to-sale database package by package, document and code every variance
- Day 8 — Inventory valuation: value raw biomass, work in process by stage, finished goods and packaging; verify no expense account holds an inventoriable cost
- Day 9 — Cost pool allocation: close production cost pools, apply overhead using the documented bases, post capitalization entries and clear variance accounts
- Day 10 — COGS recognition: recognize cost of goods sold against units actually sold, roll forward the inventory schedule, prove the roll-forward arithmetically
- Day 11 — Accruals and prepaids: accrue rent, license fees, insurance, professional fees, interest and utilities; amortize prepaids; post depreciation
- Day 12 — Trial balance review: scan every account for misclassification, confirm no disallowed cost sits in a 5000-series account and no production cost sits in a 6000-series account
- Day 13 — Intercompany and entity elimination: reconcile intercompany transfers at cost, verify transfer pricing documentation, eliminate for consolidated reporting
- Day 14 — Regulatory package: assemble the OCM-facing disclosure set, sales and inventory summaries, variance log, waste and destruction records and count documentation
- Day 15 — Publish and review: issue statements with written variance commentary, hold the close review meeting, log open items with owners and due dates for the next cycle
Metrc track-and-trace reconciliation: matching physical weight to the state database
Minnesota's seed-to-sale tracking requirement means the state holds an independent record of what your business is supposed to be holding. That record is the first thing a regulator compares against, and it is increasingly the first thing a tax examiner asks for as an independent corroboration of reported sales and inventory. Any operator whose perpetual inventory has never been reconciled to Metrc is carrying an unquantified exposure in two directions at once.
Reconciliation is a monthly control with a defined procedure, not an annual scramble. Pull the full package inventory report from Metrc as of the count date and time. Pull the perpetual inventory detail from the accounting or ERP system as of the same instant — timing mismatches manufacture variances that do not exist. Then perform the count physically, by package tag, recording weight to the same precision the state record uses and the unit count where applicable. Three data sets, one moment in time.
Match at the package level, never at the aggregate. Aggregate matching hides offsetting errors, and offsetting errors are precisely the pattern that suggests diversion to a regulator. Produce a three-way variance schedule with a line for every package that does not agree across all three sources, and assign each variance a reason code from a fixed list: moisture loss during curing, sampling for laboratory testing, quality control destruction, documented waste, packaging conversion, data entry error, scale calibration difference, or unexplained. The unexplained bucket is the one that matters. It should be small, it should be investigated within the close, and its trend over time should be reported to ownership.
Weight-specific issues deserve their own treatment. Moisture loss between wet harvest weight and dry cured weight is real, material and expected, and it must be recorded through documented drying and curing entries rather than allowed to appear as an unexplained shortage. Scale calibration records should be retained on a fixed schedule; an uncalibrated scale converts every count into a disputable number. Conversion from bulk weight to packaged units at a stated unit weight should be recorded as a formal conversion event with the yield documented, because that is the point where bulk and unit accounting diverge and where reconciliation most often breaks.
Waste and destruction require the tightest documentation of all. Every destruction event needs the date, the package identifiers, the weight, the method, the witnesses and the corresponding Metrc entry, plus the general ledger entry that removes the value from inventory. A destruction recorded in the state system with no accounting entry, or an accounting write-off with no state record, is the specific mismatch pattern that draws regulatory attention.
Finally, tie the reconciliation to the financial statements explicitly. The inventory roll-forward — beginning balance, plus production and purchases, less cost of goods sold, less documented shrink and waste, equals ending balance — must agree to both the physical count and the state record, in units and in dollars. When those three agree every month, the inventory position is defensible. When they do not, everything downstream of inventory is an estimate, including the tax return.
- Pull Metrc, perpetual inventory and physical count as of the same instant; timing mismatches create phantom variances
- Reconcile package by package, never in aggregate; offsetting errors read as diversion
- Use a fixed reason-code list and report the unexplained bucket and its trend to ownership monthly
- Record drying, curing, conversion and sampling as formal documented events, not as shrink
- Retain scale calibration records, dual-signature count sheets and destruction witness records for the full statutory period
- Prove the inventory roll-forward in both units and dollars against the state record every close
Daily procedures and software configuration
The close is only as good as what happens between closes. Daily discipline eliminates most month-end investigation and is where an internal team can add the most value at the lowest cost.
On software: QuickBooks Online and Xero both work for single-license Minnesota operators when configured deliberately with a proper cost-center dimension. Multi-entity groups running intercompany transfers, manufacturing bills of materials and multi-stage work in process generally outgrow them and should plan a move to a mid-market ERP before the complexity forces an emergency migration mid-year. Whatever the platform, the seed-to-sale and point-of-sale integrations should push summarized journals, and the integration mapping should be reviewed and re-tested after every vendor software update.
- Dual-custody count of every register at open and close, with signed count sheets
- Deposit preparation logged against sealed bag numbers and carrier manifests
- Same-day recording of every inventory adjustment with a reason code and an approver
- Invoice capture at receipt with the purchase order and receiving document attached
- Daily manual-override and discount exception report reviewed by someone off the sales floor
Frequently asked questions
How long should a cannabis close take?
Ten to twelve business days for a well-run single-license operation and up to fifteen for a vertically integrated multi-entity group. Beyond fifteen, the problem is upstream data quality, not bookkeeping speed.
Why use Regulation 1.471-11 rather than Section 263A?
A taxpayer generally cannot capitalize under 263A an amount that is not otherwise allowable as a deduction, and 280E disallows those amounts. That leaves 1.471-11 full absorption costing as the operative framework for producers.
What is the most common COGS error we correct?
Required indirect production costs — production facility utilities, quality control wages, production supervision and equipment maintenance — left in period expense where 280E eliminates them, when 1.471-11 requires them in inventory.
How often should Metrc be reconciled to the books?
Every close, package by package, using data pulled as of the same instant. Annual reconciliation is not a control; it is a discovery exercise.
Can an in-house bookkeeper run this framework?
Yes, for daily entry, reconciliation and the close checklist. Cost pool design, the 1.471-11 method position and the cost accounting memorandum should sit with a specialist who signs the annual documentation.
How long should cost accounting records be retained?
Keep tax and cost accounting support for at least seven years. Retain methodology documentation for as long as the method is in use plus the full statutory period after the last year it was applied.
Rebuild the books once, properly
We will assess your chart of accounts, cost pools, close process and Metrc reconciliation and deliver a written remediation plan.