Shopify checkout assumes one delivery method applies to every item in a cart — and when a cart mixes pickup-only items with shippable items, no single method satisfies both. This is not a bug or a missing setting. It is a deliberate design choice baked into Shopify’s checkout architecture, and understanding it is the first step to fixing it.
This post is for merchants and operations managers. No API terminology, no code, no configuration instructions — just a plain-language explanation of the architecture and what to do about it.
What does “single delivery method” actually mean?
When a customer reaches Shopify checkout, the platform asks a straightforward question: what is the delivery method for this order?
The customer selects one answer: ship to this address, or pick up at this store. That decision applies to every line item in the cart. Shopify uses it to calculate shipping rates, determine which fulfillment locations can handle the order, generate the correct tax, and route the order to the right team.
The simplicity is intentional. One delivery method means one clear fulfillment instruction. The warehouse knows exactly what to pick and where to send it. The store knows exactly which orders to stage for pickup. Tax is calculated against one address. Payment is captured against one order.
This model works flawlessly for the vast majority of Shopify orders, which are either shipped or picked up — not both. The problem only surfaces when your product catalog has items that live in different fulfillment categories.
A pickup-only sofa can only be collected at a store. A shippable throw pillow can be shipped anywhere. When both are in the same cart and the customer reaches checkout, Shopify searches for a single delivery method that satisfies both items. There is none. The checkout fails.
Why is this an architectural choice and not a bug?
It helps to understand what solving this natively would require.
A checkout that handles both pickup and shipping for the same order must simultaneously:
- Route the pickup items to a specific store with a ready-by date and a staff notification
- Route the shippable items to a warehouse with a packing and shipping workflow
- Calculate tax for potentially two different locations — a store address and a customer’s shipping address
- Handle the case where the pickup leg fulfills successfully but the shipping leg fails, and vice versa
- Coordinate the customer’s payment so that both legs are captured or both are refunded together
Each of these is solvable individually. Solving all of them together, reliably, across Shopify’s entire merchant base, for every combination of products and locations, is genuinely complex infrastructure work.
Shopify made a practical choice: optimize the checkout for the common case (single delivery method), which represents the overwhelming majority of orders, rather than building a complex multi-fulfillment architecture that most merchants will never need.
The error merchants experience is the checkout doing exactly what it was designed to do — protecting the integrity of the fulfillment model it was built on. The design simply was not built with mixed-fulfillment merchants in mind as a primary use case.
For the specific checkout error that results from this conflict, see Shopify Checkout Error Mixed Cart Fix.
Who is actually affected by this constraint?
The merchants who feel this constraint most acutely are those in categories where product size, perishability, or regulation makes some items pickup-only while others are routinely shipped.
Furniture and large home goods. A sectional sofa cannot economically ship with standard carriers. It is a pickup item. A matching throw pillow ships in a standard box. Mixed carts are the rule in this category, not the exception.
Wine, spirits, and age-regulated goods. Some markets require in-store pickup for regulated items. A customer buying a case of wine plus a bottle opener has a mixed cart. The wine is pickup-only in jurisdictions with regulated delivery.
Garden and outdoor supplies. Live plants and large trees are pickup-only. Soil, pots, and garden tools ship normally. A single garden project often requires both.
Grocery and meal kits. Perishables may require in-store pickup while pantry items can ship. A customer who shops both categories in one session creates a mixed cart.
In all these cases, the customer’s natural shopping behavior — adding what they want without thinking about fulfillment logistics — produces a cart that has no single fulfillment method fitting all of it. The conflict is not the customer’s fault and not the merchant’s fault. It sits between how customers naturally shop and the one-method-per-order model the checkout is designed around.
Does Shopify Plus solve this?
Shopify Plus gives merchants deeper access to checkout customization. On Plus, you can modify the checkout experience, add custom fields, and build checkout extensions that change how the payment flow looks and behaves.
But Plus does not remove the single-delivery-method constraint. On Plus, a checkout still cannot natively route different line items to different fulfillment methods in the same order. A Plus merchant hitting this conflict has the same architectural problem as a Basic merchant — they just have more tools to build a polished workaround.
The Shopify developer documentation is explicit on this point: checkout customization extends the checkout UI and logic, but the underlying order model is unchanged. One order, one fulfillment method.
This matters because some merchants assume that upgrading to Plus will fix the problem. It will not. What Plus enables is a more polished version of the workaround — a smoother split-checkout flow, more control over the UI, and better error handling. The split is still necessary.
The three responses to this constraint
Once a merchant understands the constraint, they have three ways to respond.
Accept the error. Do nothing. Customers who build a mixed cart hit the checkout error and either figure out how to separate their items manually or abandon. For merchants with very low pickup volume (under 10 mixed carts per month), this is sometimes a deliberate choice. The cost is low enough to accept.
Block the mixed cart. Add a cart-page warning that disables checkout for mixed carts and asks the customer to split manually. This prevents the raw error but pushes friction onto the customer. Research consistently shows 15–25% of customers abandon rather than complete two manual checkouts.
Split the cart into two native checkouts. Detect the conflict automatically, group items by fulfillment type, and walk the customer through two coordinated Shopify checkouts. Each checkout sees only one fulfillment type, satisfying the single-delivery-method constraint for each. The customer experiences one slightly longer checkout rather than a confusing error.
The trade-offs:
| Response | Customer experience | Revenue recovery | Implementation cost |
|---|---|---|---|
| Accept the error | Poor — generic checkout error | None | None |
| Block at cart page | Friction — manual split required | Partial (15-25% abandon) | Low |
| Split into two native checkouts | Good — guided, coordinated | High (under 5% incremental drop) | App or custom build |
For a store doing 200 mixed carts per month at an average $80 cart value, the difference between blocking and splitting is roughly $4,800–$6,400 per month in recovered orders. That math is why the split is worth building or buying.
Why draft orders are the wrong approach
Some merchants discover the split-checkout concept and implement it using Shopify’s draft order API — creating manual invoices for the pickup group and sending them to the customer via email.
This solves the checkout error, but it creates a different set of problems:
- Draft orders bypass native Shopify checkout. Shop Pay, Apple Pay, and Google Pay do not work on draft order payment links.
- Customers must navigate away from the storefront to pay a separate invoice. Conversion drops sharply.
- Tax calculation and discount code application on draft orders can differ from native checkout behavior.
- Draft orders require more manual handling from staff and do not integrate cleanly with automatic fulfillment workflows.
The old approach to mixed-cart management in the Shopify ecosystem — before apps like BopiSafe — leaned on draft orders. It was the only tool available. The result was an experience that looked like a workaround rather than a checkout, because it was.
The correct implementation sends each fulfillment group through a real native Shopify checkout, which is what preserves Shop Pay support, real-time inventory checks, accurate tax, and standard fulfillment routing. Shopify’s checkout architecture documentation outlines how Checkout UI Extensions can be used to build on top of native checkout — which is the layer a proper split-checkout app operates on.
What happens when both checkouts need to succeed or fail together?
One of the harder engineering problems in split checkout is atomicity — ensuring that a customer who completes the first checkout (say, the pickup group) but whose second checkout (shipping group) fails is not left with one live order and one abandoned cart.
Without proper handling:
- The pickup order is placed and the customer is charged for it.
- The shipping checkout fails (payment declined on a different card, network timeout, anything).
- The customer has paid for pickup items but not shipping items. They may not know which items went through.
- The pickup team receives an order that the customer thinks is incomplete. The shipping items are in limbo.
Good split checkout implementations handle this by either holding the first order in a pending state until the second confirms, or by immediately triggering a refund on the first order if the second fails. The customer is notified clearly of what happened and why.
BopiSafe handles this coordination as part of the Smart Split flow. Both checkouts are real native Shopify checkouts. If the second fails, the flow surfaces a clear message and the first order is managed accordingly. Neither group is left in a broken state.
For merchants building custom solutions, this failure-handling is often the piece that is underestimated in initial scoping. It requires genuine coordination logic, not just two sequential checkout links.
There is also a customer-communication layer that often gets skipped. A split-checkout flow generates two order confirmations, two ready-state notifications, and two tracking flows — and when those land in the customer’s inbox without coordination, the customer reads them as a duplicate charge. The right pattern collapses the messaging: one combined confirmation that lists both order numbers, then mode-specific updates only when meaningful (pickup-ready for the pickup group, shipping label scanned for the shipping group). Merchants who underestimate this layer see their support volume rise even when the split itself worked cleanly. The technical correctness of the split and the perceived correctness to the customer are two separate problems, and both must be solved.
The broader takeaway for merchants
The fulfillment method conflict is not going to be resolved natively by Shopify in the near term. The platform’s architecture is designed for single-delivery-method orders, and that design underpins too much of Shopify’s checkout reliability to change casually.
For merchants who need mixed fulfillment — and in furniture, garden, regulated goods, and grocery categories, that is most merchants — the path forward is to work within the constraint. Detect the conflict early (at the cart, not the checkout), group items correctly, and send each group through its own native checkout.
Done right, the experience is seamless for the customer. Done poorly — via blocking, manual draft orders, or a cart-page warning that express checkout bypasses — it leaks orders every day.
The fulfillment method conflict is also why BopiSafe exists. It is an infrastructure problem that requires an infrastructure solution. See Why Shopify’s Default BOPIS Fails for the fuller picture of how native Shopify handles BOPIS and where the one-method-per-order model needs an app to cover the mixed-cart case. For the specific checkout error customers see, see Shopify Checkout Error Mixed Cart Fix.
The Shopify Help Center on delivery settings describes how delivery methods are configured at the store level — a useful reference for understanding the configuration surface that produces this constraint.
Written by the BopiSafe team — we build BOPIS infrastructure for Shopify merchants.
Next steps
- See the specific error this conflict causes and the three fixes: Shopify Checkout Error Mixed Cart Fix
- Understand the full scope of what native BOPIS leaves to an app: Why Shopify’s Default BOPIS Fails
- See what a properly split mixed cart looks like for the customer: Shopify Mixed Cart Split Pickup Shipping
- Install BopiSafe to handle fulfillment method conflicts automatically with two coordinated native checkouts