LUCENTCOMMERCEGET A FREE STORE AUDITFREE AUDIT

TAX · INTERNATIONAL · INTEGRATIONS · 9 DECEMBER 2025 · 10 MIN READ

Tax across states, countries and marketplaces

Three different regimes, one order table. The engineering problem is not calculating the tax — it is proving afterwards which registration you collected it under.

An order moving from storefront to ERP through a queue

Sales tax is decided by where the customer is, not where you are, and you only have to collect it where you are registered. That produces three regimes running at once: US sales tax, which is state-by-state and triggered by physical or economic nexus; VAT in the EU and UK, charged at the destination rate with schemes like OSS and IOSS to avoid registering in every country; and marketplace sales, where the platform collects and remits instead of you. The calculation is the easy part — Shopify and every tax engine do it. The part that goes wrong is the record afterwards: which registration each order was collected under, and whether your accounting system can still tell you that a year later.

IN SHORT

  • You charge tax based on the customer’s location, and you are only obliged to collect where you have a registration or a nexus that requires one.
  • US economic nexus thresholds are set per state — Shopify’s own reference shows them commonly falling between $100,000 and $500,000 of sales in a period, with different measurement windows and sometimes a transaction count.
  • EU merchants selling cross-border above €10,000 a year across other member states charge the destination rate, and OSS lets them file one return instead of registering in each country.
  • Non-EU sellers can use IOSS to collect VAT at checkout on consignments of €150 or less; the UK equivalent threshold is £135, above which normal import VAT and customs rules apply.
  • On marketplace sales the platform collects, remits and files — Shopify states this explicitly for its own Shop channel, and excludes marketplace sales from the data it uses to assess your nexus.
  • Shopify does not file or remit your returns unless you use Shopify Tax with automated filing switched on.
  • None of this is tax advice, and the difference between a developer’s reading of a threshold and an accountant’s is the difference between a correct return and an expensive one.

One idea underneath all of it

Every rule in this post is a variation on the same sentence: tax follows the buyer, and you can only collect where you are registered. Hold those two clauses together and most of the confusion resolves.

The first clause is why a single price cannot be right everywhere. A customer in Oregon pays no state sales tax; a customer twenty miles away in Washington does, at a rate that depends on their address rather than their state. A customer in Ireland pays Irish VAT; the same order to Germany is German VAT. The order is identical and the tax is not.

The second clause is why you cannot simply "charge tax everywhere to be safe". Collecting a tax you are not registered to collect is not caution, it is money you have taken from a customer and have no mechanism to remit. It is a worse position than under-collecting, because under-collection is a debt and over-collection is a liability with a customer’s name on it.

So the operational question is never "what is the rate". It is "where am I registered, where should I be, and can I prove which of those each order belongs to".

The United States: fifty answers and a threshold in each

There is no national sales tax in the US. There are state taxes, and beneath them county, city and district rates, which is why a correct US rate is calculated from a full address rather than a postcode.

Whether you must collect at all comes down to nexus — a connection to the state sufficient to create an obligation. Physical nexus is the old rule: an office, a warehouse, staff, inventory. Note the last one, because it catches people: Shopify’s documentation points out that using a third-party logistics provider can create physical nexus in the states where that provider has fulfilment centres. You did not choose the state. You still have the nexus.

Economic nexus is the newer rule, which followed the Supreme Court’s 2018 decision in *South Dakota v. Wayfair* removing the physical-presence requirement. Sell enough into a state and you must register there regardless of where you sit. Shopify’s own US tax reference shows thresholds commonly falling somewhere between $100,000 and $500,000 of sales in a defined period, but the specifics genuinely differ per state — the amount, the measurement window, whether a transaction count also triggers it, and what counts towards the total. Do not generalise from one state to another, and do not take a figure from a blog post, including this one. Shopify publishes the current per-state detail in its tax reference and maintains tax liability insights in the admin that tell you when you are approaching a threshold.

The second US-specific trap is product taxability. Clothing, food and digital goods are taxed differently by state, and the mechanism for getting this right on Shopify is product categorisation — assigning products to a tax category so the rate reflects what the item is, not just where it is going. A store that has never touched product categories is charging the general rate on everything, which will be wrong in both directions.

The EU and the UK: destination VAT, with schemes to make it bearable

VAT is simpler in structure and stricter in practice. The destination country’s rate applies, invoicing requirements are real, and the registration question has been given a formal answer instead of being left to case law.

Selling from inside the EU. There is a single EU-wide distance selling threshold of €10,000 a year, measured across sales to all other member states combined. Below it you may charge your home rate. Above it you charge the destination rate — and rather than registering for VAT in each country you sell to, the One-Stop Shop scheme lets you register once and file a single return covering cross-border sales. One caveat worth internalising: an OSS registration covers cross-border orders only, not domestic sales in that country, which still need a local registration.

Selling into the EU from outside. The Import One-Stop Shop applies to consignments valued at €150 or less. Shopify’s description is the clearest version: with IOSS "you can choose to collect VAT on orders equal to or less than €150 EUR at checkout so that your customers don’t pay taxes upon delivery". Above €150, normal import rules apply and the customer meets the bill at the border unless you have arranged delivered-duty-paid shipping.

Selling into the UK from outside. The UK threshold is £135 per consignment. At or below it, HMRC’s guidance is that the seller must "charge and account for VAT at the point of sale" — unless it is a business-to-business sale and the customer has supplied their UK VAT registration number, in which case the reverse charge applies and the buyer accounts for it. Above £135, "normal VAT and customs rules will apply on importation".

That B2B carve-out is worth a line of its own, because it is a checkout requirement disguised as a tax rule. If you sell to UK businesses, the checkout needs somewhere to capture and validate a VAT number, and the order record needs to remember that it was given one.

Marketplaces: someone else collects, and your numbers stop adding up

Sell through a marketplace and the platform generally becomes the collector. Shopify states this plainly for its own Shop channel: the channel "collects, remits, and files taxes" on those orders "independently of your nexus status and store tax settings". The same principle — marketplace facilitator rules — is why Amazon, eBay and others handle tax on the sales they intermediate.

This is good news operationally and bad news for reconciliation, and the second part is the one that causes arguments in January.

Your gross merchandise value now includes orders whose tax you never touched. Shopify excludes marketplace sales from the data it uses to assess your nexus, which is correct and means your platform revenue figure and your nexus figure are deliberately different numbers. Meanwhile your accounting system receives orders from two sources with two tax treatments, and unless the import tags them, nobody downstream can tell which is which.

The fix is boring and has to be decided before the first import, not after the first audit: every order arriving in the accounting system carries a channel identifier and a flag for who collected the tax. It is one field. Retrofitting it across two years of history is a project.

The part that is actually an engineering problem

Calculation is solved. What is not solved, in most of the stores we see, is the data trail behind it. Six things are worth designing deliberately.

  • Tax at line level, not order level. A single order can contain items in different tax categories at different rates. An integration that syncs one tax total per order has already destroyed the information a return needs.
  • The registration each order was collected under. Not just the rate and the jurisdiction — which of your registrations it belongs to. This is the field nobody adds and everybody eventually needs, because OSS, local and IOSS registrations cover different order types.
  • Refunds and partial refunds. Tax on a partial refund is a proportional calculation, and a surprising number of integrations post the refund net and lose the tax component. It reconciles fine until the quarter it does not.
  • Exemption certificates. B2B and resale exemptions are documents with expiry dates that have to be held, matched to a customer, and produced on request. If you have US wholesale customers, this is a system, not a spreadsheet.
  • Currency and rounding. The rate is applied in the presentment currency and the return is filed in another. Decide where rounding happens and make sure exactly one system does it. Two systems rounding independently produce a penny-level drift that grows into a reconciliation nobody can close.
  • Marketplace orders imported without tax lines. They will arrive looking like under-collected orders. Tag them at import so no one spends a week investigating.

When to buy a tax engine, and when not to

The advice most merchants get here is to buy Avalara or Vertex, and for most merchants that advice is premature.

Shopify Tax calculates for the United States, European Union, United Kingdom and Canada, handles product categorisation, offers VAT invoicing and VAT validation at checkout for EU and UK merchants, and surfaces tax liability and nexus tracking in the admin. Its pricing is published on Shopify’s own pricing page — free below an annual threshold of global sales, then a small percentage of US orders with a per-order cap — and you should read that page rather than any third party’s summary of it, because the figures change. For a store with a handful of registrations and no ERP acting as the book of record, that is generally enough, and the money saved is better spent on getting the order data right.

A dedicated engine earns its cost at a specific point, and the signs are unambiguous: you hold registrations in more jurisdictions than a person can track, you need exemption certificate management with expiry handling, you sell through several channels that must roll into one filing, or your ERP — not Shopify — is the system of record and needs the rate at the point the document is created. Any one of those is a real reason. "We are growing" is not.

Be equally sceptical of the reverse. A tax engine does not make you compliant; it makes a correct calculation available. Registrations, filings and the decision about where you have nexus remain yours, and Shopify is explicit that it does not remit or file your taxes unless you use Shopify Tax with automated filing turned on.

What we would do first

Three things, in this order, and none of them requires a project.

First, list your registrations — every jurisdiction, with the type, the effective date and who files it. Most merchants cannot produce this list in under an hour, and producing it is often the moment a gap is found.

Second, check your tax liability insights in the Shopify admin against that list. The gaps in either direction are your backlog: places you are approaching a threshold, and places you registered years ago and still file nil returns for.

Third, check that one order from each regime — a domestic order, a cross-border order and a marketplace order — arrives in your accounting system with its tax broken out and its origin identifiable. If any of the three does not, the reporting problem is already there and is simply not visible yet.

Wiring that trail through Shopify, an ERP and an accounting system is the kind of work our [integration engagements](/services/integrate) exist for, and it is markedly cheaper to design before the second country than to repair after the first audit. One closing caveat, meant seriously: this is an engineer’s account of the mechanics, not tax advice. Thresholds, schemes and rates change, and the person who should confirm your position is an accountant who will put their name to it.

Questions this raises

Do I need to charge sales tax in every US state?

No — only where you have nexus and a registration. Nexus can be physical (an office, staff, or inventory sitting in a third-party fulfilment centre) or economic (selling above a state’s threshold). The thresholds are set per state and differ in amount, measurement period and whether a transaction count also applies; Shopify’s US tax reference shows them commonly between $100,000 and $500,000 of sales, but verify each state individually rather than generalising.

What is the difference between OSS and IOSS?

The One-Stop Shop is for merchants inside the EU selling cross-border to other member states: register once, file one return, charge destination rates. The Import One-Stop Shop is for selling into the EU from outside it, and applies to consignments of €150 or less, letting you collect VAT at checkout so the customer is not billed on delivery. An OSS registration covers cross-border orders only — domestic sales in a country still need a local registration there.

Does Shopify file and remit my sales tax?

Not by default. Shopify calculates tax and gives you liability insights, but its documentation states that it does not remit or file your taxes for you unless you use Shopify Tax with automated filing set up. The exception is marketplace-style sales: Shopify states that its Shop channel collects, remits and files tax on those orders itself, regardless of your own nexus status or tax settings.

What happens with tax on marketplace sales?

The marketplace generally collects and remits under marketplace facilitator rules, so you do not. The practical consequence is a data problem rather than a tax one: your revenue includes orders whose tax you never handled, and Shopify excludes marketplace sales from the data it uses to assess your nexus. Tag those orders with the channel and with who collected the tax at the point they enter your accounting system, or reconciliation becomes guesswork.

What is the £135 UK threshold?

It is the consignment value at which the treatment of goods sold into the UK from overseas changes. At or below £135, HMRC’s guidance is that the seller charges and accounts for VAT at the point of sale — unless it is a B2B sale and the customer supplies a UK VAT registration number, in which case the reverse charge applies. Above £135, normal import VAT and customs rules apply on importation instead.

Do we need a tax engine like Avalara?

Probably not yet. Shopify Tax covers calculation, product categorisation and liability tracking for the US, EU, UK and Canada, which is enough for most stores with a small number of registrations. Buy a dedicated engine when you have more registrations than one person can track, need exemption certificate management, must roll several sales channels into one filing, or run an ERP that is the book of record and needs the rate at document creation. Growth on its own is not a reason.

NEXT STEP

Free store audit

A senior Shopify engineer reviews your storefront, theme performance and checkout, then sends a prioritised list of fixes.