Feature #11984
openFeature #11838: Add free shipping concept based on admin side configuration
Each shipping country gets its own shipping types, prices and free-shipping amount. Cart, checkout, order and emails follow the delivery country, and amounts are shown in that country's currency (India shows ₹).
90%
Description
The warehouse state is invalid ("fsad"), so FedEx never returns live rates and fallback rates are used. Set a valid 2-letter state.
Existing India amounts saved before the currency change are read as rupees. Re-enter them if they were meant as dollars.
Splits caused by different warehouses, or by Standard-only mixed with Express-only items, still show only the breakdown card, with no type choice.
Splitting by cancellable versus non-cancellable products is not done.
The customer's exchange rate is taken from checkout, as payments already do.
No text-message or WhatsApp message listing shipping charges was found. Confirm if one is needed.
The backend must be restarted and the storefront hard-refreshed after release.
Files
Subtasks
Related issues
Updated by Pavan Kumar Murala 1 day ago
- % Done changed from 0 to 80
- Estimated time set to 8:00 h
1. Admin: Company Profile
Added Free Shipping by Country under Supported Shipping Countries.
Pick a country (US, India) to see only that country's shipping types.
Each country has Standard and Express, and you can + Add shipping type (for example priority).
Each type has Offered on/off, display name, description and the free-shipping amount.
The pop-up has the same details as the Ecommerce cards: margin, fixed markup, safety buffer days, minimum rate, maximum rate and fallback rate.
Standard and Express use store-wide pricing until a country gets its own pricing.
Amounts use the country's own currency (India in ₹).
Everything is read-only until the page's Edit button is clicked.
Configuring a new country also adds it to the supported countries.
2. Backend
New saved data: countryFreeShipping on the company.
POST APIs to add or update a country, load US/AU defaults, and remove a country's rules.
The server decides free shipping and checks the minimum per shipping type, per country.
Once any country has rules, a country without a rule gets no free shipping.
Amounts in the country's currency are converted with the customer's exchange rate.
A split order is priced for each shipping type, so every type can be chosen.
An added type with no fallback rate uses the carrier service's base cost, so it can't come out free by mistake.
The server saves the shipping type name on the order, not the browser's text.
Fixed the shop settings endpoint, which sent the country rules as database internals.
3. Storefront cart and checkout
Cart bar and note follow the header country, and the bar hides where the country has no free shipping.
Checkout lists exactly the country's types, with the names from your list, in admin order.
The first type is selected automatically, and each option shows its description and "Free on orders …+".
A split order shows the chosen type divided into parts, with each product's own charge or FREE.
The order summary lists each product's shipping charge.
Excluded products show "Not eligible for free shipping".
Checkout switches to the delivery country's currency (India ₹, US $).
The browser's old saved settings copy is ignored after the fix.
4. Orders, emails and receipts
The order page, confirmation email, admin email and receipt PDF name the chosen shipping type.
The emails name the products in each shipment, with their charge or Free.
5. Checks
Backend tests: 49 passing.
I ran the real shipping calculation for your Bagara Rice and tee cart, and the numbers matched what checkout shows.
Typecheck: no new errors in the files I changed (the project already had 249 storefront errors).
6. Known issues and follow-ups
Warehouse state "fsad" is invalid, so FedEx falls back to fixed rates. Set a valid 2-letter state.
India amounts saved before the currency change read as rupees, so re-enter them if needed.
Splits caused by different warehouses, or by Standard-only mixed with Express-only items, show only the breakdown, with no type choice.
Splitting by cancellable versus non-cancellable products is not done.
No text or WhatsApp message listing shipping charges was found.
Restart the backend and hard-refresh the storefront after release.
Updated by Pavan Kumar Murala about 15 hours ago
- Due date changed from 11/04/2026 to 11/05/2026
- % Done changed from 80 to 90
Admin: Country-wise shipping setup — Added country-specific free-shipping settings, with clearer currency handling for each country.
Cart page: Shipping gets a seat at the table — Updated shipping amounts and currency formatting so customers can see the right charges as they review their cart.
Checkout: Choose your delivery — Carried shipping details through checkout and order creation, including customer and staff orders.
Order emails: No shipping surprises — Added shipping details to admin order alerts and payment confirmation emails.
Admin order view: Follow the shipping money — Updated the shipping finance panel and order view to show the revised details.
Existing settings: Currency cleanup — Added a backend script to fix country shipping currency data already in the database.