On the product page the bundle shows its discounted total, but in the cart or at checkout the bundle products are at their full price — usually with the “Bundle discount: −10%” line still under them. This page explains why that happens and how to find the cause.
Why it happens
Smart Cross Sell gives a bundle its discount by lowering the price of the bundle’s products in the cart. Some pricing and discount plugins, and some custom code in themes, set cart prices again after that — and the bundle discount is gone. The label stays because Smart Cross Sell did apply the discount; something changed the price afterwards.
Smart Cross Sell never forces its price back over another plugin’s: that could fight the other plugin and give the wrong price. Instead it tells you.
The notice in Smart Cross Sell
When Smart Cross Sell sees a bundle discount lost in a customer’s cart or order, a red notice appears at the top of Smart Cross Sell in your admin, with the bundle, the product, the price it should have had and the price it had. The same details go to WooCommerce → Status → Logs (source: smart-cross-sell).
The notice shows the last case. Dismiss it once you’ve fixed the cause; it comes back only if a new case happens, and goes away by itself after 30 days without one.
Find the cause
- Check the known conflicts below. If one of those plugins is active, its fix is there.
- Switch other plugins off one at a time — ideally on a staging copy of your store — and add the bundle to the cart after each one. Start with plugins that change prices: dynamic pricing, discount rules, wholesale or role-based prices, currency switchers, product add-ons. When the discount reaches the cart, the last plugin you switched off is the cause.
- Check your theme. If no plugin is the cause, switch to a default theme such as Storefront on the staging copy. If the discount then works, code in your theme (often in
functions.php) sets cart prices. The free Health Check & Troubleshooting plugin lets you do steps 2 and 3 for yourself only, without affecting customers.
Known conflicts
Advanced Dynamic Pricing and Discount Rules for WooCommerce (AlgolPlus). With the setting How to apply rules to a product that already has a sale price set to “Don’t apply discount if product is already on sale” or “Discount regular price”, it sets every sale-priced product in the cart back to its sale price — even with no active rules — so bundles with sale-priced products lose their discount. Fix: in WooCommerce → Pricing Rules → Settings → Calculation, choose “Best between discounted regular price and sale price” or “Discount sale price”.
Still stuck?
Contact support with the line from WooCommerce → Status → Logs (source smart-cross-sell) and the list of your active plugins from WooCommerce → Status.
For developers
If your code changes the price of a bundle line on purpose, you can exclude that line from the check with the scs_price_check_ignore filter (return true; it receives the cart line).