Running an ecommerce brand
Shopify charges shipping twice on split orders. The real fix is one inventory pool
Shopify prices each shipment separately when an order pulls stock from two locations, so customers see two shipping charges and you pay two labels. This covers the workarounds, what each one breaks, and why holding all inventory in one fulfillment location is the fix that holds.

Shopify charges shipping twice on a split order because it prices each shipment on its own. When one order pulls items from two fulfillment locations, checkout builds two shipments, calculates a rate for each, and in most cases adds them together. The customer sees a doubled shipping line and you print two labels. The fixes inside Shopify are patches. The fix that holds is keeping all sellable inventory in one fulfillment location so every order leaves as one parcel.
How the double charge happens

Shopify's split shipping documentation lists products stocked at different locations as a trigger for splitting an order into multiple shipments. The customer cannot choose how the order splits. Each shipment gets its own rate.
- A customer adds two SKUs. SKU A is stocked at your warehouse. SKU B is stocked at your store or a second warehouse.
- Order routing cannot find one location that holds both, so it assigns each line to a different location.
- Checkout creates two shipments and prices each one against your rates.
- The customer pays both rates. You buy two labels and pay two carrier bills.
A Shopify staff reply in a January 2023 community thread put it plainly: Shopify charges per location, a third-party rate calculator does not fix it because the cart is split per location before rates are requested, and the only way to avoid it is to hold inventory in one location. That thread was still getting replies in March 2025. A second thread from October 2025 describes the same result for a store with a 1,500-item local location and a 15,000-item supplier-synced location, with no native fix offered.
What Shopify changed and what it did not
In May 2025, Shopify started charging one flat rate when a split order ships from multiple locations inside the same location group. Rates are still added together when the locations sit in different groups, and when the rates are weight-based, carrier-calculated, or supplied by an app.
Market-driven shipping, also called shipping options by market, started rolling out to merchants on October 1, 2026, with all stores expected on it by July 1, 2027. On upgraded stores split shipping is always on. Flat and order-value rates are combined, so the customer pays the highest matching rate once and the other shipment shows as included. Rates are still added when the customer picks different options per shipment, when any rate comes from an app, or when preorder items mix with in-stock items.
So the double charge remains for live carrier rates, weight tiers, and any shipping app.
The workarounds and what each one costs
| Workaround | What it does | What it costs or breaks |
|---|---|---|
| One fulfillment location, others switched off | Turn off "use inventory at this location to fulfill online orders" for every location except one. Shopify's location settings then remove that stock from online availability. | Stock at the other locations is unsellable online. Oversells stop, but so do sales of anything not at the main site. |
| Free or flat shipping at the second location | Set the overflow location to free shipping so the second charge is $0. | You still pay a second label. Works only if the shipments land in one location group or you accept the margin loss. |
| Order routing rules | Order routing defaults to minimizing splits. | It can only avoid a split when one location holds every line. If stock is genuinely divided, the split still happens. |
| Shopify Functions delivery customization | A delivery customization can hide, rename, and reorder shipping options. | It cannot change a rate's price. Requires a custom app and a developer. Shopify Scripts, the old route for this, stopped executing on June 30, 2026. |
| Shipping rate apps | Apps such as Bespoke Shipping, ShipMagic, Advanced Shipping Rules and PluginHive return a combined or highest rate. | Monthly fee. Live rates need carrier-calculated shipping on your plan. Shopify adds app rates rather than combining them, so the app has to own every rate in the store. You still ship two boxes. |
Every row has the same gap. Two boxes still leave two buildings. The second label, the second pick fee and the second tracking email are still real.
The structural fix: one inventory pool

Put all sellable DTC inventory in one fulfillment location. Shopify then has one place to route to, checkout creates one shipment, and one rate applies.
In practice that means picking one warehouse as the online fulfillment location and sending it the full assortment, including the long-tail SKUs that used to sit in a back room. Retail stores and showrooms keep their stock with online fulfillment switched off so their counts never reach checkout.
Amazon FBA stock is the exception that proves the rule. FBA inventory belongs to the Amazon channel. It should not be a Shopify fulfillment location at all. Treat FBA replenishment as a separate outbound flow from the same warehouse. We run DTC fulfillment and FBA prep in the same building at 905 Remsen Ave, so one inbound shipment from your factory feeds both channels and neither one creates a split at Shopify checkout.
Centralizing also fixes the cost side, which the workarounds never touch:
- One parcel per order. Every label is rate shopped across 12+ carriers and the cheapest option that still meets the delivery date wins. Postage is passed through at cost.
- One pick fee per order. Our pricing is $3.50 pick and pack per order plus $0.25 per extra unit, capped at $8.00. A split order at two locations is two orders' worth of handling.
- One tracking number and one delivery. Fewer "where is the rest of my order" tickets.
- One returns path. Returns are inspected and graded in Brooklyn, and sellable units go back into the same pool.
How to move to one location without breaking checkout
- Export inventory by location and find every SKU stocked at more than one site.
- Consolidate those SKUs at the location that will fulfill online orders. Transfer the rest.
- In Shopify, turn off online fulfillment for every other location. Leave retail locations active for POS.
- Remove any FBA-connected location from Shopify fulfillment. Keep Amazon on its own channel.
- Place test orders that mix former two-location SKUs and confirm one shipping line at checkout.
- Review shipping options before the market-driven shipping migration lands on your store, since existing rates are migrated at upgrade.
If the warehouse is BoxHero, onboarding takes under an hour and most brands are live the same week. The integrations page covers how the Shopify sync works. Split orders multiply during BFCM when carts get bigger, so our BFCM 2026 ops checklist covers the rest of the prep.

