← All guides

Back-office deep-dive

Cannabis payroll inside the POS — Form 941 next to till data

Most cannabis dispensaries run payroll across three systems that don't talk to each other. Hours come out of the POS. Payroll runs in Gusto / ADP / Comploy. Filings — Form 941, W-2 batch, state-specific stuff — get done by hand at the end of the quarter. The seams are where margin disappears, where IRS letters originate, and where the bookkeeper burns Friday afternoons.

By CannAgent8 min read

Why three systems become four become five

Cannabis dispensaries pick up payroll vendors the same way other small retailers do — Gusto's friendly, ADP's enterprise-shaped, Comploy was a referral. The POS export to payroll provider is usually a CSV; the payroll provider's filings are usually online; the WA-specific stuff (L&I, PFML, SUI) is sometimes handled, sometimes not. Each gap is a system that has to be reconciled against the others.

  • POS hours don't auto-sync — bookkeeper exports CSV, edits in Excel, imports to payroll. Errors compound across pay periods.
  • Tip allocation lives in the POS but doesn't always make it cleanly to the payroll W-2 box 7 column. Mismatches surface in March of the following year.
  • WA L&I rate updates quarterly. Bookkeeper has to know to check; the payroll provider doesn't always.
  • PFML (Paid Family Medical Leave) and SUI (State Unemployment Insurance) reporting is on the operator if the payroll provider doesn't handle WA-specific filings.
  • When the operator changes payroll provider (it happens), the historical hours + tax filings have to migrate by hand.

What 'inside the POS' means concretely

Payroll consolidation doesn't mean writing a tax-filing engine from scratch. It means the source data — hours, wages, tip allocation, deductions — lives in the same database as the till, and the filings flow from that source without re-keying.

SurfaceOld way (3+ systems)Consolidated approach
Hours capturePOS clock-in → CSV export → payroll system importPOS clock-in → same DB
Tip allocationPOS → bookkeeper Excel → payroll W-2 boxPOS → tip-allocation table → W-2 generator reads it
Form 941 (federal quarterly)Payroll system → bookkeeper review → IRS submitGenerated from same DB; bookkeeper reviews + submits
WA L&I quarterlyBookkeeper computes from CSV → online portalGenerated from same DB with current rates
WA PFML quarterlyOften skipped → letter from ESDGenerated from same DB; reminder cron
WA SUI quarterlySame as PFML — easy to missSame — generated, not optional
W-2 batch (annual)Payroll system → bookkeeper distributionSame DB → generated → batch send via Resend

The Form 941 reconciliation pattern

Form 941 is the federal quarterly payroll-tax return. Every IRS letter we've heard about in operator forums traces to a Form-941 vs Forms-W-2 mismatch — meaning the quarterly numbers don't reconcile against the annual W-2 totals. The mismatch is usually 1-3% and not malicious. It's usually data drift between systems.

  1. **Pull source data from one place.** If your hours live in 5 places, your Form 941 reconciles against 5 different views and at least one disagrees.
  2. **Tip allocation is the biggest reconciliation gotcha.** Cannabis tipping is irregular but real. If the POS captures tips and the payroll system captures hours, the W-2 has to merge them — and usually the merge is bookkeeper-by-hand.
  3. **Deductions before/after withholding matter.** Pre-tax deductions (health insurance, 401k if the dispensary offers it) are computed from the same DB or they aren't. Mismatch shows up in 941 line 5a vs the W-2 totals.
  4. **Quarterly close + annual close should both pull from the same source.** If quarterly is computed by payroll system and annual is computed by bookkeeper from the same payroll system, drift shouldn't happen. If the bookkeeper does annual from a CSV export, drift will happen.

Cannabis-specific payroll wrinkles

Cannabis payroll has structural quirks federal regulations don't fully accommodate. The big ones:

  • **280E doesn't directly hit payroll, BUT** — the federal disallowance of business-expense deductions for cannabis operators interacts with payroll tax accounting in subtle ways. Talk to a cannabis-experienced CPA. The platform-side concern: keep the gross/net + deduction columns clean so the CPA's job is easy, not impossible.
  • **Tip allocation is real and matters.** A budtender who clears $2K-$5K/yr in tips needs that captured for W-2 box 7 + Social Security purposes. The POS knows; the question is whether the W-2 generator knows what the POS knows.
  • **Workers' Comp class codes** vary by store risk — Wenatchee retail-class can differ from Seattle multi-floor + retail-class. The payroll system has to know per-store rates, not a single org rate. WA L&I is per-store.
  • **Federal banking limits** mean cannabis dispensaries often pay tipped employees in cash. Tip allocation still has to capture them; the IRS treats cash tips identically to credit-card tips for W-2 purposes.

When NOT to consolidate

Some dispensaries shouldn't consolidate payroll into the POS. Specifically:

  • **You have a CFO/controller who's already running clean payroll in a dedicated system.** If the bookkeeper is competent, the payroll provider is reliable, and Form 941s reconcile cleanly — don't break what's working.
  • **Multi-state operations beyond your POS's coverage.** If your POS does WA-only payroll filings and you have a CO + CA store, the inconsistency is worse than two systems. Solve that first.
  • **Mid-year transition.** Consolidating mid-year creates a partial-year split that confuses the W-2 generator. Plan consolidation cutovers for January 1 of a new calendar year, not mid-quarter.
  • **Active IRS audit.** Consolidating during an audit changes the audit trail mid-process. Wait until the audit closes.

What CannAgent ships here

Our Payroll Stack module ships Form 941 quarterly + W-2 batch annually + W-3 transmittal + 940 FUTA + WA L&I + WA PFML + WA SUI all from the same database the till writes to. No CSV export to a separate provider. The bookkeeper still reviews + submits — but the bookkeeper is reviewing one source, not reconciling four.

Takeaways

Ready to talk through your migration?

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