How to avoid double shipping charges on mixed cart orders
When customers purchase both preorder and in-stock items in the same cart, they may be charged shipping twice. This isn’t a bug - it’s how Shopify calculates shipping.
This guide explains why it happens and how to prevent it.
Overview
Double shipping occurs when Shopify splits an order into multiple fulfillment groups and applies shipping to each group separately.
For example, if your shipping rate is $5 and two fulfillment groups are created, the customer may be charged $10.
STOQ provides settings to help ensure customers are only charged once.
Prerequisites
Before making changes, ensure:
- You have an active preorder offer in STOQ
- You know which delivery type your preorder uses: As soon as possible, Specific date, After a specific number of days, Not sure
- You have access to Shopify Admin > Settings > Shipping and delivery
Why Double Shipping Happens
Shopify calculates shipping per fulfillment group, not per order.
A mixed cart (preorder + in-stock) can create:
- In-stock group: Ships immediately and Status: Unfulfilled
- Preorder group: Ships later and status would be Scheduled or On hold so each group gets its own shipping charge.
When this usually happens
- Specific date
- After specific number of days
These create a Scheduled fulfillment, separate from in-stock items.
How to Prevent Double Shipping
Choose the option that best fits your workflow:
Option 1: Use "As soon as possible"
All items stay in one fulfillment group, so shipping is charged once.
Steps:
- Go to STOQ → Preorders
- Open your offer
- Go to "Shipping"
- Select "Same shipping timeline for all products"
- Set fulfillment status as "Unfulfilled"
- Save
Trade-off: You must manually control when preorder items are fulfilled.

Option 2: Enable Split Fulfillments
Customers are charged once at checkout, but orders are split after checkout.
Steps:
- Go to STOQ → Preorders
- Open your offer
- Go to "Shipping"
- Set fulfillment status as "Unfulfilled"
- Under Fulfillment options, enable "Split fulfillments" for preorders
- Save

Option 3: Use "Hold all fulfillments"
All items go into a single On hold group → one shipping charge.
Steps:
- Go to STOQ → Preorders
- Open your offer
- Go to Shipping
- Set fulfillment status as "Unfulfilled"
- Under Fulfillment options, enable "**Hold all fulfillments" for preorders. **This setup ensures the customer pays a single shipping charge at checkout, and the entire order would be on hold (in-stock and Preorder) so it can be fulfilled together when the preorder inventory arrives.
- Save

Trade-off: In-stock items won’t ship immediately—you must manually release them.
Option 4: Check Shopify Shipping Profiles
Different shipping profiles = separate charges (always).
Steps:
- Go to Shopify Admin → Settings → Shipping and delivery
- Ensure preorder and in-stock products are in the same profile

How to Verify the Fix
After making changes:
- Add one preorder item and one in-stock item to the cart
- Proceed to checkout
- Review the shipping step
- Confirm only one shipping charge appears
- (Optional) Place a test order to confirm. Please refer to this document on how you can place a test order - Test your preorder
Quick Comparison
Option | Separate Fulfillment Handling | In-stock Ships Immediately | One Shipping Fee |
|---|---|---|---|
As soon as possible | No | Yes | Yes |
Split fulfillments | Yes (after checkout) | Yes | Yes |
Hold all fulfillments | Yes (all held) | No | Yes |
Same shipping profile | Depends | Depends | Yes |
Known Limitations
- Scheduled delivery types always create separate fulfillment groups
- Split fulfillments only works with As soon as possible
- Hold all fulfillments delays in-stock shipping
- Shipping profiles override STOQ settings
- Past double charges must be refunded manually
Troubleshooting
Issue | Cause | Fix |
|---|---|---|
Still seeing double shipping | Changes not saved | Save and retest checkout |
Only certain products affected | Different shipping profiles | Move to same profile |
Split option missing | Wrong delivery type | Switch to "As soon as possible" |
Two shipping lines in order | Post-checkout split | Second line is $0 (no extra charge) |
In-stock items not shipping | Hold enabled | Release manually in Shopify |
Still double shipping | Scheduled delivery type | Switch to ASAP or use split |
Can't enable both options | Conflict | Choose one |
FAQs
Q: Is double shipping a bug in STOQ?
A: No. Double shipping is caused by how Shopify calculates shipping for orders with multiple fulfillment groups. When preorder and in-stock items are in different fulfillment groups, Shopify charges shipping for each group separately. STOQ provides options to work around this behavior.
Q: Which delivery type avoids double shipping by default?
A: As soon as possible avoids double shipping because all items go into the same "Unfulfilled" fulfillment group. The Specific date and After a specific number of days delivery types create a "Scheduled" fulfillment group, which Shopify treats as separate from in-stock items.
Q: Will customers get a refund if they were already charged double shipping?
A: You will need to manually refund the extra shipping charge through Shopify admin. Go to the order, click Refund, and refund the duplicate shipping amount. STOQ does not handle shipping refunds automatically.
Q: Does this affect orders with only preorder items?
A: No. Double shipping only occurs on mixed cart orders where both preorder and in-stock items are present. Orders containing only preorder items or only in-stock items have a single fulfillment group and only one shipping charge.
Q: Can I use "Hold all fulfillments" to prevent double shipping?
A: Yes. Hold all fulfillments places all items (including in-stock items) into a single "On hold" fulfillment group, which means Shopify charges shipping once. However, this also prevents in-stock items from shipping immediately, so you will need to manually release them.
Q: Can I use split fulfillments with a scheduled delivery type?
A: No. Split fulfillments is only available with the As soon as possible delivery type. If you are using a scheduled delivery type, consider switching to "As soon as possible" and enabling split fulfillments instead.
Updated on: 27/04/2026
Thank you!