Skip to content

Fixing double shipping charges on Shopify

Date

19 Jun 2026

Category

Build

Client

Steadyrack

Steadyrack sells bike storage across three regions, and in Canada they fulfil from two places at once: their own warehouse and Amazon’s fulfilment network. Shopify prices delivery per location, so an order that pulls one product from each source can be quoted two shipping charges instead of one. The off-the-shelf apps that promise to smooth this over are a monthly fee and one more thing sitting in the checkout path.

What we did

We built it as a Shopify Function: code that runs inside Shopify’s own checkout, written once and owned by Steadyrack outright. It recognises a mixed cart and keeps a single correct shipping charge. Which products count as Amazon-fulfilled is a checkbox on the product, so bringing a new one on board is a tick in the admin, not a developer ticket. And it fails safe: if a cart ever looks unusual, it leaves the rates untouched rather than risk standing between a customer and checkout.

One detail worth passing on, because it catches people out: this kind of customisation can’t be finished through the Shopify admin. Attaching the function dead-ends in the shipping settings no matter what you click. The final step only exists through Shopify’s API.

The result

Canadian orders now charge shipping once, verified across a full matrix of cart combinations including express checkout, where the wallet correctly showed a single charge across two shipments. No subscription, no vendor on the critical path, and when Steadyrack want it to behave differently, that is a change to their own code rather than a feature request in someone else’s queue.

What to take from it

If you fulfil from more than one place, your warehouse plus Amazon, a 3PL, a dropship partner, Shopify treats each source as its own delivery and your customer can quietly end up paying the sum. It is a two-minute check: put one item from each source in a cart and count the shipping lines at checkout. And when a part of your store touches money every day, it is worth owning the code that runs it, so the person who can change it is you.