How We Collected $19M in Cannabis Receivables This Year (and Where AI Agent Skills Helped)
Accounts Receivable · By Headquarters · September 16, 2026
Our AR team has collected $19M in receivables for cannabis operators so far this year. None of it came from a clever tool. It came from sending the right message to every past due account, on time, every week, which is the part of AR that quietly breaks at almost every cannabis company.
The stakes are well known. Industry economists put delinquent cannabis receivables above $4 billion, and recovery data puts the odds of collecting a commercial invoice at 90 days past due around 70-80%, falling to 45-55% at six months. Every week an account goes without contact costs recovery odds. And under 280E, the tax on that revenue came due whether you collect it or not.
Here's how we run the workflow, and exactly where AI agent skills fit into it.
Step 1: Treat the Aging Report as a Work Queue
Most finance teams open the A/R Aging report, look at the total, and close it. We read it row by row, because every row is a task with a deadline.
The export we start from is the standard QuickBooks A/R Aging, Summary or Detail. The Detail version is better: it carries invoice numbers and due dates, so every message can name a real date instead of a vague "past due." Before anything goes out, the report gets checked against what the customer actually owes. Unapplied payments and duplicate invoices are common in cannabis books, and nothing damages a retailer relationship faster than chasing money that was already paid. (We've written about where phantom receivables come from.)
Step 2: Match the Tone to the Bucket
A retailer at 12 days past due and a retailer at 95 days are not the same conversation. Sending both the same generic reminder is too harsh for one and far too soft for the other. We work five buckets, each with its own job:
- Before the due date: a courtesy heads-up with the amount and how to pay. Nothing more.
- 1-30 days: assume it slipped through. Restate the balance and ask when to expect payment.
- 31-60 days: say plainly that payment hasn't arrived and ask for a date. Add a phone number.
- 61-90 days: note the silence, flag the impact on the account, and request payment by a specific day.
- 91+ days: the account goes on credit hold, and new orders pause until the balance clears.
Two examples, as short as we actually send them:
Subject: Acme Dispensary - Outstanding Invoice
>
Hi Acme team,
>
Wanted to follow up on your outstanding balance of $6,450. We know things get busy. Just making sure this didn't slip through.
>
Can you let us know when to expect payment?
Subject: Acme Dispensary - $6,450 Now 60-90 Days Past Due
>
Hi Acme team,
>
Following up again on your balance of $6,450, now 60 to 90 days past due. We haven't received payment or a response and want to get this resolved before it impacts your account.
>
Please confirm a payment date by October 3, 2026 or reach out to discuss next steps.
Both stay under 120 words. Short gets read. A buyer skimming their inbox between deliveries will answer a four-line email and ignore a four-paragraph one.
Step 3: Let the Agent Skill Write the First Draft
This is where AI earns its place. Writing dozens of tailored collection emails by hand every week is exactly the kind of work that gets pushed to Friday and then to next week. So we encoded the bucket logic into an agent skill that runs in Claude or ChatGPT.
The skill reads the aging export, sorts every customer into their bucket, and produces one email per customer per bucket, with the real amount, the real due date where the report has it, and the signer's name and phone already filled in. The output is a table with a button on each row that opens the email in Gmail or Outlook, ready to review and send.
The time saving isn't the point. Consistency is. Every account gets contacted on schedule regardless of who owns the relationship or how awkward the conversation feels. As we covered in The Most Expensive Sentence in Cannabis AR, hesitation is what turns collectible receivables into write-offs.
Step 4: Hard Rules the AI Never Breaks
A general-purpose AI asked to "write a collections email" will happily threaten legal action, invent a late fee, or promise that the matter will go to an agency. In an industry this small, one of those emails can cost you the account and your reputation with every buyer the retailer talks to. Cannabis operators also have limited legal remedies to back a threat up, which makes an empty one worse.
So the rules are written into the skill, not left to a prompt:
- Never threaten legal action.
- Never promise or predict a collection outcome.
- Never invent a number, date, or fee that isn't in the report.
- Skip $0 balances silently.
- Keep every email under 120 words.
An agent that follows the same rules on the hundredth email as on the first is more reliable than a tired person at 5pm on a Friday.
Step 5: People Handle Everything After the Reply
The skill writes the email. It doesn't run collections. Every reply goes to a person, because that's where the real work starts: negotiating a payment plan with a retailer who is short this month, deciding whether a quiet account at 75 days gets a call from the sales rep first, or confirming that a credit hold should actually go out.
That split is the whole model. AI handles the part that is repetitive and easy to put off. Our team handles judgment, relationships, and follow-through.
What to Do This Week
- Export your A/R Aging Detail report and reconcile any account over 60 days before contacting it.
- Count the accounts in each bucket that haven't heard from you in the last 14 days. That number is your real collections backlog.
- Write down the five-bucket tone ladder and apply it to every account, starting today, so escalation follows the calendar instead of the mood in the room.
Then send the emails you've been putting off.