nopSolutions/nopCommerce · error · NopException

No available shipping options

Error message

No available shipping options

What it means

Thrown during shipping option preparation when no shipping options or pickup points are available for the cart. The plugin calls PrepareShippingOptionsAsync which delegates to nopCommerce's shipping rate computation; if the result is null or empty, there is no way to fulfill the order.

Source

Thrown at src/Plugins/Nop.Plugin.Payments.PayPalCommerce/Services/PayPalCommerceServiceManager.cs:668

        var shipping = new Shipping
        {
            Name = new() { FullName = CommonHelper.EnsureMaximumLength(fullName, 300), },
            Address = address
        };

        if (details.Placement == ButtonPlacement.PaymentMethod && !isApplePay)
        {
            shipping.Type = details.IsPickup
                ? ShippingType.SHIPPING.ToString().ToUpper() //PICKUP_IN_STORE option doesn't work for some reason
                : ShippingType.SHIPPING.ToString().ToUpper();

            return shipping;
        }

        var (shippingOptions, pickupPoints) = await PrepareShippingOptionsAsync(details);
        if (!shippingOptions?.Any() ?? true)
            throw new NopException("No available shipping options");

        var selectedShippingOption = shippingOptions.FirstOrDefault();
        if (!string.IsNullOrEmpty(selectedOptionId))
        {
            var existingOption = shippingOptions
                .FirstOrDefault(option => string.Equals(option.Name, selectedOptionId, StringComparison.InvariantCultureIgnoreCase))
                ?? throw new NopException("Selected shipping option is unavailable");

            selectedShippingOption = existingOption;
        }

        if (selectedShippingOption is null)
            throw new NopException("Selected shipping option is unavailable");

        PickupPoint pickupPoint = null;
        if (selectedShippingOption.IsPickupInStore)
        {
            pickupPoint = await pickupPoints.FirstOrDefaultAwaitAsync(async point =>

View on GitHub (pinned to 64bdf2ff08)

Solutions

  1. Verify at least one shipping rate computation method is installed and active in nopCommerce (Configuration > Shipping > Providers)
  2. Check that the configured shipping methods cover the customer's shipping destination country and region
  3. Test shipping rate calculation independently for the customer's address to confirm providers return rates
  4. Ensure shipping provider plugins (e.g., UPS, USPS, FedEx) have valid API credentials and are operational
  5. Verify restricted shipping zones are not excluding the customer's destination
Defensive patterns

Strategy: validation

Validate before calling

// Check shipping options availability before PayPal flow
var shippingOptions = await _shippingService
    .GetShippingOptionsAsync(cart, shippingAddress, "", storeId);
if (!shippingOptions.ShippingOptions.Any())
{
    return Error("No shipping options available for the selected address");
}

Try / catch

var (result, error) = await manager.PrepareShippingAsync(settings, details, selectedOptionId, isApplePay);
if (!string.IsNullOrEmpty(error))
{
    if (error == "No available shipping options")
        return View("NoShippingOptions");
}

Prevention

When it happens

Trigger: PrepareShippingAsync calls PrepareShippingOptionsAsync(details) which returns null or an empty list; the null-coalescing check '!shippingOptions?.Any() ?? true' evaluates to true.

Common situations: No shipping rate computation method is active or configured; all configured shipping providers returned no rates for the destination; the shipping address country/region is not covered by any shipping method; shipping rate computation plugins are misconfigured or their external APIs are down.

Related errors


AI-assisted analysis of nopSolutions/nopCommerce@64bdf2ff08 (2026-08-13). Data as JSON: /api/errors/19cb3ec6eb9e8e64. Report an issue: GitHub.