help1
shopify split shippingshopifyshippingcheckoutmulti-location

The Shopify Split Shipping Charge That Doubled a Flat Rate

A merchant watched $8.99 become $17.98 at checkout. The Shopify split shipping investigation ran deeper than the toggle label suggests.

help1 Team
The Shopify Split Shipping Charge That Doubled a Flat Rate

A merchant sent me a screenshot last week. Two $8.99 flat rate lines, one order, one method, one address. Her customer paid $17.98 for shipping and emailed asking for half of it back.

Open Settings > Shipping and delivery in your admin. Count active locations. Then count shipping profiles. If either number is above one, your checkout can do the same thing to the next buyer. The toggle labeled "Split shipping in checkout" is not what stops it.

What I checked first

I opened her admin and went straight for the toggle. Settings > Shipping and delivery, scroll to the section called "Shipping options in checkout," find "Split shipping." It was already on. I switched it off. I asked her to run a test order with the same two products. The $17.98 charge came back.

I switched the toggle back on, because flipping live settings mid-diagnosis is a bad habit, and ran the test again. Same $17.98. Then I spent fifteen minutes assuming the test was cached and the merchant was placing orders against a stale checkout session.

She wasn't. The test was clean. The Shopify split shipping label on that toggle had promised me something it does not deliver.

Why the toggle wasn't it

This part is in the Shopify Community threads if you dig for it, and it is nowhere in the admin UI itself. The split shipping toggle controls what customers see at the checkout. It does not change the backend. When your cart contains items from two fulfillment origins, Shopify has already split the cart into what community members call "sub-carts" before the checkout page renders. Each sub-cart gets its own rate quote. The toggle only decides whether the customer sees two line items or one.

Flipping Shopify split shipping off hides the symptom. It does not stop the backend from quoting shipping twice. On a flat rate of $8.99, both sub-carts return $8.99. Shopify adds them. The customer pays $17.98. With three origins, you get $26.97. One UK merchant I later found in the archives (trulyfare, five store locations) had been watching this problem land across every cross-location order since 2022.

Where the trail went cold

After the toggle, I checked for an app conflict. She had three apps installed that touched shipping in some way: a parcel printer, an insurance widget, and an inventory sync for her supplier catalog. I disabled each in turn, re-ran a test, and watched the $17.98 come back every single time.

I also checked her carrier accounts. One USPS integration, standard flat-rate pricing, nothing unusual. I checked that her products were not accidentally assigned different weights that could trigger weight-tiered rates. They were not. The flat rate was configured correctly, the products were in the correct profile, and the checkout kept adding $8.99 to itself.

At this point I had spent an hour and a half on it. I had the wrong model of what was happening, and no amount of toggling anything inside Settings > Shipping was going to help until I built the right model.

The clue I almost missed

She had told me she had "one warehouse." I had been reading that as "one Shopify location." Those are not the same sentence. In Settings > Locations she had two active locations. The second was named something like "Supplier - Catalog Sync" and had been created automatically by the inventory sync app I had already disabled. The app was off. The location it had created was still live and still counted as a fulfillment origin.

That was the second origin Shopify was quoting rates against. The supplier never actually fulfilled anything. Every physical order shipped out of her one real warehouse. But Shopify did not know that. From the platform's perspective, every order containing any of her 1,400 synced products pulled from a second origin, so every such order got a second shipping rate.

What it actually was

Shopify's rate calculator treats each active fulfillment location as its own independent shipping context. The trigger is product-location assignment, not the physical ship-from address. If a product is stocked at Location A, it goes into the Location A sub-cart. If a second product is stocked at Location B, that one goes into the Location B sub-cart. Each sub-cart gets a rate quote. The totals add.

This is the full Shopify split shipping mechanic, and it is working as designed. A Shopify staff member (Skye_1, February 2023) wrote the sentence out plainly in a community thread: "when using Shipping Profiles the shipping costs are combined. There is no way to avoid this without the use of an app." The language is understated. In practice it means a $8.99 flat rate is not really $8.99 for a customer whose cart crosses a location boundary. It is roughly $8.99 for each location boundary that cart crosses.

There is a second, more irritating variant of the same mechanic. One merchant (kittypig42) hit the double charge with a single active location. The trigger in her case was two shipping profiles. Products assigned to different profiles create the same sub-cart split, with the same rate stacking. If you have one warehouse and still see the double charge, your profiles are doing it to you. I have audited enough stores to say the single-location version shows up more often than merchants expect, because splitting profiles for "fragile items" or "heavy items" feels like good config hygiene until a customer buys from both.

What we ended up doing

Her supplier catalog location was the obvious one to kill. I turned off fulfillment from that location (Settings > Locations > the location > uncheck "Fulfill online orders from this location") and left it live for stock reference. The next test order came back at $8.99. We ran four more and they all held.

The trade-off is that she now has to watch her designated location's stock levels manually, because Shopify's routing will try to pull from the only remaining fulfillment-enabled location whether or not the inventory there matches the sync. For her this is fine. She ships everything from one place anyway. For a merchant who actually does ship from two physical warehouses, the move is not an option.

If you want a second pair of eyes on your location and profile setup before you touch anything, the first 15 minutes with a help1 expert is free and this is one of the faster problems to diagnose on a shared screen. The script I run with merchants is the one I just walked through above: toggle, apps, locations, profiles, in that order.

For stores where consolidating to one location is not realistic, your options line up roughly like this. On a flat rate, the market-driven shipping rollout that happened on October 1 is now the native fix. More on that below. On live carrier rates, you are still looking at either Shopify Plus with a fulfillment constraint function, or one of the apps that have historically patched this: Bespoke Shipping covers price-based and flat rates on Basic, ShipMagic was the long-standing flat-rate option. Verify compatibility with the new shipping system directly with each developer before migrating. The Scripts-based patch that ShipMagic originally relied on died in June, and I would not take any app's "we're ready" at face value without running a test order against your own store. The broader rate-stacking pattern (and what it costs the four most common store shapes) is something I walked through in a separate comparison post on Shopify shipping cost methods if you want the fuller view.

What market-driven shipping changes

Shopify flipped on the new market-driven shipping system on October 1, 2026, six days before I wrote this. It is the first native fix to the flat-rate half of the Shopify split shipping problem since the pattern was first documented in late 2021. The mechanism is simple: within a single shipping option, rates compete rather than add. If your $8.99 flat rate applies to Location A and also applies to Location B, Shopify now charges $8.99 total, not $8.99 twice.

Three caveats, in order of how likely they are to bite you. First, market-driven shipping is opt-in for existing merchants. Nothing changes on your checkout until you migrate, and the forced-migration deadline is July 1, 2027. If you have an active shipping bug, your current configuration is still broken until you act. Second, the fix is flat-rate only. Live carrier rates and third-party app rates still stack per location after migration; Shopify developer Min_Liu confirmed as much on the dev forum in July. Third, product-level conditions in the new system are limited to "all products" or specific collections. Individual products and variants are not supported as condition targets. If you have different flat rates for different individual SKUs that are not separable into collections, the consolidation rule does not help you there.

There is one trap I would watch for during migration. If any shipping app on your store has not updated for the new system, your checkout can silently show "no shipping options" to buyers whose carts match that app's rules. No warning banner, no error toast, just an empty list and an abandoned session. Run a real test order end-to-end before you flip the switch, especially if you are reading this before BFCM. A broken checkout you discover in late November is a serious revenue event. For the merchant above, we migrated her over last Thursday and the test orders held. For anyone running live rates or complex app logic, I would wait a couple of weeks and watch what breaks on other stores first.

What I check first now

If you are standing where I was ninety minutes into this call, the order I would check in now is: locations first, profiles second, toggle last. Count active fulfillment locations even if the merchant swears there is one. Count shipping profiles even if the admin feels like a tidy setup. The Shopify split shipping behavior fires on either dimension, and the toggle you are tempted to blame is the one piece of the system that is working exactly as its label says.

Shipping on Shopify is one of those systems that reads as a single toggle on the surface and then quietly behaves like three separate mechanics underneath it, each one invisible to the others until a real customer order forces them to agree.

Still stuck? Talk to an expert.

Our vetted Shopify experts can fix this issue for you in a live session. $39 per session. Your first 15 minutes are free.