At a glance
Where the market is heading
Michigan runs two programmes under one regulator. The Cannabis Regulatory Agency reports medical and adult-use as separate sections of one monthly document, each with its own product table and its own total, so the channel split below is the regulator's own and not a share this page derived. The total is their sum.
Monthly retail sales by channel
The money basis is unstated, and it is left that way. The monthly report gives no sentence about whether its dollars are gross or net of discounts, or whether excise and sales tax are inside them. That silence is recorded as a flag rather than filled in by inference, and every per-capita and cross-state comparison on this site inherits it.
Each month is read from its own edition. The CRA publishes one document per month and re-issues one occasionally, so this page rebuilds the whole series from the mirrored documents on every run rather than appending. A re-issued edition changes bytes and is recorded as a revision rather than absorbed silently.
Two file formats, one reader. The report switched from PDF to Word part-way through the series with no announcement. Both readers ship, neither is retired, and a structural check compares what each yields either side of the boundary — including the licence totals, whose reader is the most format-sensitive part of the whole pipeline.
Medical and adult-use
Two licence types, two programmes, two sections of one report. Michigan's medical market has been shrinking against its adult-use one for most of the published series; the method section below records the share for the newest month and how it is measured.
Retail dollars by channel
What whole bud costs
This line is flower dollars over flower weight, converted at the estate's own gram factor — the same arithmetic the District of Columbia's anchor uses, on a category the CRA itself defines as whole dried and cured flower. Raw pre-rolls and terpene-infused pre-rolls are routed out of that category by the regulator's own rule, which is what lets Michigan sit on the whole-bud axis rather than beside it.
Adult-use whole-bud price per gram
The CRA's own headline price is drawn beside this, never averaged into it. The agency prints an average retail flower price per ounce in each edition. This page derives its own figure from the paired dollars and pounds instead, and then measures the two against each other every run — that measurement is the evidence the published headline is the same arithmetic on the same row, and it is reported in the method section rather than assumed.
One month's flower dollars are a declared gap. A dollar sign is mis-encoded in one edition's text layer. The value is legible to a human and the pipeline still refuses to guess it: the cell becomes a gap with a reason that says the parse failed, and the checks that depend on it attribute their shortfall to it by name rather than reporting the parse as wrong.
Registered patients and caregivers
The CRA publishes approved qualifying patients and primary caregivers by county, as of each month end. The total rises and falls, which a cumulative registration count cannot do, so this is recorded as a point-in-time stock and may share an axis with other states that publish one. The direction is counted at runtime rather than assumed from the label.
Michigan medical registry, at month end
The county row count is not constant. The CRA prints an out-of-state row in some editions and not others, so the table is longer in some months than in others. Every edition's rows are summed against the total the CRA prints beside them, and an edition whose total cannot be read counts as a failure rather than being quietly dropped from the denominator.
Where these figures come from
Sourcing, basis and comparabilityLicensed medical sales run under the Medical Marihuana Facilities Licensing Act; adult-use sales run under the 2018 voter-initiated Michigan Regulation and Taxation of Marihuana Act. The CRA regulates both and reports them as two separate sections of one monthly document, which is why this page can show a genuine channel split rather than a derived one.
Basis — CRA monthly retail sales, reported through the state's seed-to-sale system
- Measurement
- measured
- Money
- unstated
- Tax
- unstated
- Period
- calendar_month
- Scope
- retail_only
- Geography
- statewide
- Channels
- medical, adult_use
- Rounding
- cents as published
The regulator's own words: The report prints a month range as its own period label and gives no basis sentence.
Why an axis above reads unstated: The monthly report was searched for a statement of gross, net or tax treatment and carries none; the same posture as the District of Columbia's anchor, and it must not be inferred. An undocumented basis is a gap to be labelled, never filled in with the most likely answer.
Basis — Whole-bud retail price, derived from the Flower row
- Measurement
- derived
- Money
- unstated
- Tax
- unstated
- Period
- calendar_month
- Scope
- retail_only
- Geography
- statewide
- Channels
- adult_use
The regulator's own words: Buds - Referred to as Flower in public record - Whole dried/cured flower.
Why an axis above reads unstated: money and tax are unstated for the same reason the sales basis is: the guide defines the CATEGORY and the monthly report prints the dollars, and neither says anything about discounts or tax. The price inherits that silence rather than borrowing a flag from elsewhere. An undocumented basis is a gap to be labelled, never filled in with the most likely answer.
Derivation. flower_usd / (flower_lb * 453.59237)
Unit conversion. lb → g, factor 453.59237, defined in ANCHORS section 5, the same factor the District of Columbia anchor uses.
Basis — Adult-use excise distributed to local government
- Measurement
- measured
- Money
- gross
- Tax
- not_applicable
- Period
- fiscal_year
- Scope
- retail_only
- Geography
- statewide
- Channels
- adult_use
The regulator's own words: Each report titles itself as distributions based on marijuana revenues collected in the fiscal year it names. The figure is the municipality and county share, not the excise collected.
Sources 4
| Role | Source | Format | From | Last verified | Note |
|---|---|---|---|---|---|
| Canonical | Cannabis Regulatory Agency monthly statistical report Michigan Cannabis Regulatory Agency | 2021-01 | 2026-08-23 | Declared as pdf because that is what the great majority of the mirror is and the schema's format vocabulary admits one value; the series is genuinely mixed and the split is measured on every run and stated in source_notes and in integrity/dual_format_agreement. One binary office document per month. The index is the discovery surface and the pipeline follows its hrefs; report URLs are never constructed, because four filename conventions are live on the index today and a template silently misses the odd ones out. | |
| Cross-check | CRA Average Retail Flower Price (oz.) Michigan Cannabis Regulatory Agency | 2021-01 | 2026-08-23 | Never averaged with the canonical figure. | |
| Cross-check | CRA Compliance Best Practice Guide Michigan Cannabis Regulatory Agency | 2026-05 | 2026-08-23 | Never averaged with the canonical figure. | |
| Cross-check | Treasury adult-use marihuana distributions, by fiscal year Michigan Department of Treasury | FY2021 | 2026-08-23 | Never averaged with the canonical figure. |
Why each marker above says what it says
| Metric | Marker | Why |
|---|---|---|
| Retail sales | Partly comparable | Two channels measured by one regulator in one document, summed. The money basis is unstated in the source and is not inferred. |
| Medical / adult-use split | Like-for-like | Comparable as published. |
| Price per gram | Partly comparable | Michigan's price is whole bud and nothing else, on the regulator's own definition rather than on inference. The CRA's Compliance Best Practice Guide defines the category the monthly report calls Flower as “Buds - Referred to as Flower in public record - Whole dried/cured flower.” and routes the two things ANCHORS excludes away from it: “All raw pre-rolls must be categorized as shake/trim (pre-packaged), regardless of whether they are made from buds.” and “All pre-rolls with the addition of non-marijuana terpenes should be categorized as an inhalable compound concentrate (ICC)”. The figure drawn here is derived the way the District of Columbia's is — flower dollars over flower weight — and not converted from the per-ounce figure CRA prints. The two agree to within $0.01 across 131 channel-months, which is how this page knows CRA's headline price is that same arithmetic on that same row. That agreement is measured across both channels, while the series drawn here is adult-use alone, and 1 of the 134 channel-months in the mirror is outside the comparison because one side of it is a declared gap. |
| Per capita | Partly comparable | Inherits the unstated money basis of the numerator, and the carried-forward denominator for months later than the newest published estimate. |
| Patient counts | Partly comparable | The CRA publishes approved qualifying patients by county as of the month end. Over 66 month-to-month steps the total rose 4 times and fell 62 times, which a cumulative registration count cannot do, so it is recorded as a point-in-time stock and may share Maryland's axis. |
| Licence counts | Partly comparable | Active licences at the month end, and only where CRA's own by-type counts sum to the total it prints beside them. That identity holds for 58 of 67 adult-use editions and 57 of 67 medical; 9 and 9 editions print no Active Licenses table, and 1 medical edition prints one whose parts do not reconcile. Those are declared gaps, not zeros. 1 medical edition needed at least one interpolated digit space rejoined inside a count before the identity held, and the rejoin was applied only because it made CRA's own total reconcile exactly. |
| Tax revenue | Not like-for-like | Two independent reasons, either of which alone would be enough. The figure is a fiscal-year total, and the monthly axis cannot take an annual one without the interpolation DECISIONS Q4 forbids outright. And it is the share statute sends to host municipalities and counties, not the excise collected, so it would not be the same measure as another state's tax line even at a matching grain. Blocked until mi_tax_annual_distribution_share is resolved, whatever the status above says. |
What is checked on every run 7
| Check | Kind | Last result |
|---|---|---|
| Each of the three published columns sums to the row the source labels Total, in every channel of every edition. | identity | 386 of 402 column sums reconcile. Of the 16 that do not, 1 is the column carrying the one cell whose dollar sign the PDF text layer mis-encodes -- that cell is a declared gap, so the column is short by the value the reader refused to guess and the residual is that cell, not a parse error. Across the other 15 the worst residual is $244,125.17 against a published total, which is CRA's own rounding. This is the check that proves the per-column x-coordinate assignment: the older editions leave the fluid-ounce cell blank rather than dashed, and a reader that counted tokens instead would file pounds as fluid ounces for a whole era with no symptom but these two sums swapping. |
| Two identities: a region block's own product rows sum to the block's printed Total, and the printed block Totals sum to the channel's statewide Total. | identity | Within blocks, 304 of 308 reconcile. 2 of the residuals equal one of the block's own printed product rows exactly, which is CRA leaving that row out of its own printed total rather than this reader losing it; across the remaining 2 the worst is $203.48. Across blocks, 41 of 68 channel-months reconcile against the statewide total, worst $32,653,463.74 -- those are CRA's arithmetic, and separating the two identities is what stops one printed block total reading as a parse that is $32,653,463.74 out. The block COUNT is not constant and is not treated as though it were: adult-use has run at 5 blocks and medical at 3 and 5 across the mirror, and the newest edition carries 5 and 3. |
| CRA's published per-ounce price against flower dollars over flower weight, which is what licenses the derived series onto the cross-state price axis. | cross source reconciliation | 131 of 133 compared channel-months agree to within $0.01; the 2 that fall outside the threshold differ by at most $0.94. 1 of the 134 channel-months in the mirror is outside the comparison, because one side is a declared gap. That agreement is the evidence the published headline price is derived from the Flower row, so the basket of the price is the basket of that row. |
| County registry rows sum to the row the source labels Total, over every edition -- an edition whose Total is unreadable counts as a failure, not as a skip. | identity | 67 of 67 editions checked and 66 reconcile exactly. The row count is 83 or 84, not one number: CRA prints an Out of State row in some editions and not others. The 1 that does not reconcile has every row present and exceeds CRA's own printed Total by less than a percent, so it is classed as the source's arithmetic on the row COUNT as well as on the size. |
| Sales-to-date is described as a cumulative, so it cannot fall. A fall is either an edition that filed the two channels' figures under each other's headings -- exchanged only when the series' own ordering brackets the exchange on both sides -- or something this reader does not understand, and the second refuses the write. | shape assertion | Checked medical over 57 points, never falling and adult-use over 67 points, never falling. In 2023-07 the CRA printed the two channels' running totals under each other's headings -- $5,593,817,921.19 under "Sales To Date (as of Jul 31)" in the medical section and $1,581,308,978.64 under "Sales To Date (Jul 31)" in the adult-use section. The exchange is licensed by the ordering and by nothing else: as printed, the medical figure is above its own channel's next total, and the adult-use figure is below its own channel's previous total; exchanged, each figure is bracketed by its own channel's previous and next reported totals. The two figures shipped are the two the edition prints; neither is derived. A fall this repair cannot license refuses the write rather than being carried with a note. |
| The DOCX era yields every key the PDF era yielded, measured across the format boundary -- including the licence totals, whose reader depends on the file format more directly than any other here. | shape assertion | The 62-edition PDF era and the 5-edition DOCX era yield the same product keys, the same region-block counts, the same county-row count and a reconciled licence total in both channels across the boundary at 2026-02 to 2026-03. The licence total is in scope deliberately: of everything read here its geometry changes hardest at the format flip, so a check that certified agreement without it would read as a general proof while the format-sensitive defect passed underneath. |
| A licence total is accepted only when the by-type counts CRA prints beside it sum to it. Nothing else in this document catches a wrong licence count -- it carries no currency sigil, sits in no column that has to reconcile, and reads to the claim gate as a registered numeral. | identity | Adult-use reconciles in 58 of 67 editions, medical in 57. 9 adult-use and 9 medical editions print no Active Licenses table and are gaps with reason not_reported; 1 edition prints an Active Licenses table this reader read in full whose by-type counts disagree with the total the same row prints (medical 2022-02 sums to 1,255 against 1,256), which is the regulator disagreeing with itself rather than a parse this reader lost, so it is a gap with reason excluded_bad_data whose note carries both numbers. 1 medical edition needed at least one interpolated digit space rejoined inside a count before the identity held, and the rejoin was applied only because it made CRA's own total reconcile exactly. |
The regulator's own notes, and what is still open
The regulator's own notes
The index reaches back to 2021-01 and lists 67 editions with no month missing between its floor and its newest. Below that floor, the four filename conventions the index itself uses were each probed for the month before it and for the same month a year earlier, against two editions the index does list as positive controls; the controls returned their documents and the probes returned none. — Measured on this run against the CRA report index
62 editions are PDF and 5 are DOCX. The format changed mid-series and is undocumented, so both readers ship and neither is retired. — Measured on this run against the mirrored editions
The regional split is the CRA's own aggregation and is not a map. In the newest edition adult-use is broken into 5 blocks and medical into 3, and the medical grouping labels its first block with more than one region name; those regions are not separable from what is published. — Measured on this run against the newest edition, 2026-07
Michigan's whole-bud price line is lower than where the series starts: $2.08 per gram in 2026-07 against $11.42 in 2021-01, a factor of 5.49. — Derived on this run from the CRA Flower rows
The 2023-07 edition prints the medical and adult-use running sales totals under each other's headings: $5,593,817,921.19 appears in the medical section under "Sales To Date (as of Jul 31)" and $1,581,308,978.64 in the adult-use section under "Sales To Date (Jul 31)". Read as printed, the medical figure is above its own channel's next total, and the adult-use figure is below its own channel's previous total. The pair is exchanged here because the exchange -- and only the exchange -- leaves each figure bracketed by its own channel's previous and next reported totals; no figure is adjusted, derived or interpolated. 1 of 67 editions needed it. — Measured on this run against the mirrored editions; the figures are the CRA's own
Buds - Referred to as Flower in public record - Whole dried/cured flower.
— CRA Compliance Best Practice Guide, Item Categories in Metrc
Treasury's own fiscal-year reports give $54,017.10 per licence and $93,773,685.60 distributed in FY2025, across 238 municipality units and 79 county units. Two figures that circulate in press coverage of these distributions -- an entity count and a per-fund share -- appear nowhere in the reports themselves and are not published here. — Michigan Department of Treasury, FY2025 distribution report
Open questions on this data
Unresolved definitional questions that gate something. Listed because a question nobody can see is a question nobody closes.
- Whether CRA's monthly totals are gross or net of discounts, and whether excise and sales tax are in them. Closing it needs: Ask the CRA, or wait for a basis sentence to appear in the monthly report; the whole mirror is re-read for one on every run.
- Whether a monthly or a collected-excise series exists anywhere in Michigan's published output. Blocks: tax_revenue. Closing it needs: Re-walk the Treasury landing page and the CRA index for a collections series at any grain finer than a fiscal year.