At a glance
What West Virginia sold
West Virginia's monthly sales figure does not come from the state. It comes from NCS Analytics' Transparency Project, a private dashboard the Office of Medical Cannabis links from its own pages and from inside its own stat sheet, and does not serve. Everything on this line is therefore vendor data, not state-published, and the vendor's own disclaimer — in which it declines to certify accuracy and reserves the right to withdraw the data without notice — is stored in this site's data file beside it.
Monthly retail sales
The line is short because the window rolls. The dashboard shows only the most recent complete calendar months; everything older has already rolled off it. This site archives the page daily, so the line grows from the first capture forward and never backward. The figures beneath the chart say how many months the archive has added so far — including when the answer is none.
Two different holes, and the page distinguishes them. For the years before the window, OMC's biennial reports carry the sales series as a chart image with no backing table, so a figure exists and this site will not read it off pixels. For the stretch between the newest report's coverage and the window's start, no publisher printed a figure at all. The first is recoverable and the second is not, and each carries its own reason code.
Nothing here is grossed up from tax. West Virginia's Tax Division defines a Cannabis Dispensary Tax on dispensary gross receipts and publishes no collections figure, so there is no tax series to derive a sales figure from — and the rate says nothing about whether the vendor's sales number is gross of discounts or inclusive of tax. Both of those bases are declared unstated, with the search that proved the sources are silent recorded in the data file.
What is selling
Retail sales by product category
What a gram cost
This is the one series on this page that comes from the state rather than the vendor, and it is also the most frozen: OMC publishes a monthly price table only inside its biennial report, so the line stops where that report's coverage stops and does not move again until the next edition. Both categories OMC prices by weight are drawn, because the fact that it prices them separately is the evidence for what the bud figure is.
Published price per gram
West Virginia is not on this site's cross-state price chart, and that is deliberate. Two things are unknown and either alone is disqualifying. The basket: separate tables for Buds/Flower and Shake/Trim prove those are not one basket, but nothing published says whether anything pre-rolled sits inside the bud figure, and this site's price standard is whole bud. The statistic: the report never says whether its figure is a mean or a median, and mixing the two on one axis is forbidden here. Both are recorded as open questions with a way to resolve them.
A frozen line is not a flat market. The absence of recent points means OMC has not published recent points, not that the price stopped moving. Every month after the report's coverage is drawn as a gap carrying that reason.
Who holds a card
OMC publishes a monthly patient count in two places under two different words. Its stat sheet counts approved patients at the first of each month; its biennial report counts active patients by month. This site draws both and merges neither: where the two overlap they agree exactly in some months and disagree in others, with no constant offset that would let one be converted into the other.
Patients, from two OMC artifacts
This count moves in both directions, and a fall is not a fault. Patient approvals lapse as well as being granted, so the stock drops whenever renewals lag new registrations. The pipeline logs a decline as a notice and never as an error, and the measured count of rises and falls is in the comparability notes below.
OMC revises these figures silently. The same month has read two different numbers in two editions of the same sheet, published from the same stable filename with no version marker. This site archives each edition, takes the newest as current, and records what moved.
The stat sheet is behind its own schedule. Its header promises a monthly refresh and its internal date does not keep pace. The masthead carries that as a banner rather than presenting an old figure as a current one.
What a patient spent
OMC's own figure, from the same biennial table set as the price line and covering the same window. It is an average across the whole registered population in the month, not a basket size and not a transaction value.
Average patient spend per month
Not a per-buyer figure. Nothing published says how many card-holders bought anything in a month, so this must not be read as what a shopper spends per visit.
Who holds a business licence
Two publishers count two different things and neither is wrong. The vendor reports state-issued active commercial licences every month, across all licence types. OMC's stat sheet reports how many growers, processors and dispensaries are operational, once per edition. A licence that has been issued and a premises that is open are not the same object, and the gap between the two counts is a difference of definition.
Licensed and operational, two different counts
The operational counts are sparse on purpose. OMC states them once per stat-sheet edition, against that edition's own as-of date, so they land on the months those editions describe and nowhere else. They are points, not a series, and nothing here draws a line between them that the source did not.
What is being grown
Two cultivation measures from the same vendor dashboard, on the same rolling window as the sales line. They are included because they are among the few things about West Virginia's supply side that anybody publishes at all.
Harvests started and average wet weight per plant
Wet weight is not yield. It is the weight of the plant at harvest before drying and curing, so it is not a saleable quantity and must not be read against the sales line.
Where these figures come from
Sourcing, basis and comparabilityMedical only, under the West Virginia Medical Cannabis Act. The state publishes no machine-readable monthly sales figure of its own: OMC links this dashboard from 2 of the 2 of its own pages this pipeline checks and from 1 link annotation inside the stat-sheet PDF itself, and does not serve the data.
Basis — Medical retail sales by calendar month, Metrc-derived, vendor-reported
- Measurement
- vendor_reported
- Money
- unstated
- Tax
- unstated
- Period
- calendar_month
- Scope
- retail_only
- Geography
- statewide
- Channels
- medical
Why an axis above reads unstated: A checked negative, not an omission: a search of 40389 characters of vendor-page and biennial text for 11 tax-inclusion phrases returned 0, a search of 40389 characters of the same two sources for 6 methodology phrases returned 1, and a search of 4134 characters of vendor-page text alone for 8 gross-versus-net phrases returned 0, and each of those 5 searches also runs known-positive controls over the same corpus - 16 controls in total, 0 of which failed to match - so a zero is evidence about the source rather than about a matcher that has quietly stopped matching. West Virginia levies a Cannabis Dispensary Tax on dispensary gross receipts, which is a fact about the TAX and says nothing about whether the vendor's sales figure is gross of discounts or inclusive of that tax, so neither axis is inferred from it. An undocumented basis is a gap to be labelled, never filled in with the most likely answer.
Basis — Metrc counts and weights by month, vendor-reported
- Measurement
- vendor_reported
- Money
- not_applicable
- Tax
- not_applicable
- Period
- calendar_month
- Scope
- retail_only
- Geography
- statewide
- Channels
- medical
Basis — Published price per gram and average patient spend by month, from the biennial report
- Measurement
- measured
- Money
- unstated
- Tax
- unstated
- Period
- calendar_month
- Scope
- retail_only
- Geography
- statewide
- Channels
- medical
Why an axis above reads unstated: A checked negative: a search of 40389 characters of vendor-page and biennial text for 11 tax-inclusion phrases returned 0, a search of 40389 characters of the same two sources for 6 methodology phrases returned 1, and a search of 4134 characters of vendor-page text alone for 8 gross-versus-net phrases returned 0, and each of those 5 searches also runs known-positive controls over the same corpus - 16 controls in total, 0 of which failed to match - so a zero is evidence about the source rather than about a matcher that has quietly stopped matching. On the price statistic specifically, a search of 36254 characters of the biennial for 6 terms that would name the statistic - median, mean, average price, weighted, arithmetic, midpoint - returned 0, so whether the published price is a mean or a median is unknown and this project will not put an unknown statistic on an axis that already mixes neither. An undocumented basis is a gap to be labelled, never filled in with the most likely answer.
Basis — Active patients by month, as the biennial report states them
- Measurement
- measured
- Money
- not_applicable
- Tax
- not_applicable
- Period
- calendar_month
- Scope
- unstated
- Geography
- statewide
- Channels
- medical
Why an axis above reads unstated: A checked negative rather than an assumption: of the 6 "as of" statements the report makes, 1 attaches a day to a patient count - as of October 31, 2025 it reports 35,394 active patients, an end-of-month reading - which dates 1 of the 24 months its patient table labels and leaves 23 undated; the table's own row for that month reads 35,395, a 1-patient disagreement inside the canonical artifact, published here rather than absorbed. Against the stat sheet, which does state its own timing, the two tables overlap in 7 months, agree exactly in 4 and differ in 3 by between 100 and 194 patients, at most 0.548% of the biennial's own figure, so this pipeline draws both and splices neither; no constant offset fits, so no offset is applied. An undocumented basis is a gap to be labelled, never filled in with the most likely answer.
Basis — Approved patients at the first of each month
- Measurement
- measured
- Money
- not_applicable
- Tax
- not_applicable
- Period
- point_in_time
- Scope
- unstated
- Geography
- statewide
- Channels
- medical
Why an axis above reads unstated: The sheet states its own timing and states nothing about what "approved" excludes, which is why this field and the biennial's are two fields: the two tables overlap in 7 months, agree exactly in 4 and differ in 3 by between 100 and 194 patients, at most 0.548% of the biennial's own figure, so this pipeline draws both and splices neither. An undocumented basis is a gap to be labelled, never filled in with the most likely answer.
Basis — Operational grower, processor and dispensary counts at the edition's own as-of date
- Measurement
- measured
- Money
- not_applicable
- Tax
- not_applicable
- Period
- point_in_time
- Scope
- retail_only
- Geography
- statewide
- Channels
- medical
Sources 3
| Role | Source | Format | From | Last verified | Note |
|---|---|---|---|---|---|
| Canonical | NCS Analytics Transparency Project - West Virginia NCS Analytics Vendor data, not state-published | html | rolling | 2026-09-05 | The vendor's newest capture carries 6 monthly rows and merging all 15 archived captures yields 7, so archiving has added 1 month so far. |
| Cross-check | OMC Program Statistics stat sheet West Virginia Office of Medical Cannabis | 2025-04 | 2026-09-05 | Never averaged with the canonical figure. The two tables overlap in 7 months, agree exactly in 4 and differ in 3 by between 100 and 194 patients, at most 0.548% of the biennial's own figure, so this pipeline draws both and splices neither. | |
| Cross-check | OMC Biennial Report West Virginia Office of Medical Cannabis | 2023-11 | 2026-09-05 | Never averaged with the canonical figure. This is the only OMC artifact carrying a monthly price table and it carries no monthly sales table at all. On the one measure both publishers state, the two tables overlap in 7 months, agree exactly in 4 and differ in 3 by between 100 and 194 patients, at most 0.548% of the biennial's own figure, so this pipeline draws both and splices neither. |
Why each marker above says what it says
| Metric | Marker | Why |
|---|---|---|
| Retail sales | Partly comparable | Vendor data, not state-published. West Virginia's only monthly retail figure comes from NCS Analytics' Transparency Project, and OMC links this dashboard from 2 of the 2 of its own pages this pipeline checks and from 1 link annotation inside the stat-sheet PDF itself, and does not serve the data. Money and tax bases are both unstated: a search of 40389 characters of vendor-page and biennial text for 11 tax-inclusion phrases returned 0, a search of 40389 characters of the same two sources for 6 methodology phrases returned 1, and a search of 4134 characters of vendor-page text alone for 8 gross-versus-net phrases returned 0. The line is short because the dashboard shows a rolling window - the vendor's newest capture carries 6 monthly rows and merging all 15 archived captures yields 7, so archiving has added 1 month so far - and 48 months from Nov 2021 to Oct 2025 carry no monthly sales figure because OMC publishes them only as a chart image, and a further 3 from Nov 2025 to Jan 2026 carry none at all: the biennial's coverage ends at Oct 2025 and the vendor's merged window opens at Feb 2026. |
| Medical / adult-use split | Single-channel market | Medical only, and a single-channel market is a category rather than a hundred-per-cent medical share. West Virginia has no licensed adult-use retail; every permit either publisher names is a medical cannabis permit. |
| Price per gram | Not like-for-like | A price per gram of Buds/Flower is published, and it is held off the cross-state axis on two independent grounds rather than one. On the basket: OMC prices Buds/Flower and Shake/Trim in two separate tables, and across the 24 months both cover, the bud figure is above the shake figure in 24 of them by between $2.17 and $5.82, so the two baskets are demonstrably not one; what is not published is whether anything pre-rolled sits inside the bud table, and a search of 40389 characters of report text for 5 pre-roll phrases returned 0. On the statistic: a search of 36254 characters of the biennial for 6 terms that would name the statistic - median, mean, average price, weighted, arithmetic, midpoint - returned 0, so whether the published price is a mean or a median is unknown and this project will not put an unknown statistic on an axis that already mixes neither. The series is also frozen: it lives only in a biennial report, so it ends at Oct 2025 while the sales series reaches Aug 2026. It is drawn on West Virginia's own page with its own definition. Blocked until wv_price_basket, wv_price_method is resolved, whatever the status above says. |
| Per capita | Partly comparable | Per-capita inherits every flag on its numerator (ANCHORS 5), and this numerator is a vendor figure with money and tax bases unstated. It inherits the window too: a per-resident line for West Virginia exists only for the months the vendor's rolling window has been captured for, and 48 months from Nov 2021 to Oct 2025 carry no monthly sales figure because OMC publishes them only as a chart image, and a further 3 from Nov 2025 to Jan 2026 carry none at all: the biennial's coverage ends at Oct 2025 and the vendor's merged window opens at Feb 2026. |
| Patient counts | Partly comparable | OMC publishes two monthly patient tables in two artifacts under two different nouns - "approved" on the stat sheet and "active" in the biennial report - and the two tables overlap in 7 months, agree exactly in 4 and differ in 3 by between 100 and 194 patients, at most 0.548% of the biennial's own figure, so this pipeline draws both and splices neither. The stat sheet is the one offered here because it is the one that keeps updating; the biennial's deeper history is drawn beside it on West Virginia's own page and is never merged into it. The measure is declared on a measurement rather than on the word: the count falls in 4 of 13 month-to-month steps, which a cumulative registration count cannot do. The stat sheet is also structurally stale - its own "Data as of" stamp reads 2026-05-01, against a sheet whose header claims a monthly update; across the 4 editions this pipeline holds, publication followed the as-of date by 1 to 3 days. |
| Licence counts | Partly comparable | Two publishers count two different things. The vendor reports state-ISSUED active commercial licences by month; OMC's stat sheet reports OPERATIONAL growers, processors and dispensaries once per edition. In the newest reading of each, the vendor's all-type licence count is 93 and OMC's operational counts for the same three types are 67 dispensaries, 9 growers and 9 processors, 85 in all: a like-shaped difference of 8 between issued and operating. Set against dispensaries alone the gap reads 26, which is that difference plus the 18 growers and processors OMC counts as operating, so it measures two things at once - differences of definition, not of accuracy. The monthly line is the vendor's; OMC's counts sit on the same axis as 4 sparse points, labelled. |
| Tax revenue | Not like-for-like | West Virginia publishes no cannabis tax-revenue series at all. The levy exists and the Tax Division's own page defines it, but no collections figure is published anywhere this project could reach: the Tax Division's own page defines the levy and publishes no collections figure, the sibling path this project probed for one returns HTTP 404, and the known-positive control on the same host returns its page - so the absence is checked rather than assumed. There is no tax panel on West Virginia's page, and nothing here grosses a retail figure up or down from a rate. |
What is checked on every run 3
| Check | Kind | Last result |
|---|---|---|
| The vendor publishes a product-category breakdown beside its monthly total. Summing the categories is the only independent decomposition of a West Virginia sales month that exists, and it also settles the scope question SOURCE_CONTRACT 3.10 leaves open for this vendor elsewhere: the product table's own caption says retail, and it reconciles to the published retail total. | identity | The vendor's product categories sum to the published monthly total to within the $1 tolerance in 2 of the 2 months a breakdown was captured for, the worst residual being $1, which is what differencing figures already rounded to the dollar produces. |
| OMC's two patient tables against each other over the months both cover. Monitored and never enforced: the two carry different nouns, and the difference is a fact about OMC's publishing rather than a parse fault. | cross source reconciliation | The two tables overlap in 7 months, agree exactly in 4 and differ in 3 by between 100 and 194 patients, at most 0.548% of the biennial's own figure, so this pipeline draws both and splices neither. |
| Every monthly sales figure outside the 2 months a product breakdown was captured for has nothing to check it against. West Virginia publishes one sales number per month from one source and no decomposition of it, so unlike the District - whose headline is over-determined by two in-document identities - most of this series is reported rather than cross-checked. | unchecked | Not cross-checked. No second publisher of a monthly retail figure exists in West Virginia, and the state's own reports carry the series as a chart image: the earlier edition's 32 pages yield 28974 characters of extractable text and 0 Month-Year dollar pairs, so no table in it keys a figure to a month. |
The regulator's own notes, and what is still open
The regulator's own notes
NCS does not certify its accuracy and makes no claims, promises, or guarantees regarding the accuracy, completeness, or adequacy of the Data. NCS reserves the right to discontinue providing any or all of the Data at any time, with or without notice.
— NCS Analytics, Transparency Project - West Virginia, page footer
Cannabis Dispensary Tax (CDT) is imposed on the gross receipts received or accrued on medical cannabis for all permitted medical cannabis dispensaries during the quarterly period at a rate of 10 percent. This quarterly tax return must be electronically filed through MyTaxes.
— West Virginia Tax Division, Excise Tax page
The report's own words for the two extremes of a series it publishes only as a chart: the highest recorded sales in Metrc was August 1, 2024 at $8,401,200.12 while the lowest recorded sales was November 1, 2023 at $6,954,344.81. Quoted here, never plotted. — OMC Biennial Report, Figure 1
A price for a month no price table covers: The newer edition restates one month of the earlier edition's chart in prose - pricing per gram in October 2023 reported as $8.43, attributed to the 2023 edition - which is a retrospective sentence rather than a table row; the 2023 edition itself puts that same $8.43 in Nov 2023, and the table this series is built from gives Nov 2023 as $7.25, so the two editions disagree about which month the figure belongs to and about that month by $1.18 - published here rather than absorbed. Quoted here, never plotted. — OMC 2025 Biennial Report, Price Per Gram section
Prices for months no price table covers, stated in the earlier edition's own prose rather than plotted by it: 2 months in this span the earlier edition also states in extractable prose - $7.06 in Nov 2021, which the report calls "the first month of sales" - the month this market opened and the first month on this axis; $11.99 in Mar 2022, which the report names outright - inside a paragraph describing its chart, 2 of the 3 dollar figures that paragraph contains; a sentence about a chart is not a row of the Buds/Flower table this series is built from, so those are quoted in the source notes and carry their own cell note. Quoted here, never plotted. — OMC 2023 Biennial Report, Figure 8 paragraph
Open questions on this data
Unresolved definitional questions that gate something. Listed because a question nobody can see is a question nobody closes.
- Does OMC's Buds/Flower price table include anything pre-rolled, or is it whole bud as ANCHORS 5 defines it? Blocks: price_per_gram. Closing it needs: Ask OMC at the industry address printed on its own Industry Quarterly Report form which Metrc item categories feed that table. Until it is answered the price renders on West Virginia's own page with its own definition and stays off the cross-state axis.
- Is the published price per gram a mean or a median? Blocks: price_per_gram. Closing it needs: The same request. ANCHORS 5 forbids mixing a median with a mean on one axis, so an unknown statistic cannot join one either.