nopSolutions/nopCommerce · error · NopException
Shipping rate computation method could not be loaded
Error message
Shipping rate computation method could not be loaded
What it means
Thrown by OrderTotalCalculationService (GetShoppingCartShippingTotal path) when no active shipping rate computation method plugin is loaded for the store/customer AND AllowPickupInStore is false. The service cannot compute a fixed shipping rate without at least one computation plugin or a pickup fallback. It is a configuration error, not a transient failure.
Source
Thrown at src/Libraries/Nop.Services/Orders/OrderTotalCalculationService.cs:1138
var store = await _storeContext.GetCurrentStoreAsync();
if (customer != null)
shippingOption = await _genericAttributeService.GetAttributeAsync<ShippingOption>(customer, NopCustomerDefaults.SelectedShippingOptionAttribute, store.Id);
if (shippingOption != null)
{
//use last shipping option (get from cache)
(shippingTotal, appliedDiscounts) = await AdjustShippingRateAsync(shippingOption.Rate, cart, shippingOption.IsPickupInStore);
}
else
{
//use fixed rate (if possible)
Address shippingAddress = null;
if (customer != null)
shippingAddress = await _customerService.GetCustomerShippingAddressAsync(customer);
var shippingRateComputationMethods = await _shippingPluginManager.LoadActivePluginsAsync(await _workContext.GetCurrentCustomerAsync(), store.Id);
if (!shippingRateComputationMethods.Any() && !_shippingSettings.AllowPickupInStore)
throw new NopException("Shipping rate computation method could not be loaded");
if (shippingRateComputationMethods.Count == 1)
{
var shippingRateComputationMethod = shippingRateComputationMethods[0];
var shippingOptionRequests = (await _shippingService.CreateShippingOptionRequestsAsync(cart,
shippingAddress,
store.Id)).shipmentPackages;
decimal? fixedRate = null;
foreach (var shippingOptionRequest in shippingOptionRequests)
{
//calculate fixed rates for each request-package
var fixedRateTmp = await shippingRateComputationMethod.GetFixedRateAsync(shippingOptionRequest);
if (!fixedRateTmp.HasValue)
continue;
if (!fixedRate.HasValue)View on GitHub (pinned to 64bdf2ff08)
Solutions
- Install and enable at least one shipping rate computation plugin (e.g., Fixed or FixedByWeightByTotal) for the relevant store.
- Alternatively enable AllowPickupInStore in shipping settings so the fallback path is available.
- Check the plugin's LimitToStores and LimitedToRoles so it is active for the current store/customer.
- Verify the plugin is marked active (IsPluginActive) and its system name is registered.
Example fix
// before
var (shippingTotal, _) = await _orderTotalCalculationService.GetShoppingCartShippingTotalAsync(cart, false);
// after
var methods = await _shippingPluginManager.LoadActivePluginsAsync(customer, storeId);
if (!methods.Any() && !_shippingSettings.AllowPickupInStore)
{
// guide the user: enable a shipping plugin or pickup-in-store
throw new InvalidOperationException("No shipping method is configured.");
}
var (shippingTotal, _) = await _orderTotalCalculationService.GetShoppingCartShippingTotalAsync(cart, false); Defensive patterns
Strategy: validation
Validate before calling
var methods = await _shippingPluginManager.LoadActivePluginsAsync(await _workContext.GetCurrentCustomerAsync(), store.Id);
if (!methods.Any() && !_shippingSettings.AllowPickupInStore)
{
// guide the user: enable a shipping plugin or pickup-in-store
throw new InvalidOperationException("No shipping method is configured.");
}
var (shippingTotal, _) = await _orderTotalCalculationService.GetShoppingCartShippingTotalAsync(cart, false); Prevention
- Install and enable at least one shipping rate computation plugin per store.
- Alternatively enable AllowPickupInStore as a fallback.
- Check LimitToStores/LimitedToRoles so the plugin covers the active store/customer.
When it happens
Trigger: Calculating a cart's shipping total when LoadActivePluginsAsync returns no shipping rate computation methods and _shippingSettings.AllowPickupInStore is disabled. Happens on checkout/shopping-cart pages and any GetShoppingCartShippingTotalAsync call for a cart that needs shipping.
Common situations: No shipping rate computation plugin installed or enabled (e.g., Shipping.FixedByWeightByTotal disabled) and pickup-in-store turned off; plugin restricted to a specific store/customer role that excludes the current context; misconfigured LimitToStores/LimitedToRoles on the shipping plugin.
Related errors
- Payment method couldn't be loaded
- Payment method couldn't be loaded
- Pickup point is not allowed
- Active exchange rate provider cannot be loaded
- Exchange ratio not set for weight [{targetMeasureWeight.Name
AI-assisted analysis of nopSolutions/nopCommerce@64bdf2ff08 (2026-08-13).
Data as JSON: /api/errors/47b95058e39e952f.
Report an issue: GitHub.