The short answer
A cannabis chart of accounts that holds up under 280E separates cost of goods sold from operating expenses at the account level, breaks production costs into cost pools that can be capitalized into inventory, and uses classes or departments to tag every transaction by license type and location. That structure lets you show the IRS which costs belong in COGS, which are disallowed, and, for dual-license operators, which belong to medical versus adult-use activity. Generic small-business charts of accounts can't do any of that.
Why does the chart of accounts matter so much under 280E?
Under Section 280E, adult-use cannabis businesses can't deduct ordinary operating expenses, but they can subtract cost of goods sold. So the most important question in your books is: which side of the gross profit line does each dollar land on, and can you prove it?
A generic chart of accounts, the kind accounting software creates by default, lumps payroll into one account, rent into another and leaves COGS as a single line for product purchases. That makes it nearly impossible to show which wages were production labor, how much of the rent was grow space or which costs were tied to medical activity.
Since April 28, 2026, the stakes have a new dimension. State-licensed medical activity is Schedule III and generally outside 280E; adult-use is still Schedule I. Dual-license operators now need their books to show both the COGS split and the medical versus adult-use split. The chart of accounts is where both start.
What are the design principles of a 280E-ready chart?
- Accounts describe what; classes describe where. Use accounts for the type of cost (wages, rent, nutrients). Use classes, departments or locations for which license, facility or function it belongs to. Don't create "Rent - Medical" and "Rent - Adult-Use" as separate accounts if your software can tag by class instead.
- Mirror the tax treatment. Costs that can go into inventory should live in their own accounts, separate from costs that can't, so the split is visible at a glance.
- Separate producer and reseller costs. Cultivation and manufacturing can capitalize a broad set of production costs; retail generally can't. Keep them in distinct sections.
- Keep it lean. More accounts aren't better. Every account should exist because it changes a decision, a tax position or a report.
- Match your inventory system. Inventory and COGS accounts should line up with how your seed-to-sale and inventory software tracks product, so monthly reconciliation is straightforward.
How should you set up COGS cost pools?
For producers, costs typically flow through three stages: they're incurred, they're capitalized into inventory, and they become COGS when product sells. Your chart should support that flow.
- Production cost accounts.Where production costs are first recorded: direct materials, direct labor and production overhead such as grow-room utilities and equipment depreciation.
- Inventory accounts.Balance sheet accounts by stage, such as work in process (plants in the grow, biomass, crude) and finished goods. Production costs are capitalized here during the period.
- COGS accounts.Costs relieved from inventory as product sells, broken out so you can see materials, labor and overhead within COGS.
Resellers have a simpler version: purchases and freight-in go to inventory, and inventory relieves to COGS on sale. Under the 471 reseller rules, retail payroll and store rent don't belong in this flow. For the detail on what qualifies, see Cannabis COGS Under IRC 471.
Booking production costs straight to COGS and skipping inventory is a common shortcut. It misstates both inventory and COGS whenever production and sales don't match month to month, and it's harder to defend.
How should you use classes and departments by license?
Most accounting platforms let you tag transactions with a second dimension, often called classes, departments, locations or tracking categories. Use it for these three things:
- License type: Medical, Adult-Use, Shared. "Shared" is a holding class for costs that will be allocated by your documented method.
- Function: Cultivation, Manufacturing, Retail, Wholesale, Admin. This supports the producer versus reseller distinction.
- Location: each licensed premises, if you operate more than one.
Some platforms support two dimensions at once, such as class plus location. If yours only supports one, combine where needed (for example, "Retail - Medical") and keep the list short.
Revenue should be tagged at the point of sale. If your POS can separate medical and adult-use sales, map those to the right class on every sales import. Shared costs sit in the Shared class until the monthly allocation entry moves them out. Our dual-license allocation guide walks through that build.
What does a sample cannabis chart of accounts look like?
An illustrative excerpt for a vertically integrated operator. Numbering is just an example; use whatever scheme your platform supports.
| Number | Account | Notes |
|---|---|---|
| 1300 | Inventory - Work in Process (Cultivation) | Capitalized grow costs |
| 1310 | Inventory - Work in Process (Manufacturing) | Biomass, crude, distillate |
| 1320 | Inventory - Finished Goods (Produced) | Own product ready for sale |
| 1330 | Inventory - Purchased for Resale | Third-party product |
| 2400 | Cannabis Excise Tax Payable | State and local rules vary |
| 2410 | Sales Tax Payable | Kept separate from excise |
| 4000 | Retail Sales | Class by license type |
| 4100 | Wholesale Sales | Including intercompany, if any |
| 4900 | Discounts and Promotions | Contra revenue |
| 5000 | COGS - Purchased Product | Invoice cost of resold goods |
| 5010 | COGS - Freight-In | Acquisition cost |
| 5100 | COGS - Production Materials | Relieved from inventory |
| 5200 | COGS - Production Labor | Relieved from inventory |
| 5300 | COGS - Production Overhead | Relieved from inventory |
| 5800 | Inventory Adjustments and Shrink | Tie to seed-to-sale records |
| 5900 | Production Labor (to capitalize) | Growers, trimmers, lab staff |
| 5910 | Production Facility Costs (to capitalize) | Production share only |
| 5920 | Production Supplies and Inputs (to capitalize) | Nutrients, media, packaging |
| 5930 | Production Depreciation (to capitalize) | Grow and lab equipment |
| 6000 | Retail Wages | Generally not COGS |
| 6100 | Retail Occupancy | Generally not COGS |
| 6200 | Marketing and Advertising | |
| 6300 | Banking and Cash Handling Fees | Armored car, cash fees |
| 6400 | Compliance and Licensing | Fees, tracking software |
| 6500 | General and Administrative | Sub-accounts as needed |
The 5900 series is a holding area: costs are recorded there during the month and capitalized into the 1300 inventory accounts by a period-end entry, leaving the 5900 accounts at zero. Some teams prefer to post directly to inventory instead; either works if it's consistent.
What monthly routine keeps the chart working?
A good structure only helps if the entries land in the right place every month. A short close routine keeps it honest:
- Code payroll by function and class from the payroll register, not from memory.
- Reconcile inventory quantities in your seed-to-sale system to the inventory accounts, and book shrink and adjustments with support.
- Post the capitalization entry that moves production costs into inventory.
- Run the shared-cost allocation entry for dual-license activity.
- Review gross margin by function and license for anything that moved unexpectedly.
When those five steps happen monthly, year-end becomes a review instead of a rebuild.
What chart of accounts mistakes cause the most trouble?
- One payroll account for everyone. If production and non-production wages share an account, you'll be reconstructing the split from timesheets at year-end, if the timesheets exist.
- COGS as a plug. A single year-end entry that "trues up" COGS to a number is very hard to defend in an exam.
- Excise tax buried in COGS or expenses. Excise and sales taxes need their own liability accounts and a clear policy on gross versus net presentation.
- Accounts for every vendor or project. That's what vendor records and classes are for. Account sprawl makes reports unreadable.
- No Shared class. Dual-license operators who force every cost to medical or adult-use at entry end up with inconsistent, undocumented allocations.
- Inventory that never ties to seed-to-sale. If the balance sheet and your tracking system disagree, neither COGS nor inventory is reliable.
Rebuilding a chart mid-year is doable but needs mapping and remapping of prior entries. If your books have outgrown their setup, our cannabis bookkeeping service includes a 280E-ready chart of accounts and the monthly process to keep it working.
Frequently asked questions
Can I use the default QuickBooks chart of accounts for a cannabis business?
You can start from it, but it won't separate production costs from operating expenses or support classes by license without changes. Most cannabis operators need to restructure COGS, inventory and payroll accounts at a minimum.
Should medical and adult-use have separate accounts?
Usually it's cleaner to use the same accounts and tag transactions with classes or departments by license type. Separate entities or separate books may be appropriate in some structures, but duplicating every account is rarely necessary.
Where should cannabis excise tax go in the chart of accounts?
Excise tax collected or owed should have its own liability account, separate from sales tax. Whether it's presented gross or net in revenue depends on how the tax is imposed in your state, so set a policy and apply it consistently.
How often should production costs be capitalized into inventory?
Monthly is the common standard. It keeps inventory and COGS accurate through the year, supports monthly tax projections and is easier to defend than a single year-end adjustment.