Why does my checkout break when a customer has both a subscription and a one-time item in their cart?
Customers who add a subscription product and a regular one-time product to the same cart sometimes hit a checkout error, a stalled payment step, or a recurring total that doesn't match what the cart page showed. Here's what's actually going on and how to fix it without guessing.
What's going on
A merchant sells a product both as a one-time purchase and as a subscription (a "selling plan" in Shopify's terms). A customer adds one of each to their cart, say one bag of coffee as a subscription and a second bag as a one-off, and checkout either throws an error, stalls on the payment step, or shows a recurring subtotal that doesn't match what the cart page displayed. In more severe reports, the browser becomes unresponsive when the customer tries to advance to payment.
This isn't one bug with one fix, it's a cluster of related issues that all surface under the same symptom of "checkout breaks with mixed carts," so the right fix depends on which one you're actually hitting. The most common triggers are: the customer selected local pickup or local delivery, which mixed subscription and one-time carts often can't fully support; a checkout UI extension or Shopify Function from a subscriptions app, discount app, or custom checkout customization conflicting with another extension or mishandling the mixed-cart case; and a display bug where the recurring subtotal line miscalculates when combined with one-time line items, quantities, or bundle discounts.
None of this means subscriptions and one-time products can't coexist in a cart. Shopify supports selling the same product both ways, and each purchase type gets its own order line item, with subscription lines carrying a selling plan reference and one-time lines not. The instability shows up at checkout specifically, not at add-to-cart, which points to a delivery-method or extension problem rather than a fundamental incompatibility.
Why it happens
Shopify checkout is built around a single delivery method per order. When a cart contains both a subscription and a one-time item and the customer picks local pickup or local delivery, that method has to apply to the whole order, and subscription checkouts have more limited support for splitting a mixed cart across delivery methods. If the combination the customer wants isn't supported, checkout blocks progress or throws an error instead of clearly explaining why. Stores without more advanced order-splitting tools are more exposed to this because there's no simple native way to split one cart into two orders with different delivery methods.
Separately, checkout is extensible: subscription apps, discount apps, and any custom checkout UI extensions or Shopify Functions your store runs all inject logic into the same checkout flow. If two of these touch pricing or line-item logic at the same time, for example a subscription app's discount calculation and a separate discount or upsell app both trying to modify the recurring total, the result can be a stalled checkout, a miscalculated recurring subtotal, or in bad cases a hard failure. This is an app-conflict problem rather than a Shopify platform bug, and it typically only shows up on the specific combination of apps and theme a given store runs, which is why it reads as a rare, hard-to-reproduce issue in forum threads rather than a universal one.
A third contributor is a display bug in how the recurring subtotal is calculated when one-time items, multiple quantities, or bundle-level discounts are present alongside a subscription line. Merchants have reported the recurring total shown at checkout not matching the discounted price shown on the product or cart page, which erodes trust even when the order itself processes correctly.
5 ways to fix it
Reproduce the exact failure with apps disabled one at a time
Before changing anything, put a subscription item and a one-time item in the same test cart and try each delivery method you offer (shipping, local delivery, local pickup) to see which combination fails. Then disable your subscriptions app, discount apps, and any custom checkout extensions one at a time and repeat checkout. This tells you whether you're hitting a delivery-method limitation (fails with everything disabled) or an app conflict (goes away when a specific app is off) — the fix differs for each, so don't skip this step.
If it's a delivery-method issue, don't offer local pickup or delivery on mixed carts
Mixed subscription and one-time carts are known to run into trouble when a customer selects local pickup or local delivery, since Shopify applies one delivery method to the whole checkout and subscription checkouts have more limited support for splitting a mixed cart across methods. This is a platform constraint, not something you can patch in your theme. The practical fix is to restrict local pickup and delivery availability when a cart contains a mixed subscription and one-time combination, or to message clearly during cart review that mixed carts ship only. If you're not sure whether your plan or setup has more flexibility here, check with Shopify support rather than assuming.
If disabling an app fixes it, that app or an app conflict is the cause
Contact the app's support team with exact reproduction steps: cart contents, delivery method, and browser. Checkout UI extension conflicts are usually fixable on the app side once the vendor can see the specific interaction. If two apps both modify checkout pricing or line items, you may need to turn off the overlapping feature in one of them rather than running both with full checkout permissions.
Check your recurring total display against the actual order
If checkout completes but the recurring total shown at checkout doesn't match the price on your product or cart page, compare it against the order that actually gets created in your admin before assuming checkout is wrong — sometimes the cart page display is stale rather than the checkout total. If checkout itself is genuinely miscalculating, report it to Shopify support with screenshots, since it damages trust even when the charge itself is correct.
If you're customizing checkout, test every change against a mixed cart
If you're building or maintaining checkout UI extensions or Shopify Functions, test each new one against a cart with both a subscription and a one-time item, not just single-product-type carts — that's the scenario most likely to expose conflicts. A focused audit of your checkout extensions against this exact case is usually the fastest way to find a hidden conflict; it's the kind of review BesPoP does for merchants who suspect an extension is the culprit but can't isolate it themselves.
Bottom line
Mixed subscription and one-time checkout instability is real but usually traceable to one of two causes: a delivery-method limitation Shopify doesn't fully support for mixed carts, or a conflict between checkout apps and extensions that's fixable once isolated. Start with the free fix — restricting local pickup or delivery on mixed carts — before assuming you need new tooling. If the cause turns out to be a genuine extension conflict, a focused checkout audit is usually faster than disabling apps by trial and error.
Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.