Does Shopify collect and remit sales tax? It collects, and new stores file their own
In September 2026 a merchant moving a store from Magento to Shopify asked the Shopify Community, “Are we not thinking about it correctly and should just use the Shopify tax solution?”, a week after writing that Avalara’s account of the move was “it’s an implementation project and everything needs to get set up and will cost us thousands of dollars.” As of 1 October 2026, Shopify collects US sales tax at checkout but does not file or pay it for a store that is not already enrolled in its automated filing, which Shopify’s help page says “is closed to new enrollment.” The one exception is orders placed in the Shop app, where Shopify files and pays the tax itself and takes it out of your payout. So a store moving to Shopify now is not choosing a tax rate engine, it is choosing who files. Shopify Tax plus a filing service charges by the order and by the return. Avalara, which has published its prices since August 2026, charges by the state with the filing included. In the worked example below, a $500,000 store in two states pays less on Shopify Tax plus a filer, and a $2,000,000 store in four states pays less on Avalara, filing monthly or quarterly.
This describes Shopify’s and Avalara’s rules and prices as of 1 October 2026, from help.shopify.com, shopify.com/tax, shopify.dev, Avalara’s pricing pages and Knowledge Center, the Streamlined Sales Tax Governing Board and the state tax authorities named below. Where two pages disagree, the post says so.
Does Shopify collect and remit sales tax?
It collects. For your own checkout it does not remit. Shopify Tax works out the tax by street address and charges it to the customer, and Shopify’s help page says “Shopify doesn’t remit or file your taxes for you, unless you use Shopify Tax and set up automated filing.” That filing “is closed to new enrollment.” For Shop app and Shop website orders, Shopify itself has collected, filed and paid the tax since 1 January 2025.
Three words have set meanings here. To collect is to charge the tax at checkout. To file is to send a state its return, the form that reports what you sold there and what tax you owe. To remit is to pay the state. Shopify collects for every store on Shopify Tax. Who files and remits depends on where the order was placed.
| Orders | Works out the tax | Collects it | Files the return | Pays the state |
|---|---|---|---|---|
| Your own checkout, on Shopify Tax, store not enrolled in automated filing | Shopify | Shopify, at checkout | You, or a service you hire | You |
| Your own checkout, store already enrolled in automated filing | Shopify | Shopify | Shopify, $75 a return, $50 on Plus | Shopify |
| Shop app and Shop website orders, since 1 January 2025 | Shopify | Shopify | Shopify, under SC Commerce Services Inc. | Shopify, taken out of your payout as “Marketplace sales tax” |
| Amazon, Etsy and TikTok orders | The marketplace | The marketplace | The marketplace | The marketplace |
| Facebook and Instagram orders since 26 August 2025, which finish on your own checkout | Shopify | Shopify, at checkout | You, or a service you hire | You |
The Shop app row is where most pages get it wrong. Shopify’s page says “As of January 1, 2025, the Shop channel automatically collects, remits, and files taxes for all orders shipping to or within the United States.” Eight of the 15 pages we read from Google’s first page for this question and its rewordings say Shopify does not remit, which has been wrong for those orders since that date. The trap runs the other way too. Shop Pay on your own checkout is not the Shop channel, in Shopify’s words “Orders placed using Shop Pay on your online store checkout are excluded from these tax calculations. This only applies to orders placed directly in the Shop app and Shop Website.” A marketplace facilitator, the term the states use, is a platform that collects and pays the tax itself on the sales it hosts, as Amazon, Etsy and TikTok do. Meta stopped being one for orders created from 26 August 2025, and those orders now finish on your own checkout.
Rooftop accuracy, which the asker wanted, is Shopify’s term for “taxes are calculated precisely according to street address, rather than being limited to ZIP codes”, and Shopify Tax has it on every plan. Filing per state, the asker’s other want, Shopify no longer sells to a new store. Its own page says “You can use a third-party service available on the Shopify App Store to manage registration and filing. In the future, we may expand our offering to provide these services as well.”
A store located in the UK can use Shopify Tax for its US sales, which Shopify’s changelog announced in November 2023, but it gets no US sales tax report, which needs a store located in the US, and no automated filing. Nexus, the tie to a state that obliges you to register and collect there, comes from a physical presence or from enough sales into the state, and Shopify’s page says “Economic nexus rules apply to all merchants with customers in the United States, whether or not you have physical nexus there. This includes both US and non-US merchants.” Which fee rate a UK store pays on its US orders is not clear on Shopify’s pages.
Does Shopify report sales tax to the states?
Not for your own sales, unless your store was enrolled in automated filing before it closed. For Shop app orders the tax “is reported under SC Commerce Services Inc.” What Shopify does send, to the IRS and to some states, is Form 1099-K, and that reports the payments you received through Shopify Payments, not the sales tax you owe.
Shopify’s page says US law requires a payment settlement entity such as Shopify Payments to file the form for merchants over the annual thresholds, that it “reports the gross amount of payments that you received through Shopify Payments during the year”, and “Where applicable, PSEs must also report to state revenue authorities.” For tax year 2025 the IRS threshold was more than $20,000 processed and more than 200 transactions, and some states set lower ones, Arkansas at $2,500. None of that is a sales tax return, and none of it files one for you. Why that gross figure rarely matches your books, and which year a late December sale lands in, is the subject of post 06.
How much does Shopify Tax cost?
Nothing on your first $100,000 of sales, then 0.35% of each order going to a state where you collect tax, 0.25% on Shopify Plus, and never more than 99 cents an order. On a $100 order that is 35 cents, or 25 cents on Plus. Shopify’s own example is 11 cents on a $30 t-shirt, 8 cents on Plus.
It goes on your Shopify invoice, not the customer’s, one more thing Shopify takes per sale on top of the payment fees in post 03. What changed in May 2026 is what the $100,000 means. Shopify’s pricing page says “For stores that were created before May 13, 2026, Shopify Tax is free until you reach an annual threshold of sales. For stores that were created on or after May 13, 2026, Shopify Tax is free until you reach a lifetime threshold of sales.” A store leaving Magento now is a new store. The $100,000 counts every sale the store makes, to any country, through any channel connected to Shopify, Shop and point of sale among them, gift cards included, with the taxes and shipping on them.
| Store created before 13 May 2026 | Store created on or after 13 May 2026 | |
|---|---|---|
| Free allowance | $100,000 of sales each year | $100,000 of sales, once |
| Fee after that | 0.35% of each order to a state where you collect, 0.25% on Plus | The same |
| Most per order | 99 cents | 99 cents |
| Most per year | $5,000 per region | None listed on the pricing page or on shopify.com/tax |
Shopify’s pages leave two things open. Its billing page still says “You won’t be charged more than 5,000 in your store’s billing currency per year” without splitting old stores from new, so whether a new store has any yearly cap is a conflict between two Shopify pages, and this post does not claim there is none. And what the percentage is charged on, the item price or the whole order with shipping and tax, is not stated on the current pages. Shopify’s one example, 11 cents on a $30 t-shirt, is 0.35% of $30 rounded up, and would be 11 cents on a base that included a typical sales tax too, so it settles nothing. The fee applies to orders going to states where you have collection switched on, exempt items included, and not to orders going anywhere else, so what you pay depends on how much of your sales goes to the states you collect in.
How much does Avalara for Shopify cost?
Since 19 August 2026 Avalara publishes a price for businesses under $50 million a year. Avalara Select is $799 a state a year, or $79 a state a month, for calculation and filing together, with a minimum of three states. A version with Streamlined Sales Tax services is $699 a state a year with no minimum. Shopify charges nothing to connect it, and while Avalara calculates you pay no Shopify Tax fee.
| Avalara’s published plans | For | Price | What it covers |
|---|---|---|---|
| Core Compliance | Annual revenue under $50 million | $799 a state a year, or $79 a state a month, three states minimum per filing entity | Calculation, filing and paying the states, notice handling, nexus monitoring in all 50 states, and a record of exempt customers |
| Core Compliance plus SST Services | Annual revenue under $50 million | $699 a state a year, or $69 a state a month, no minimum | The same, plus Streamlined Sales Tax services |
| Custom | Annual revenue of $50 million and above | Not published | The same, plus any of Avalara’s other integrations |
Each published plan has one cap of 200,000 transactions across your whole US volume. Buying one goes through a sales form, not a checkout. Avalara’s pricing page showed no price for calculation or filing as of a 23 July 2026 archive capture, so an Avalara figure on a page older than that is not a list price.
The price leaves four things out. Standard setup is included, and Avalara says “Plenty of customers configure everything themselves and go live without ever talking to us.” Its Guided Implementation is “a flat one-time fee” whose amount it does not publish. Exemption certificates, the documents a tax-exempt customer such as a reseller gives you so you can sell to them without charging tax, need a separate Avalara Exemption Certificate Management subscription for the Shopify certificate features. Registering in a new state is $403 a location. And the Shopify app needs an “Avalara for Shopify” entitlement on the account. Avalara lists Shopify among the systems both Select plans support, without saying whether that includes the entitlement.
Streamlined Sales Tax is an agreement among 24 states, 23 full members and Tennessee. If your only tie to one of them is your sales into it, the Governing Board’s page says, the state pays an approved provider to calculate, file and pay for you. Five providers are approved, Avalara, TaxCloud, Sovos, AccurateTax and Avior. Shopify’s own automated filing “doesn’t support Streamlined Sales Tax (SST).”
The merchant who asked was told the move “will cost us thousands of dollars.” Avalara’s published price for three states is $2,397 a year, and Guided Implementation, if you buy it, is a separate fee it has not published. Whether an existing contract, such as one signed for Magento, can move to Select, Avalara’s pages do not say, and Adobe Commerce is not on Select’s list of systems.
Shopify Tax or Avalara, which costs less?
It depends on the store’s size and how many states it files in, because Shopify Tax charges by the order, a filing service by the return, and Avalara Select by the state with the filing included. At list prices, a $500,000 store in two states pays $950 a year filing quarterly, or $2,150 monthly, on Shopify Tax plus a filer, against $2,397 on Avalara. A $2,000,000 store in four states pays $3,300 or $5,700 against $3,196.
Three US stores, all created on Shopify after 13 May 2026, all past their first $100,000 of lifetime sales, all selling $100 orders, so the 99-cent cap never applies. Illustrative figures, list prices only, with Numeral’s published $75 a return as the filer. The share of orders going to the states where each store collects is an assumption, and it is the same on both routes, since Shopify Tax charges only on orders to those states and Avalara charges only for those states. Figures are for one year.
| Store A | Store B | Store C | |
|---|---|---|---|
| Sales a year | $500,000 | $2,000,000 | $10,000,000 |
| Orders a year, at $100 each | 5,000 | 20,000 | 100,000 |
| Shopify plan, and Shopify Tax’s rate | Grow, 0.35% | Advanced, 0.35% | Plus, 0.25% |
| States it collects in | 2 | 4 | 8 |
| Share of orders going to those states, assumed | 20% | 30% | 50% |
| Orders charged the Shopify Tax fee | 1,000 | 6,000 | 50,000 |
| Shopify Tax’s fee per order | $0.35 | $0.35 | $0.25 |
| Shopify Tax a year | $350 | $2,100 | $12,500 |
| Returns a year, filing quarterly or monthly | 8 or 24 | 16 or 48 | 32 or 96 |
| Filing at Numeral’s $75 a return, quarterly or monthly | $600 or $1,800 | $1,200 or $3,600 | $2,400 or $7,200 |
| Shopify Tax plus a filer, filing quarterly | $950 | $3,300 | $14,900 |
| Shopify Tax plus a filer, filing monthly | $2,150 | $5,700 | $19,700 |
| Avalara Select states billed | 3, the minimum | 4 | 8 |
| Avalara Select at $799 a state | $2,397 | $3,196 | $6,392 |
Each state sets the filing frequency, so the table shows both. Florida moves a seller to monthly returns once it pays more than $1,000 of sales tax a year, and reviews each account yearly. Illinois may do so once the average monthly liability passes $200. Georgia’s page says “For most taxpayers, sales tax returns are due every month”. New York keeps all three stores quarterly, below $300,000 of taxable sales a quarter. Zero returns still count. California’s page says “A filing is required on or before the due date, even if there are no sales to report”, and New York, Pennsylvania and Ohio say the same. At Numeral’s price the order holds either way. Store A pays less on Shopify Tax plus a filer, $950 or $2,150 against $2,397. Stores B and C pay less on Avalara, $3,300 or $5,700 against $3,196, and $14,900 or $19,700 against $6,392.
Three more cases. Store A in its first year pays $280 rather than $350, because its first $100,000 of sales, 1,000 orders of which 200 go to its two states, are free. Store C under the old $5,000 yearly cap, if it applied, would pay $12,200 filing monthly against $6,392, the same order. Store C passes $25,000,000 of lifetime sales in its third year, from which Shopify’s pricing page says to contact its Customer Success Manager for pricing.
Neither column includes Avalara’s Guided Implementation, an unpublished flat fee, exemption certificate management, a separate subscription, or new registrations, $150 a state at Numeral and $403 a location at Avalara. Neither includes Streamlined Sales Tax states, where a remote seller can be filed free on either route, by TaxCloud beside Shopify Tax, or by Avalara. Other filers publish their own prices.
| Filing service, its own published price | Per return | Also |
|---|---|---|
| Numeral | $75 a return | $150 to register each state, no setup fee |
| TaxCloud | $45 a return pay as you go, or from $39 a month for one return | An orders plan from $19 a month, plus a $60 surcharge on Colorado returns and $30 on Louisiana |
| TaxJar | $50 a filing on Starter, $55 on Professional | On top of the subscription, from $39 or $99 a month |
| Avalara, filing only, through its Extractor for Shopify | Not published | US only, and tax is set to zero on manual refunds |
| Shopify’s automated filing, enrolled stores only | $75 a return, $50 on Plus | Closed to new stores |
Where the lines cross, at 0.35% and $75 a return, a store in two states pays less on Avalara’s $2,397 once its sales to those states pass about $513,000 a year filing quarterly, or about $171,000 filing monthly. A cheaper filer moves both lines, so run it with your own filer’s price and your own states. Past the crossing, ask Avalara for Select pricing before accepting a custom quote. A remote seller in Streamlined states files those states free either way.
Is moving Avalara from Magento to Shopify a big project?
Less than a rebuild, and more than the forum replies say. Your Avalara account keeps its company profile, nexus settings, filing calendars and stored exemption certificates, because those live in Avalara, not in Magento. Three things have to be set up again, the connector entitlement, the product tax codes and the link from each certificate to its customer, and any history you import into Shopify can be counted twice.
| Stays in your Avalara account | Has to be set up again, or watched |
|---|---|
| Company profile, nexus and tax profile, which the Adobe Commerce extension reads from Avalara | The “Avalara for Shopify” entitlement, which the install checks for and which the account may not have |
| Filing calendars | Product tax codes. Magento keeps them on its own product tax classes and sends the SKU as the item code. Shopify reads them from a metafield and sends the product or variant ID. Avalara’s automatic transfer runs only from the old Shopify Plus app |
| Exemption certificates, stored in Avalara’s certificate management | The link from certificate to customer. Each platform generates its own customer code, and Avalara links certificates to the Shopify-generated ID by default |
| Historical orders imported into Shopify go to Avalara by default and can be counted twice. Tag them import or imported |
The Shopify app connects by signing in with an Avalara administrator login, not with the account ID and licence key Magento’s extension uses, and its default is to record an order in Avalara at fulfilment, “the default setting will be on order fulfillment”. A product with no code in Shopify takes the code mapped in Avalara, and one mapped in neither falls to Avalara’s default code, P0000000 or U0000000. Avalara’s Knowledge Center gives no time for a move like this, and the single 45-minute call its setup post describes is a first setup, not a migration.
How do you check what Shopify collected against what was filed?
Sum the tax on every order’s line items and shipping by destination state and month, leave out the orders whose tax the Shop channel already pays, net off refunds in the month they were made, and set each state’s month against the return that was filed for it. Shopify’s US sales tax report shows it on screen, and the API gives it as data.
This is the part to hand to whoever runs your data. Skip to the books section if that is not you.
Where the numbers live
The United States sales tax report shows sales and tax by destination state, by tax jurisdiction and line by line. Its line view carries a “Filed by channel” column, which marks Shop app tax. It “displays a maximum of 1,000 rows”, a CSV from it holds “a maximum amount of one month of data”, and for longer ranges Shopify points you to the Taxes finance report. Marketplace orders such as Amazon’s are left out of the state and jurisdiction views and hidden by default in the line view. Shopify’s own caveat is that the tax due on a return “should generally equal” the tax collected, with differences in states that levy gross receipts taxes or allow filing discounts.
The same data through the API
In the GraphQL Admin API every TaxLine carries channelLiable, “Whether the channel that submitted the tax line is liable for remitting. A value of null indicates unknown liability for this tax line.” Order.currentTaxLines is the tax after returns. LineItem.taxLines includes “taxes charged for refunded and removed quantities”, and RefundLineItem.totalTaxSet is the tax on a refunded line. Airbyte’s Shopify orders stream lands the tax lines and refunds nested in one row per order, channel_liable included, and the after-returns total as current_total_tax only. Fivetran’s dbt package does not list channel_liable on its tax line tables, and whether Fivetran syncs it we could not verify.
The traps
Shop app tax comes out of your payout as a line typed “Marketplace sales tax”, on the ledger post 02 ties to its orders, and it must not be filed again. Historical orders imported into Shopify are sent to a tax app by default. A custom refund amount leaves the tax in the report, “the tax isn’t refunded and remains included in the United States sales tax report.” The tax on a refunded shipping charge is not in Airbyte’s orders data. Since API version 2024-10 Shopify puts refunded shipping in refund_shipping_lines, which Airbyte’s schema does not declare, and its tax is taxAmountSet on RefundShippingLine in the GraphQL API, so check one refunded shipping charge before trusting the refunded column. Orders with no shipping address, local pickup among them, are left out below, so add those by their pickup location. Changing an order’s shipping address recalculates its tax only while the order is unfulfilled. Avalara’s Extractor, the filing-only route, sets tax to zero on manual refunds. And the query below has been run against the example and not against a live store.
A worked example
Six orders on a US store, to Florida and New York, in August and September 2026. One was placed in the Shop app, two carry a taxed shipping line, and one was refunded in the month after the sale. Invented orders, illustrative rates. The data sits in one SQLite table, orders, shaped like Airbyte’s orders stream, with the nested fields held as JSON text.
The query keeps orders that are not tests, ship to the US, and are not cancelled without a refund record, since nothing was collected on those. It leaves out any order with a tax line marked channel_liable true, at the order level or on a line item, so null, which Shopify defines as unknown, stays in. It sums the tax on line items and shipping lines by state and sale month, puts each refund’s tax in the month of the refund, and nets the two. On another warehouse, swap json_each and json_extract for its own JSON functions, compare test and channel_liable as booleans, and take the month from the timestamp in the store’s own time zone, since a warehouse that stores UTC shifts late orders across a month boundary.
with kept as (
select
o.id,
substr(o.created_at, 1, 7) as sale_month,
json_extract(o.shipping_address, '$.province_code') as state,
o.line_items,
o.shipping_lines,
o.refunds
from orders o
where coalesce(o.test, 0) = 0
and json_extract(o.shipping_address, '$.country_code') = 'US'
and (o.cancelled_at is null or coalesce(json_array_length(o.refunds), 0) > 0)
and not exists (
select 1
from json_each(o.tax_lines) t
where json_extract(t.value, '$.channel_liable') = 1
)
and not exists (
select 1
from json_each(o.line_items) li, json_each(li.value, '$.tax_lines') t
where json_extract(t.value, '$.channel_liable') = 1
)
),
collected as (
select k.state, k.sale_month as month, json_extract(t.value, '$.price') as tax
from kept k, json_each(k.line_items) li, json_each(li.value, '$.tax_lines') t
union all
select k.state, k.sale_month, json_extract(t.value, '$.price')
from kept k, json_each(k.shipping_lines) sl, json_each(sl.value, '$.tax_lines') t
),
refunded as (
select k.state, substr(json_extract(r.value, '$.created_at'), 1, 7) as month,
json_extract(rl.value, '$.total_tax') as tax
from kept k, json_each(k.refunds) r, json_each(r.value, '$.refund_line_items') rl
),
movement as (
select state, month, tax as collected, 0 as refunded from collected
union all
select state, month, 0, tax from refunded
)
select
state,
month,
round(sum(collected), 2) as collected,
round(sum(refunded), 2) as refunded,
round(sum(collected) - sum(refunded), 2) as net
from movement
group by state, month
order by state, month;
Against the example it returns this.
| state | month | collected | refunded | net |
|---|---|---|---|---|
| FL | 2026-08 | $9.42 | $0.00 | $9.42 |
| FL | 2026-09 | $6.42 | $0.00 | $6.42 |
| NY | 2026-08 | $8.00 | $0.00 | $8.00 |
| NY | 2026-09 | $8.80 | $4.00 | $4.80 |
The Shop app order’s $5.00 of tax is in no row, because Shopify pays it. The $4.00 refunded on the August New York sale lands in September, the month the money went back. Keeping that check running every month is the kind of back office work our ERP Automation covers.
How should sales tax sit in your books?
As a liability you owe the state, normally, and not as revenue. Under US GAAP a company may elect to leave all such taxes out of revenue. ASC 606-10-32-2A says “An entity may make an accounting policy election to exclude from the measurement of the transaction price all taxes assessed by a governmental authority”. Shop app tax that Shopify files runs through the same liability account and nets to zero, in the two connector docs we read.
IFRS 15 has no such election. Its paragraph 47 defines the transaction price as “excluding amounts collected on behalf of third parties (for example, some sales taxes)”, as an IASB staff paper puts it. NetSuite files a sales tax control account under other current liabilities. Intuit’s connector doc says the QuickBooks Online Connector charges Shop app tax to the Sales Tax Payable liability account at the sale and adjusts the same account when the payout arrives with the tax withheld, and A2X, a vendor, books the same two entries to one liability account so they “balance out to $0.” One thing does not net to zero. California’s marketplace guide still wants facilitated sales on your return, reported in total sales and then taken as a deduction, and Shopify’s considerations page lists 24 jurisdictions that might require marketplace sales on your returns.
So the decision is who files. Size and states decide the cheaper route, and whichever you choose, set what Shopify collected against what was filed every month, with the Shop app’s tax counted once. That check is data moving between Shopify, a filing service and your books on a schedule, which is our ERP Automation work.
FAQ
Does Shopify collect and remit sales tax? It collects at checkout. It remits only for Shop app and Shop website orders, and for stores enrolled in its automated filing before it closed to new stores.
Does Shopify report sales tax to the states? Not for your own sales unless you were enrolled. It files Form 1099-K, which reports the payments you received, not the sales tax you owe.
How much does Shopify Tax cost? Free on the first $100,000 of sales, then 0.35% of each order to a state where you collect, 0.25% on Plus, at most 99 cents an order. 35 cents on a $100 order. For stores created since 13 May 2026 the $100,000 is a lifetime allowance.
How much does Avalara for Shopify cost? $799 a state a year with a three-state minimum, or $699 a state with Streamlined Sales Tax services, for businesses under $50 million, calculation and filing included. Standard setup is included, and guided setup is a flat fee Avalara has not published.
Shopify Tax or Avalara, which costs less? It depends on your states and filing frequency. At $75 a return, a two-state store pays less on Avalara once sales to those states pass about $513,000 a year filing quarterly, or about $171,000 monthly.
Is moving Avalara from Magento to Shopify a big project? Nexus, filing calendars, company profile and certificates stay in Avalara. The connector entitlement, tax codes, certificate links and imported history have to be done again.
How do you check what Shopify collected against what was filed? Sum tax by destination state and month from the order tax lines, drop the orders the channel pays for, net refunds in the refund month, and compare with each return.
How should sales tax sit in your books? As a liability, normally, not revenue. Shop app tax runs through the same liability account and nets to zero.
Written by Stavros Symeonidis, founding engineer at otum.
Found this useful?
Add otum.io as a preferred source, and Google is more likely to show you our posts.