The monthly Metrc count is a race against the clock. Here’s how to stop running it.
Placeholder: [FOUNDER NAME]· Founder ·Sep 24, 2026· 7 min read· counsel-reviewed
Summary. The monthly count is expensive because it is monthly. A discrepancy found on day 28 has had four weeks to grow legs: the staff who touched the package have gone home, the receipts that would explain it have been finalised, and what was a keying error is now an inventory variance you have to explain to a regulator. Daily package-level reconciliation is not a nicer version of the same job. It is a different job, and it is smaller.
Every operator we have spoken to describes the same week. Someone prints the Metrc report, someone else walks the shelf with a clipboard, and the two lists are compared by eye until they agree or until it is midnight. Metrc's own material calls the manual version a "sticker party" — hours spent relabeling, counting and verifying. Chameleon Collective put it better than we could: the monthly count is "a race against the clock, and the clock often wins."
The reason it feels like a race is that you are reconciling a month of drift in a day. Nothing about the work is hard. There is just too much of it, arriving at once, about events nobody remembers.
What a discrepancy costs once it is old
In California, a cannabis inventory audit that finds an unexplained variance does not end with a corrected number. Baghoomian Law's write-up of CA audits is blunt about where it goes: a discrepancy "becomes an enforcement case." The question stops being what is the right count and becomes why does your system say one thing and the state's say another.
That is a question about process, not arithmetic, and it is much easier to answer on the day than four weeks later. On the day you have the receipt, the employee, the manifest and the reason. At month end you have a number that is wrong and a room full of people who are certain it was not them.
Some states apply a tolerance — a small percentage of sales within which a variance is not treated as a reportable discrepancy. Do not plan around it. A tolerance is a threshold for enforcement, not a budget for sloppiness, and the operators who treat it as headroom are the ones who discover where the line actually sits.
Daily is cheaper, and the reason is arithmetic
A month of drift is roughly thirty days of drift. Reconciled daily, each day's difference is small enough to explain from memory and from that day's receipts. Reconciled monthly, the differences compound and interleave: two keying errors, a returned item and a mis-scanned transfer stop being four separate small problems and become one large unexplained number.
The work is the same work. Doing it thirty times in small pieces costs less than doing it once in a large piece, because each piece is individually explicable.
What makes daily reconciliation practical is doing it at the package level rather than the SKU level. A SKU-level count tells you that you are three units short of Blue Dream 3.5 g. A package-level count tells you which tag is short, which receipt last touched it, and whether the manifest it arrived on ever matched the invoice. The first is a mystery. The second is a to-do.
What the Metrc API will and will not let you do
If you are going to reconcile nightly, it helps to know the shape of the thing you are reconciling against. These are constraints we hit building against it, not opinions:
- Time-based reads are capped at a 24-hour window per request.
lastModifiedStartandlastModifiedEndcannot span more than a day — a rule in force since 2018. So backfilling ninety days is not one call. It is ninety calls, per facility, per endpoint family. - Rate limits are per facility, and going over returns a
429with the window in a header. An integrator key also carries a concurrency ceiling shared across every customer it serves, which is why a vendor that pulls everyone at 02:00 sharp will throttle itself. - Writes are capped at ten objects per request. Any batch of approved corrections has to be chunked, and a chunk can partially succeed — so each chunk needs to be its own audit event rather than one hopeful bulk call.
- Pagination, webhooks and extended lookback are premium. On the free tier the lookback is limited, which matters most at onboarding, when you want twelve months of history and can get rather less.
None of this makes nightly reconciliation hard. It makes it something you schedule
deliberately — staggered per facility, honouring Retry-After, with a token bucket
per key — rather than something you fire off in a cron line.
One more that catches people: the documentation page for every state publishes the same superset of endpoints. Every state's printable list shows the CA-only retailer delivery endpoints, the medical-only patient endpoints, Retail ID and the retired v1 routes, and none of them says an endpoint is switched off in that state. So the docs cannot tell you what is enabled where. You establish that per state, in the sandbox or with Metrc support, and you write it down.
What "reconciled" should mean
A reconciliation that produces a number is not finished. A reconciliation that produces a number and the rows behind it is. For each store-day we think the minimum is:
- Every POS sale matched to a Metrc receipt, with the match rate shown rather than assumed.
- Every receipt line tied to a package tag, so a difference names a tag.
- Every accepted transfer quantity compared against the invoice quantity, because that is where a discrepancy usually enters.
- Anything that does not match left held, not corrected.
That last point is the one people argue with, so: a tag mismatch is evidence, and editing it destroys the evidence. If an invoice says thirty and the manifest says twenty-eight, the right artefact is a credit memo and a corrected-invoice request to the vendor — not a tag that has been quietly made to agree. The state's copy did not change. Yours should not either.
What to do on Monday
You do not need software to start. You need the count to stop being monthly.
- Pull yesterday's receipts and yesterday's package changes, and compare them at the tag level. If that takes more than twenty minutes by hand, it is because the data is in two systems that disagree — which is the actual problem.
- Write down the states you operate in and, for each, which Metrc endpoint families are actually enabled. Not documented. Enabled.
- Decide today what you do with a mismatch, and make it a rule rather than a judgement call: held, credit memo, vendor email. Never an edit.
Do that and the monthly count becomes what it should have been all along — a confirmation, not an investigation.
Sources: Metrc, How Metrc Retail ID saves time and money: a retailer's guide;
Chameleon Collective, Inventory optimization and Metrc; Baghoomian Law,
California cannabis inventory audits and Metrc discrepancies; Metrc state API
documentation (PrintableList) for CA and twelve other states, read September 2026.
Rate-limit and window behaviour verified against the published endpoint index.
This is an operations note, not legal advice. Tolerances and enforcement practice vary by state; confirm yours with counsel.