Cannabis Data Project
District of Columbia · Medical cannabis program

The District's medical cannabis market, by the numbers

Showing—
Loading…

Loading the latest ABCA figures…

At a glance

Where the market is heading

Retail and wholesale sales

Retail is dispensary sales to patients. Wholesale is cultivator and manufacturer sales to dispensaries. ABCA did not report manufacturer sales before October 2023, so wholesale is a declared gap for those months rather than a smaller number.

* Spring 2025 expansion. ABCA shut down dozens of unlicensed “gifting” shops through 2025, while self-certification let any DC adult 21+ register as a patient online — moving demand into licensed dispensaries.

Neighbouring states. Maryland adult-use retail sales began 1 July 2023. In Virginia, possession has been legal since 1 July 2021 and retail sales are scheduled to begin 1 July 2027 — outside this data.

How the money moves

Sales by license tier

ABCA counts product again at each tier

    Retail channel mix

    DC-resident sales · in-store vs. delivery

    Who is buying

    DC-resident patients drive the majority of counter sales. Out-of-state buyers — reciprocity patients and self-certified temporary registrations, mostly from Virginia and Maryland — still account for a large share of retail dollars, though a shrinking one: around half in 2021–22, and 37–38% in the most recent months.

    Retail dollars by patient type

    Summed across the selected range

    What is selling

    Retail sales by product type

      What a gram costs

      Average price per gram of bud

      Worked out from ABCA's own two columns: the dollars and the pounds in the Flower/Bud row, converted at 453.59237 g to the pound. It is a mean across everything ABCA counts as Flower/Bud, which excludes pre-rolls and shake — those are their own rows.

      Arrests before & after legalization

      Annual figures · not affected by the date filter

      How cannabis enforcement changed around legalization.

      Common questions

      Why is every sale here a medical sale?

      A congressional appropriations rider bars the District from licensing recreational sales, so there is no adult-use channel to measure. Since 2022 any adult 21+ can self-certify as a patient with no physician recommendation, which makes “medical” a legal channel label rather than a clinical qualification.

      Do these figures include the gifting shops?

      No. Unlicensed “gifting” retail appears in this dataset not at all. ABCA reports licensed activity, so a shift from unlicensed to licensed retail shows up here as growth even where total consumption did not change.

      Why does a month sometimes say “not reported” instead of showing zero?

      Because those are different claims. ABCA prints a dash where it published no figure, and a dash is not a zero — publishing it as $0.00 would state that a market existed and sold nothing. Every gap on this page carries the reason it is a gap.

      Is the wholesale figure comparable to the retail one?

      No, and they are deliberately never added together. ABCA also publishes an all-tier “Total” row that counts the same product again as it moves cultivation → manufacture → retail. The headline here is the Dispensaries row, which is what consumers actually spent.

      Where these figures come from

      Sourcing, basis and comparability

      Every licensed cannabis sale in DC is a medical-programme sale. Initiative 71 (2015) legalised possession and home cultivation for adults 21+, but a congressional appropriations rider bars the District from licensing recreational sales, so there is no adult-use channel to measure. Since 2022 any adult 21+ can self-certify as a patient with no physician recommendation, so 'medical' here is a legal channel label rather than a clinical qualification. Unlicensed 'gifting' shops appear in this dataset not at all.

      Retail sales Partly comparableMedical / adult-use split Single-channel marketPrice per gram Like-for-likePer capita Partly comparablePatient counts Not like-for-likeLicence counts Partly comparableTax revenue Not like-for-like
      Basis — Licensed retail sales, calendar month
      Measurement
      measured
      Money
      unstated
      Tax
      unstated
      Period
      calendar_month
      Scope
      retail_only
      Geography
      statewide
      Channels
      medical, reciprocity, temporary
      Rounding
      ABCA rounds every published dollar figure to whole dollars.

      Why an axis above reads unstated: A full-text search of all 56 ABCA report PDFs for 'tax', 'excise', 'gross', 'net ', 'discount', 'exclud', 'methodolog', 'note' and 'defin' returns ZERO hits. The only footnote in the entire corpus is an asterisk in the July 2022 report about which agency's inspections are counted. ABCA publishes no methodology statement, no basis note and no glossary, so gross-vs-net and tax-inclusivity are unstated — a checked negative, not an omission, and not to be filled in from general knowledge of DC tax law. An undocumented basis is a gap to be labelled, never filled in with the most likely answer.

      Basis — Licensee-to-licensee sales, calendar month
      Measurement
      measured
      Money
      unstated
      Tax
      unstated
      Period
      calendar_month
      Scope
      wholesale_only
      Geography
      statewide
      Channels
      unknown
      Rounding
      Whole dollars.

      Why an axis above reads unstated: Same zero-hit search as abca_retail; the wholesale rows sit in the same table and carry no basis note either. An undocumented basis is a gap to be labelled, never filled in with the most likely answer.

      Basis — Programme counts, calendar month
      Measurement
      measured
      Money
      not_applicable
      Tax
      not_applicable
      Period
      calendar_month
      Scope
      retail_only
      Geography
      statewide
      Channels
      medical, reciprocity, temporary
      Basis — Bud price per gram, derived from ABCA's own paired columns
      Measurement
      derived
      Money
      unstated
      Tax
      unstated
      Period
      calendar_month
      Scope
      retail_only
      Geography
      statewide
      Channels
      medical, reciprocity, temporary

      Why an axis above reads unstated: Inherited from abca_retail: the dollars in the numerator carry no stated tax or discount basis. An undocumented basis is a gap to be labelled, never filled in with the most likely answer.

      Derivation. price_flower_g = product_flower_usd / (product_flower_lb * 453.59237) Error: ABCA rounds pounds to whole or one-decimal figures, so at ~750 lb/month the quantity carries about ±0.07% and the price inherits it. Only Flower/Bud is divided: shake and the pre-rolls are also pounds but rounded coarsely enough that the implied price swings on the rounding alone, and every other family is counted in packages, which is not a unit a price can be quoted in..

      Unit conversion. lb → g, factor 453.59237, defined in International avoirdupois pound, exact by definition (NIST Handbook 44 Appendix C)..

      Sources 1
      Where every figure on this page comes from
      RoleSourceFormat FromLast verifiedNote
      CanonicalMedical Cannabis Program Report (monthly PDF)
      DC Alcoholic Beverage & Cannabis Administration
      pdf2021-112026-08-15One PDF per month, each a rolling three-month window, so a single report yields three months and every month is covered by up to three reports. No API, no CSV: parsing the PDF is the only way in.
      Why each marker above says what it says
      How this state compares with the others
      MetricMarkerWhy
      Retail salesPartly comparableDC's report states no basis at all: whether the figures are gross or net of discounts, and whether they include tax, is not written down anywhere in the source. Maryland's exclude sales tax. The two lines are therefore not guaranteed to be measuring the same dollar.
      Medical / adult-use splitSingle-channel market100% medical, because a congressional rider bars DC from licensing adult-use retail — a single-channel market, not a medical share to rank. And since 2022 any adult 21+ can self-certify as a patient with no physician recommendation, so the label describes a legal channel, not a clinical population.
      Price per gramLike-for-likeThe cleanest comparison available: a price per gram carries no population, and every jurisdiction on this axis is whole bud sold at retail, worked out from each regulator's own paired quantity and dollar columns or published bud series. ABCA's Flower/Bud row already excludes pre-rolls and shake, which is why Maryland is matched on price_buds_g rather than its whole Flower type. A residual difference is tax basis: Maryland's price excludes sales tax and DC's does not say.
      Per capitaPartly comparable38% of DC's retail dollars in 2026-06 were spent by people who live somewhere else, so dividing by DC's own population inflates it against a state whose buyers are mostly residents. Every basis flag on the numerator rides along: a per-resident ranking is only as comparable as the least comparable figure in it.
      Patient countsNot like-for-likeDC publishes a cumulative registration stock that only rises and includes self-certified sign-ups; Maryland publishes a current registered stock that falls as patients migrate to adult-use. They are different measures and share no axis — the site shows them as a labelled pair, never as one series.
      Licence countsPartly comparableABCA began publishing a retailer count only in its February 2026 report, so DC has eight months of it against Maryland's full series, and the two regulators count different things: DC counts open retailers, Maryland's snapshot counts licences by type.
      Tax revenueNot like-for-likeDC publishes no cannabis tax figure in this source, and the sales figures do not even say whether tax is included in them.
      What is checked on every run 4
      What is checked on every run
      CheckKindLast result
      Dispensary retail equals the sum of its three customer channels.identitypass
      The same identity in the era when the two non-resident channels were one published row.identitypass
      The product table's Value column sums to the dispensary retail total.identitypass — worst residual $49 (2022-09)
      ABCA's own Average Sale equals its own Total Sales divided by its own Total Unique Sales.identity1 notice: 2026-03 prints $58 where the division gives $61. $58 is that row's own In-Store Average Sale, so ABCA copied the wrong cell. Republished unaltered.
      The regulator's own notes, and what is still open

      The regulator's own notes

      Maryland's figures exclude sales tax; DC's reports do not say either way, so neither line is necessarily what changed hands at the register. — dccannabisdata.com compare page

      Of the total patient count, 5,871 registrations lapsed prior to January 31st, 2022 — ABCA, MCP Report January 2022, 2022-01

      Open questions on this data

      Unresolved definitional questions that gate something. Listed because a question nobody can see is a question nobody closes.

      • Are ABCA's published sales figures gross or net of discounts, and are they tax-inclusive? Closing it needs: A source outside the report PDFs — DC Code, an ABCA data request, or an ABCA methodology page — fetched and quoted. Do not fill it from general knowledge of DC tax law.
      • Is DC's Total Unique Sales count comparable to Maryland's Dispensary Transactions count, so an average-basket metric can put them on one axis? Closing it needs: Both counts are now ingested, so the question is definitional rather than mechanical: ABCA publishes no definition of 'unique sale' and MCA none of 'transaction'. Needs a source outside both artifacts before the two are charted together.

      Publication notices

      Know when a new month of figures is added — no email address, no account.

      Follow the feed

      Paste this address into any feed reader and a new entry appears each time a month of figures is published. Nothing is stored about you, and there is never advertising.

      https://cannabisdataproject.com/feed.xml

      New to feeds? A reader such as Feedly, Inoreader, NetNewsWire or Thunderbird checks the address for you and shows new entries as they appear.