Stock Reservations and Order Routing in Spree Commerce: Stop Overselling and Ship From the Right Place
Spree Commerce includes Stock Reservations and Order Routing in its free open source core. They are for retailers and brands selling inventory across more than one warehouse, or through busy drops and flash sales. One protects the last unit at checkout, the other ships each order from the right location.
Key Takeaways
Last verified: July 2026
The win: You stop selling the last unit twice and stop shipping from the wrong warehouse.
What you get: A checkout hold protects stock while rules choose which warehouse fills each order.
Spree Commerce capability: Spree Commerce includes Stock Reservations and Order Routing in its free open source core.
The last unit sells twice, and the order ships from the wrong coast
Two problems quietly drain a growing store, and both come down to a single question: where is the truth about your stock?
The first shows up on a busy day. Two shoppers add the last jacket to their carts within the same minute. Both see it as available. Both check out.
One gets the jacket. The other gets an apology and a refund. That shopper does not come back, and roughly one in five online cart abandonments already trace back to items showing out of stock (Opensend, 2025).
The second problem shows up in your shipping bill. You added a second warehouse to get orders to customers faster. Instead, orders started arriving in two and three boxes from different states.
Split shipments raise the shipping cost of an order by around 35% and drive 22% more negative reviews, according to a 2025 fulfillment analysis. They now touch about 40% of high-volume orders.
What you actually want is simple. Sell what you have, never what you do not. Send each order from the location that should fill it. You want your inventory count to be honest at the exact moment a shopper commits, and you want a clear answer to which location should pack the box.
That is inventory truth, and it lives in two features that work together underneath your store.
What are Stock Reservations, and how do they stop overselling?
Stock Reservations are a time-limited soft hold on stock during checkout. When a shopper enters checkout, Spree Commerce holds the items in their cart for a short window. Other shoppers see reduced availability right away.
That small change closes the last-unit race. Before, two people could both pass the availability check on the same final unit, and one would fail only at the end. Now the first shopper into checkout holds the unit, and the second sees it is gone before they commit.
No double sale. No cancellation email.
The hold is a soft one, so it releases on its own if the shopper walks away. Your real stock is never locked up by abandoned carts. Availability math stays honest across your whole catalog, because the count a shopper sees already subtracts what other shoppers are holding.
This matters most on the days you care about most. A product drop, a flash sale, a holiday rush: exactly when traffic spikes and the last-unit race gets fierce. Overselling is not a rounding error on those days. Some marketplaces, like Amazon, suspend sellers whose cancellation rate climbs past a low threshold, so a single oversold morning can cost you a channel.
The hold is on by default, and you can turn it off if you want the older behavior. You manage the underlying counts the same way you always have, through stock levels in the admin.
How does Order Routing decide which warehouse ships an order?
Order Routing decides which stock location fills an order when you have more than one. Instead of a fixed default warehouse, Spree Commerce walks an ordered list of rules and ranks every eligible location, strongest fit first.
The rules come ready to use, and three cover most stores:
- Preferred location. If an order has a designated location, that one ranks first. Useful when a customer or an admin already knows where it should come from.
- Minimize splits. The location that can fill the most of the cart on its own ranks higher, so a single warehouse fills the whole order whenever it can.
- Default location. A tie-breaker that always ranks every location, so there is always a complete answer.
You reorder, switch off, or add rules from configuration, not code. If your priority is fewest boxes this quarter and closest warehouse next quarter, you change the order and move on.
The payoff is fewer split shipments and lower cost per order. Given that splits raise per-order shipping by about a third, a rule that keeps an order in one warehouse pays for itself fast. The routing decision happens once, when the shopper starts checkout, and the chosen locations stay put unless you change them.
Routing that follows your sales channels
Routing is scoped per channel, so each way you sell can fill orders by its own logic. Your online store, your point of sale, and your wholesale line do not have to share one fulfillment rulebook.
A point-of-sale channel can always pick the physical location the shopper is standing in. A wholesale channel can hand routing off to an outside warehouse system that already runs your bulk operations. Your consumer site can optimize for fewer boxes. Same backend, three different behaviors, no conflict between them.
This is the natural partner to running everything as Sales Channels on one platform. Channels decide where a sale comes from. Routing decides where it ships from. Together they let one store behave correctly across every surface you sell on.
New channels start with the same three default rules, so a new way to sell is ready to fulfill from day one. For a growing operator, that is the difference between adding a channel and adding a fulfillment headache.
What happens when one warehouse cannot fill the whole order?
Sometimes no single location has everything, and the order has to split. Spree Commerce handles that in the open, along two clear lines.
Routing decides which locations are involved. Then each location’s share can break down further by shipping needs, like separating a heavy item from a small one, or an in-stock item from a backordered one. The top-ranked location fills what it can, and anything left over flows to the next location in the ranking.
A safety net sits underneath the whole thing. If a routing choice lands on a location that turns out to be short, a validator catches it before the order completes. The customer does not get a promise you cannot keep.
The goal is not to pretend splits never happen. On a store selling across warehouses, some orders will always split, and distributed inventory drives most of them. The goal is to split only when you truly have to, keep the rest in one box, and see each shipment clearly when a split is unavoidable. That is how you protect both the shipping bill and the customer who is watching the tracking page.
You can see the full picture on the multi-warehouse eCommerce page.
Reservations and routing stay out of each other’s way
These are two systems doing two jobs, and Spree Commerce keeps them independent on purpose. One protects the count. The other picks the location. They fire at different moments and never fight over the same decision.
The hold happens as the shopper moves through the cart and into checkout, per product. The routing happens once, at the start of checkout, per order. Because the availability math already subtracts active holds across all your locations, the global “can we sell this?” answer stays correct even when the hold and the shipping location land in different places.
For you, that means turning both on is safe. You do not have to reason about edge cases where a hold in one warehouse confuses a routing decision in another. The platform draws the line between the two jobs so you do not have to.
That separation is also why each piece stays simple to reason about later, when you want to change how one of them behaves.
Shape the rules to how you actually ship
The default rules cover most stores, and the real advantage shows up when your operation has a wrinkle the defaults do not know about. Because you own the code, you can add your own routing logic without waiting on a vendor.
Maybe you route by distance to the shopper, so the closest warehouse always wins. Maybe refrigerated items can only leave certain locations. Maybe a top-tier customer always ships from your fastest facility, or a certain product only dispatches on the days your carrier picks up. Each of these is a rule you add to the existing pipeline, described in the order routing guide.
When the change is bigger than a rule, you can replace the whole routing strategy. A store that runs a dedicated warehouse management system can hand the decision to it. A store with its own model for choosing the location can run that instead. The point is that the logic is yours to shape, on infrastructure you own, not a black box you file a support ticket against.
That ownership is the quiet reason this holds up as you grow. Your fulfillment gets more particular over time, and the platform bends to match it.
Put your inventory truth in one place
Overselling and messy fulfillment are not separate problems. They are two symptoms of a store that does not have one honest answer about its own stock. Protect the last unit at checkout, and decide the shipping location by rules you control, and both symptoms fade at once.
The stores that stay calm on a launch morning are not the ones with the most staff watching dashboards. They are the ones where the platform already knows the answer: this unit is spoken for, this order ships from here. That is one honest answer about your stock, applied for you at the moment it matters.
Spree Commerce gives you both in the free open source core, so you can model your own warehouses and busy selling days and watch the behavior before you commit to anything. The rules start sensible and bend to your operation as it grows.
Ready to sell what you have and ship it from the right place? Get in touch, or explore multi-warehouse eCommerce and Sales Channels.
Frequently Asked Questions
What are stock reservations in eCommerce?
Stock reservations are short, time-limited holds placed on inventory while a shopper is in checkout, so the same unit is not sold twice during a demand spike. Other shoppers see reduced availability immediately, and the hold releases on its own if the cart is abandoned. Spree Commerce includes Stock Reservations in its free open source core, enabled by default.
How does Spree Commerce prevent overselling?
Spree Commerce prevents overselling by holding cart items during checkout and subtracting active holds from the available count across every location. The first shopper into checkout secures the last unit, and later shoppers see it as unavailable before they commit. This closes the race where two orders both pass the availability check and one fails at completion.
What is order routing and how does it choose a warehouse?
Order routing is the system that decides which stock location fulfills an order when a store has more than one warehouse. Spree Commerce provides an ordered set of rules that rank every eligible location and pick the right fit. Operators reorder, disable, or add rules from configuration without writing code.
Can order routing rules be different for each sales channel?
Yes, routing is scoped per channel, so an online store, a point of sale, and a wholesale line can each fulfill by their own logic. A point-of-sale channel can always pick the physical location, while a wholesale channel can delegate routing to an external warehouse system. Spree Commerce provides default routing rules for each new channel, so a new way to sell is ready to fulfill immediately.
How does Spree Commerce reduce split shipments?
Spree Commerce includes a minimize-splits routing rule that ranks the location able to fill the most of a cart on its own, so an order stays in one box whenever possible. When a split is unavoidable, the platform allocates each location’s share clearly and flags any shortfall before the order completes. This keeps shipping cost and customer confusion down without hiding the splits that genuinely have to happen.
Do stock reservations and order routing work together safely?
Yes, they are independent systems that make decisions at different times and protect different things. Reservations hold stock per product as a shopper checks out, and routing chooses the fulfilling location once per order. Spree Commerce keeps the availability math correct across all locations, so you can run reservations and routing together with no special configuration.
Are stock reservations and order routing free?
Yes, Spree Commerce includes both Stock Reservations and Order Routing in its free open source core, with no separate license or add-on. Operators get checkout stock holds, rules-based warehouse selection, and per-channel routing from day one. Teams that need custom routing logic can extend the rules on infrastructure they own.