← All guides

Compliance playbook

Industry / heroes / medical discounts — verification cadence + audit-trail

Industry discount, heroes discount, medical discount — three programs every WA dispensary runs, all of them discretionary. No Washington rule tells you how often to re-verify or how deep the discount may go, which means the whole program is your policy and your evidence. The failure mode: a budtender stamps an industry discount ‘because she said she works at a shop in Spokane’ and nothing in the record says who she is or why she qualified. Here’s the house standard we run — verify per visit, document per transaction, audit per quarter — and why it holds up when anyone opens the log a year later.

By CannAgent5 min read

No Washington rule sets this cadence — that is why it is a policy

Start with what the rulebook does and does not say, because a lot of industry-discount advice — including an earlier version of this page — attributes the cadence below to a WAC section. It isn’t in one. WAC 314-55-095 is ‘Cannabis servings and transaction limitations’: milligram limits and per-transaction caps, nothing about discounts. WAC 314-55-018 is the only discounts section in the chapter, and it is licensee-to-licensee — it prohibits producers and processors from advancing money or moneys’ worth to other licensees through rebates and discounts. It carries no employee-discount provision, no verification cadence and no percentage ceiling. So everything that follows is OUR standard, not the state’s:

  • We verify per visit, not per customer. A budtender from a Spokane shop who walks in once a month gets re-verified each visit; the first-time check doesn’t carry forward. Most POSes store ‘verified industry-discount eligible’ as a customer-row flag, which turns a discount into a standing entitlement nobody re-reads. That is a policy hole rather than a citation, and it is the one that actually costs money.
  • We accept a current pay stub OR a current employee badge from a WSLCB-licensed cannabis business. Driver’s license isn’t enough; word-of-mouth isn’t enough; ‘she’s been here before’ isn’t enough. The verification has to tie the customer to a current cannabis-licensee employer, because that is the only fact the discount is being granted on.
  • We cap the industry discount at 30% off retail. That number is a house ceiling picked to protect margin and to keep the program readable as a discount rather than compensation — it is not a legal threshold, and no WAC section names one. Pick your own ceiling; the discipline that matters is that it is set in code and cannot be exceeded without a manager PIN.

Per-visit verification — the 30-second flow

  1. Customer requests the discount. ‘Hey, I work at [shop], do you guys do industry?’ That’s the trigger; nothing happens until they ask.
  2. Budtender asks for verification. ‘Got a current pay stub or a badge?’ Phrasing matters — we’re not interrogating, we’re documenting. ‘It’s our house policy on every industry discount, no exceptions’ is the right closer if the customer pushes back. Don’t reach for the state: no WSLCB rule asks for this, and a budtender who says otherwise gets caught by the first customer who knows the rulebook.
  3. Budtender photographs the verification. Camera at the till. Pay stub photo or badge photo lands as a CDN-stored image referenced by the audit-log row. CannAgent stores the image with a 90-day retention; some shops keep longer. Image gets PII-redacted at render-time (last-4 of any visible employer ID, no SSN tail).
  4. Discount applied at the till. POS stamps the activity row: customer_id, employer_name (typed by budtender), verification_type (‘paystub’ / ‘badge’), discount_pct, transaction_id, image_ref. Audit-trail complete in <30 seconds.
  5. Customer comes back next month. Re-verify. Don’t shortcut. The audit log shows N verifications for N visits — that’s the pattern that makes the program readable to anyone who opens it later.

What your POS needs to make this fast

  • Discount-application gate at the till. Before applying any industry / heroes / medical discount, the budtender must complete a 4-field micro-form: employer name (free-text), verification type (radio: paystub / badge / medical-card), photo upload (required), discount % (locked to your shop’s ceiling). No bypass; no ‘skip for now.’
  • Manager-PIN override required for non-standard discount %. Anything above your standard cap requires a manager PIN + a typed reason. Audit log captures both.
  • Image storage with retention policy. Our defaults are 90 days for industry / heroes and 1 year for medical; both are house numbers, not statutory floors. Note that the transaction record itself is a different question — WAC 314-55-087 requires licensee records be kept on the licensed premises for five years, and that one IS a rule. PII-redaction at render-time so a reviewer sees what they need without exposing the customer’s full ID-tail accidentally.
  • Audit-log query under 60 seconds. ‘Show me every industry discount applied in Q1 2026, grouped by budtender’ — your POS should answer in under a minute. CannAgent surfaces this as a one-click report; whichever POS you run, find the equivalent.
  • Quarterly self-audit. We run a self-audit on the first of every quarter — random-sample 10 industry discounts, verify the photo matches the employer named, look for patterns (one budtender doing 80% of the discounts? Investigate). Nobody requires the self-audit; it is the cheapest way to find the leak while it is still small.

What breaks the program

None of these is a WSLCB citation — there is no industry-discount rule to violate. They are the ways a discretionary program stops being defensible to your own owner, your accountant, or anyone reading the log later:

  • Discount applied with no verification record. ‘She’s industry, I know her’ leaves nothing behind. The transaction is now a margin giveaway you cannot explain six months on.
  • Discount % above your own ceiling. Even once, even with proper verification — a ceiling that bends is not a ceiling, and the next override is easier than the last.
  • Same person on the audit log every week with different employers named. Hopping employers is the pattern that says the verification is being waved through; it deserves a look.
  • Budtender applying industry to themselves. Cleanest: budtender doesn’t ring their own transaction. Manager rings the budtender’s purchase + applies the discount. Double-control; clean audit trail.
  • No quarterly self-audit. Without it you find out the program leaked when the margin report does, which is a quarter too late.
  • Heroes / medical applied without separate verification flow. Each program is granted on a different fact. Stamping ‘heroes’ on someone with a paystub from a cannabis shop is wrong twice — wrong program, wrong evidence.

What this replaces

  • Verbal-only verification (‘she said she works at…’) — undocumented, unreviewable, and impossible to defend to your own owner.
  • Paper logbook of industry visits — gets lost, gets wet, gets thrown out by the cleaning crew. The gap shows up in the margin, not in a finding.
  • Spreadsheet tracking of who’s ‘industry-eligible’ — an entitlement list nobody re-reads, which is the opposite of per-visit verification.
  • ‘Just put it on her loyalty account as a manual discount’ — workaround that loses the verification + breaks loyalty-program math.

Takeaways

  • NO Washington rule governs an employee or industry discount. WAC 314-55-095 is servings and transaction limits; WAC 314-55-018, the chapter’s only discounts section, is licensee-to-licensee. The cadence and the ceiling below are house policy — write them down as policy
  • We verify per VISIT, not per customer — the first-time check doesn’t carry forward, because a stored ‘eligible’ flag is a standing entitlement nobody re-reads
  • We accept a current pay stub OR a current employee badge from a WSLCB-licensed cannabis business; a driver’s license isn’t enough
  • Our ceiling is 30% off retail, set in code with a manager PIN above it — that is a margin decision, not a legal threshold; pick your own number and hold it
  • 30-second flow: ask for verification / photograph it / stamp the audit row with employer + verification-type + discount-% + image-ref / re-verify next visit
  • Quarterly self-audit on a random 10-row sample is what keeps a discretionary program from quietly turning into an unpriced entitlement

Frequently asked

How often do I have to verify someone for an industry discount — once, or every time?
No Washington rule answers this — WAC 314-55-095 is servings and transaction limits, and WAC 314-55-018, the chapter's only discounts section, is licensee-to-licensee and sets no cadence. So the answer is your policy. Ours is every time: a budtender from a Spokane shop who comes in once a month gets re-verified each visit, because the first-time check doesn't carry forward. Storing 'verified industry-discount eligible' as a customer-row flag turns a discount into a standing entitlement nobody re-reads, which is the failure this cadence exists to prevent.
What counts as acceptable proof for an industry discount, and how high can the discount go?
Our standard is a current pay stub OR a current employee badge from a WSLCB-licensed cannabis business. A driver's license isn't enough, and word-of-mouth or 'she's been here before' isn't enough. On depth: no WAC section caps an industry discount at any percentage — that number is entirely the operator's. We cap at 30% off retail as a margin decision, set in code with a manager PIN required above it. Anyone quoting you a statutory ceiling is repeating something that isn't in the rulebook.
When someone asks for our prior-quarter discount records, what should our audit log show?
You pull every transaction with its photographed verification in seconds, each row tied to the image that justifies the discount. The POS stamps the activity row with customer_id, employer_name, verification_type (paystub or badge), discount_pct, transaction_id, and image_ref. Keep industry, heroes, and medical as separate activity-types so the three programs can be read apart — they are granted on different facts. Nobody requires the quarterly self-audit on a random 10-row sample; it is the cheapest way to find a leaking discount program while the leak is still small.

Related guides

Ready to talk through your migration?

30-minute demo. We end by quoting the cutover from your current setup — fixed scope, no hourly games.