The Sales-Tax Nexus Trap Every Growing Shopify Store Hits
Picture the good problem to have. Your Shopify store is finally taking off. Orders are coming in from everywhere — California, Texas, New York, a steady trickle from twenty other states you've never visited. The dashboard is green. You're shipping. You're winning.
And somewhere in there, quietly, you crossed a line that nobody told you about — and started owing sales tax in a state where you have no office, no warehouse, no employee, no anything.
Welcome to economic nexus. It's the trap almost every growing store walks straight into, because nothing in the checkout flow ever says a word about it.
The catch nobody flags
Before 2018, the rule was simple: you collected sales tax in states where you had a physical presence. No office in Texas? Not your problem.
Then South Dakota v. Wayfair happened. The Supreme Court ruled that a state can require you to collect sales tax once your sales there cross an economic threshold — with zero physical presence required. Sell enough into a state, and you're on the hook, full stop.
"Enough" is usually $100,000 in sales OR 200 transactions in a year. Hit either one, and you have nexus. From that point you're supposed to register, collect tax on every order into that state, and remit it.
Here's the part that stings: if you cross the threshold and don't collect, the tax doesn't disappear. It becomes your liability. You owe it out of your own margin, plus penalties and interest, for every order you should have been collecting on. A store doing well in fifteen states can rack up a five-figure surprise without a single warning popping up at checkout.
Shopify is brilliant at what it does — it takes the order, runs the card, calculates a total, and gets the package moving. That's the engine. But the engine's job is to complete the sale, not to track which of fifty states you've quietly triggered an obligation in. Those are two genuinely different jobs.
Where it gets sneaky: the AND/OR trap
If every state used the same "$100k OR 200 transactions" rule, you could almost eyeball it. They don't.
Take New York. Its threshold isn't OR — it's AND. You need more than $500,000 in sales AND 100+ transactions before you have nexus. So a store doing $520,000 across 90 sales in New York has not triggered nexus yet, because it failed the transaction count. Flip it — $520k across 150 sales — and now you have.
This is exactly the bit stores get wrong, in both directions. Some panic and over-register in a state they haven't actually triggered. Others assume a high revenue number automatically means nexus and get blindsided by a state that quietly uses a lower bar. The thresholds vary, the transaction counts vary, and crucially the logic operator varies — OR in most places, AND in a few, transaction count dropped entirely in others. Reading "$100k" and moving on is how you get it wrong.
Getting that AND/OR logic right, state by state, is precisely the kind of thing a human skims past and a machine should never have to guess at.
Shopify takes the order. We tell you the obligation.
This is the clean split we keep coming back to. Shopify owns the transaction — orders, totals, where the money came from. OpenAccountants owns the obligation — the per-state thresholds, the physical-vs-economic distinction, and the AND/OR logic — as rules that AI agents and apps call over an MCP. Every rule is signed off by a named, licensed accountant. For US sales tax, that's Amir Pelinkovic, our US lead — a real person who stands behind the numbers, not a scraped table that went stale two budget cycles ago.
To make it concrete, we built a small open-source demo: shopify-salestax-demo. It reads a store's sales-by-state and checks each one against the verified nexus rules, then sorts your states into buckets that actually mean something:
TX $142,000 / 410 sales → NEXUS CROSSED, not collecting ⚠
NY $520,000 / 90 sales → safe (fails the AND on tx count)
FL $ 88,000 / 180 sales → approaching threshold
CA $310,000 / 600 sales → registered, collecting ✓
No rule lives in the demo's code. It asks the MCP, "given these sales, what's the obligation in each state?" and the verified rules answer. When a state changes its threshold, the rule changes once, in one place — and your check is right the next time it runs, with no redeploy and no scramble.
The point isn't to scare you off growing. It's the opposite: grow loudly, sell into every state you can, and let the boring obligation layer keep a quiet running tally so the line you cross is one you chose to cross.
If you're running a store — or building tooling on top of Shopify — clone the demo, point it at some sales data, and watch it flag the states you didn't know you'd triggered. Then connect the OpenAccountants MCP at openaccountants.com and put accountant-verified nexus rules behind your own product. Same orders, far fewer surprises.