Goodbye Strainge, Hello Pact. Read the announcement.
San Diego Boardwalk

California Cannabis Taxes Done Right in 2020

Part 1: San Diego

There's a lot of misleading, confusing and outright wrong information floating around the internet about how to properly calculate retail cannabis taxes in California.

Of all the states across the US, California wins the unenviable prize for being the most difficult tax regime in the country for cannabis retailers.

California voters passed Prop 64 in 2016 which gave local jurisdictions the right to impose taxes at a local level. Since then over a hundred cities and counties have passed a local cannabis tax, each a bit different from the other, and each worded differently in their code of ordinances. New taxes are popping up all over the state, too — even in places where cannabis is currently banned but deliveries from outside jurisdictions still occur.

California State law mandates that any local cannabis taxes have to be voted on to be imposed, but once the measure passes it can take months, or even years to begin collection. Usually, the measure has a range of allowable rates and imposition requires a resolution from the city or county government. While the ballot measures are usually high profile, the city council resolutions are very much not — and it's the resolutions that usually set the official rate.

What that means for you is that a new tax can pop up on any given night there's a city council or county commissioner's meeting.

Most cities and counties don't have a page on their website dedicated to cannabis, and those that do are often terribly outdated. Many of them only publish zoning and licensing information and neglect to include tax rates and sample tax calculations. And, believe it or not, a few cities don't even have a functioning website at all. San Diego not only has a city website, it has a decent page covering it's cannabis business tax.

That leaves it up to you to dig up and decipher the details of local cannabis taxes in the Codes of Ordinances. The Code of Ordinances is tricky to interpret. We've read thousands and often need to get clarification from city officials who may not even know the answer themselves without further research. The minutia found in these codes are important, too. Some provide exclusions and exemptions that can save (or cost!) you and your customers thousands of dollars as we'll see a bit later.

You might think that if you live and work in that locality you'll probably hear about the tax. But, California throws a curve ball. Delivery into other jurisdictions can be subject to the destination's tax through a process called apportionment. We'll cover apportionment in a future blog post.

It's worth noting, though, that San Diego is one of those cities that does have specific apportionment rules and they've already been busy auditing cannabis businesses to recover taxes owed and not reported. To be clear, this post only deals with transactions that occur from start to finish within San Diego city limits. We don't want to complicate matters any more than we need to until you've got a clear understanding of a basic transaction.

Then there's the California Cannabis Excise Tax (CET) and state and local sales taxes. Those taxes are different from the local cannabis business tax. They've got their own quirks and complications. At the end of the day you're responsible for calculating them all in the right order with the right exemptions — blaming your Point of Sale system won't fly in an audit.

So, in the next few posts we're going to shed some light on the most common mistakes being made today. Better yet, we'll show you avoid them.

An example calculation

Let's start with most simple example possible in San Diego. Remember this is not for a delivery into or out of the city limits. That's got some nuance we won't cover today. We're also no going to go into depth on how the California Cannabis Excise Tax is calculated in different situations. We'll cover that in yet another future blog post.

California Cannabis Excise Tax in Ten Seconds Flat
California Cannabis Excise Tax is calculated differently depending on whether the transaction is considered "arm's length or "non-arm's length". Arm's length is calculated by taking the wholesale price multiplied by a markup rate that's set every six months and then applying a tax of 15% to that "average markup price" (AMP). Non-arm's length just uses the gross receipts instead of the whole markup thing.

Here are the assumptions in this example:

  1. The transaction occurred from beginning to end in a recreational retail store within San Diego City limits.
  2. The item was purchased for $14.99 from the wholesaler in an Arm's Length transaction. We're using that wholesale cost so that the Average Markup Price is the same as the retail price, or $35.00. In a less contrived example, it's rare that the two prices would match. This also lets us compare apples to apples when we discuss the Non-Arm's Length transaction later in this series. If that doesn't make sense, don't worry about it for now. We'll make it very clear then.
  3. The item purchased is a recreational cannabis item, meaning non-medical.
  4. The tax rates are current as of September 2020. (San Diego changed their rate from 5% to 8% once already.)

I know we said this is a simple example. Trust us, this is a simple as it gets. It only gets much more complicated from here.

Note: We're showing the incorrect and correct calculations side by side first so you can get a quick idea of the difference. Don't waste time trying to figure out why they're different just yet, we're going to walk you through it.

San Diego (Wrong)


1/8 oz Blue Dream


($35.00 x 15.00%)

Excise Tax




($40.25 x 7.75%)

State Sales Tax


Subtotal 2


($43.37 x 8.00%)

City Business Tax



San Diego (Right)


1/8 oz Blue Dream


($35.00 x 15%)

Excise Tax


($35.00 x 8%)

City Business Tax




($43.05 x 7.75%)

Sales Tax



At first glance this may not seem so terrible. After all, the totals are only off by 45 cents. Most retailers have set things up just like this in their Point of Sale systems. In fact, this example is adapted from another example transaction published online by a major cannabis Point of Sale System provider.

The devil is in the details — and lurking in those details are problems that are literally existential threats to your business.

The breakdown

Here's a quick roundup of all the things gone wrong:

  • Missed opportunities for exclusions allowed by law.
  • City of San Diego Cannabis Business Tax applied to the wrong amount.
  • California State and local sales taxes applied to the wrong amount.
The big problem is that these three mistakes build on each other, making each miscalculation far worse that it would be on it's own.

Here's just how far off the rails this went, even though the totals seemed relatively close:

  • You collected $3.47 for the city business tax when you should have collected $2.80 for a difference of 67 cents.
  • You collected $3.12 for sales tax instead of the actual amount of $3.34 for a difference of 22 cents.
  • You charged your customer a total of $46.84 but should have only charged $46.39. There's that 45 cents.

That's 24% more than you should have collected from your customer for the local cannabis business tax alone.

Even though the total for the order is just 45 cents, overall the order was off by 89 cents. It just worked out that you both overcollected and undercollected at the same time.

Project that out to $100,000 in sales (assuming $35 per sale) and you're looking at $1,914 out of your customers' pockets in city tax and $628 out of yours in sales tax.

Take it to $1,000,000 and it's $19,140 in city tax and $6,280 in sales tax!

It adds up quickly and that's not even including penalties and interest, some of which are as high as 50%. Worse still, you have to make up the difference for the sales tax you didn't collect from your customer. That's coming straight out of your bottom line.

But perhaps most tragic, you also cost your customer more.

This is all 100% avoidable if you know what you're doing. It's complicated, but not impossible. Better yet, let go of all this madness and let someone else worry about it — like us.

So what exactly went wrong?

So, let's take each of the mistakes one by one.

First, there were exclusions allowed in the city code's definition of gross receipts. Chapter 3, Article 4, Division 1, Section 34.0103 says that San Diego allows the following to be excluded:

Any tax required by law to be included in or added to the purchase price and collected from the consumer or purchase.

That means you can deduct the California Cannabis Excise Tax from your gross receipts. So the 8% city cannabis tax only gets applied to the item price itself.

Pro Tip
California allows you to include the excise tax in your price if you want to. So it's easy to miss, but even if you do include the CET as part of your price you can still deduct it. It's just a little complicated.

So, in this case, instead of applying the 8% tax to $40.25 ($35 x 15% CET) you only had to use the base price of $35. That's where that extra 42 cents came from.

Now let's go back to the bad example for a moment. You'll notice that the San Diego Business Tax is applied last there? This is wrong for a few reasons.

First off, we already talked about the fact that the gross receipts definition in San Diego allows you to exclude any other taxes required by law. Well, sales tax is required by law just like the cannabis excise tax. So the business tax should be calculated without including sales tax. In the wrong example, it's clearly included.

But there's another problem.

Remember how you got to exclude the Cannabis Excise Tax from the city tax calculation? That kept you from paying tax on another tax. The state sings a different tune when it comes to sales tax.

They tax taxes. Yeah, read that again, it's not a typo. They tax taxes. It's called compounding. And, of course, there's another catch. They only require compounding if you itemize the city tax on your receipt. Here's what the CDTFA has to say about that:

"If you add a separate amount to your customers' invoices or receipts to cover your cannabis business tax, sales tax applies to the business tax amount."

For the record, it's not just the state. Some cities do this too — Los Angeles for example. We'll walk through LA in Part 3 of this series. This one of the reasons it's so important to know all the rules involved in these calculations. Get just one wrong and it can throw everything else off too.

So we should apply the combined state and local sales tax rate of 7.75% to the subtotal including the city business tax.

We're not done yet.

The sales tax also applies to the Cannabis Excise Tax.

That means you have to add the excise tax and the city business tax before you apply the sales tax. That's what you see as the "Subtotal" in the correct example. So there you have it: Compounding, ladies and gentlemen.

The good news is that you now know how to do this right. The bad news is that you're probably not currently doing it this way if you've just followed the dozens of blog posts in the wild. We've seen a lot of CPAs getting this wrong, too. So don't just assume that you're doing this right because you have a CPA.

That's California retail cannabis taxes done right in 2020 — in San Diego. In part two of this series we'll cover how the Non-arm's Length classification complicates this even further.

Don't go this alone. Pact offers a variety of products with one aim: to let you focus on your business, not taxes. If your Point of Sale system has you configuring and managing your tax rates yourself using complicated tables and compound tax ordering rules, insist they level up and power their tax lookups by Pact.

Cannabis Tax Rate Lookup (It's free!)

For Retailers

Manage and file accurate and audit-ready state and local sales tax, cannabis business tax, and state excise tax reports automatically with AutoReturns, our easy to use web application.
POS on a desk