Here’s a pricing scenario that shouldn’t happen but did: a customer adds $80 worth of products to their cart, applies a $30 eWallet balance, and expects to pay shipping based on a $50 effective order value. Instead, the delivery engine looks at the full $80 and charges shipping for the higher tier. The customer pays more for delivery precisely because they used their digital wallet — which is the opposite of what a loyalty reward should do.
Odoo just patched this in the delivery and loyalty modules, and the fix touches a calculation path that affects every business running eWallet or gift card programs alongside tiered shipping rules.

How the Pricing Engine Was Miscalculating
Odoo’s delivery carriers support rule-based pricing — different shipping rates based on order weight, quantity, or total value. A common configuration looks like: “orders under $99 pay $30 shipping; orders over $99 ship free.” The delivery module calculates which rule applies by summing up the order total.
The problem was that eWallet and gift card reward lines were being included in that sum. These lines appear as negative amounts on the sales order (they reduce the customer’s payment), but they’re not discounts in the traditional sense. A standard percentage discount reduces the actual order value. An eWallet payment is a funding source — it doesn’t change what the order is worth for the purpose of determining shipping tiers.
The delivery pricing logic was treating them identically, which meant the total used for shipping tier evaluation was wrong in two ways: it was either too high (including the eWallet line amount before deduction) or miscategorized (treating the wallet payment as a discount that should reduce the shipping-qualifying total).
The Fix: A Dedicated Exclusion Method
The correction routes the delivery pricing calculation through a dedicated method — _compute_amount_total_without_delivery— which is overridden in the sale_loyalty_deliverymodule to explicitly strip out eWallet and gift card lines before the total reaches the carrier’s pricing rules.
This is cleaner than the previous approach, which tried to manually exclude delivery lines from the total but missed the wallet lines entirely. By centralizing the exclusion logic in one method, future payment instruments that behave like wallets can be added to the filter without touching the core delivery pricing engine.

Who This Affects
Any business using Odoo’s eWallet feature or gift card programs in combination with value-based delivery pricing rules. That includes eCommerce stores with free shipping thresholds, subscription boxes with tiered delivery, and any retailer using Odoo’s loyalty program to issue digital wallet credits.
The impact scales with how aggressively the business promotes wallet usage. A store running a “spend $50, get $10 eWallet credit” campaign would have had every wallet redemption potentially shift the customer into a different shipping tier. For stores near the threshold boundary — lots of orders in the $90–$110 range with a $99 free shipping cutoff — this bug was actively punishing customers for using their rewards.
The fix ships with a new test case that validates the correct behavior: an order of $99 with an eWallet applied should still qualify for the sub-$99 shipping rule based on the product total, not the post-wallet total. For Odoo 19 users, the correction applies with the standard module update — no configuration changes needed on the delivery carrier or loyalty program side.