Build shipping into the price or charge actual postage? A margin test for bulky products
Absorb it, build it into the price or charge actual postage? A margin test for each bulky product, and the price rise that GST and fees really demand.
Take a pet bed that weighs 2 kg on the scale but fills a 60 × 50 × 25 cm carton. At the usual express divisor of 5000, a courier bills it as 15 kg.
Now you have to decide who pays for those 15 kg.
Here is the short answer. Test each bulky product on its own margin. If the margin still meets your minimum after shipping to your farthest zone, absorb the shipping and show free delivery. If not, build the average shipping into the price, knowing that the price must rise by more than the shipping, because GST and percentage fees take a share of every rupee you add. If the gap between your near and far zones is large next to the price, charge the delivery, or build in the near-zone cost and add a charge for far zones. In India, the delivery charge must be shown before the customer pays.
We make tapes, films and paper packaging at Jagannath Polymers in Jaipur, and our sister company JPPL Innovation sells packaging online. I do not know your margins or your courier's rates, so I will not tell you which option is right. We can give you the test, with figures for you to replace.
Why are bulky products harder to price?
Because the carton, not the product, sets the shipping cost. Our guide to volumetric weight explains the formula, so I will not repeat it here.
Volumetric weight does two things to a bulky product.
- It makes shipping a large share of the price. A light product in a big carton can cost more to ship than it does to make.
- It multiplies the gap between zones. Couriers price each zone separately, as we explain in our guide to reading a courier rate card. If a far zone costs ₹12 more per kg than a near one (an assumed figure), a 1 kg parcel differs by ₹12. Our 15 kg pet bed differs by ₹180.
Before we decide who pays, we should look at the carton once more. Folding, nesting, flat-packing or a smaller carton can take slabs off every order, and no pricing choice can find that money for you.
What are the choices, honestly?
There are three, and a fourth that mixes them.
- Absorb it. The price stays and delivery is free. It is simple, and customers like it. But your margin pays for every parcel, and a far-zone order can lose money without anyone noticing.
- Build it into the price. Delivery shows as free and the price goes up. Near customers now pay for far ones, and a rival showing a lower price plus delivery may look cheaper in search results. If more orders start coming from far zones, the average stops working.
- Charge the delivery, by zone or pin code. Your margin is safe in every zone. But the customer sees a second number, and a far-away buyer may walk away.
- Split it. Build the near-zone cost into the price and charge only the difference for far zones, or charge one flat fee for each bulky item.
I like the fourth option best. It keeps the price fair for the customers nearest to us, and it still shows a far-zone buyer what the parcel costs.
Why must the price rise by more than the shipping?
Because we do not keep every rupee we add to the price.
In India, the price a consumer sees normally includes GST, so only 1 ÷ (1 + GST rate) of it is ours. Then the percentage fees come out: a marketplace commission, a collection fee or a payment-gateway fee. Each one is worked out on the price, so each one grows when the price grows.
So the share of each extra rupee that reaches us is:
k = 1 ÷ (1 + GST rate) − percentage fees
Here the fees are shares of the price the customer pays. And the price rise we need is the shipping cost ÷ k.
Take two examples with assumed figures. With 18% GST and a 2% gateway fee, k is 0.8475 − 0.02 = 0.8275, so ₹100 of shipping needs a price rise of about ₹121. With GST at 18% and 15% of percentage fees on a marketplace, k is 0.6975, so the same ₹100 needs about ₹143.
Let me add one catch. A separate delivery charge does not escape this arithmetic. The CGST Act's own illustration of a composite supply, in section 2(30) of CBIC's updated copy of the Act, is goods that are packed and transported with insurance, where the goods are the principal supply. So a delivery charge on your invoice will normally carry GST at the rate of the goods, and a gateway fee applies to the whole payment. Ask your CA how your own invoices treat it, and use courier costs before GST if you claim input tax credit on them.
The margin test, product by product
You need your price list, your rate card and three months of orders. We do it for each bulky product, not for the store as a whole.
- Work out what one order leaves you before shipping. Call it C. It is the price ÷ (1 + GST rate), minus percentage fees on the price, minus any fixed fee per order, minus product cost, minus packaging.
- Find the shipping cost of the packed carton in each zone you deliver to: near, middle and far. Use the chargeable weight, not the product weight.
- Take last quarter's share of orders in each zone, and work out the average shipping cost per order.
- Set your minimum contribution per order, M. This is what every order must leave to pay for ads, salaries, rent and profit. Only you can set it, and I would set it before looking at the shipping numbers, not after.
Now we run three tests.
- Test A, absorb: C − far-zone shipping ≥ M. If this passes, free delivery is safe even on your farthest order.
- Test B, build in: the price rise is the average shipping ÷ k. Two checks follow. Will the new price still sell next to your rivals' price plus their delivery? And does the far-zone order still pay? After the rise, that is C + average shipping − far-zone shipping ≥ M.
- Test C, charge it: the delivery charge for each zone is that zone's shipping ÷ k. Your contribution stays at C in every zone.
Test B has one more number to note. A near customer pays (average − near-zone shipping) ÷ k more than their own delivery costs you. I ask one question here. Would that figure annoy me as a buyer? If yes, it will annoy the customer too.
If we cannot choose between B and C, we test them. Run one for a month and the other for the next month, and compare contribution per 100 visitors to the product page, not the order count. More orders at a thinner margin can leave you with less.
What must you show the customer in India?
The delivery charge, before they pay.
The Consumer Protection (E-Commerce) Rules, 2020 (Gazette notification G.S.R. 462(E), 23 July 2020) cover both cases. Rule 6(5)(b) says a seller on a marketplace must give the platform the total price in a single figure, with a breakup showing all compulsory and voluntary charges, such as delivery charges, postage and handling charges and the applicable tax. Rule 7(1)(e) asks an online business that sells its own stock to display the same total price and breakup to its users.
The Central Consumer Protection Authority also issued its Guidelines for Prevention and Regulation of Dark Patterns, 2023 on 30 November 2023, as per the PIB release of 8 December 2023. Drip pricing is one of the 13 dark patterns on that list. The name says it: charges that drip into the price as the buyer moves through checkout.
So if you choose Test C or the split, show the delivery charge on the product page, against a pin code if you can, and not first at the payment step.
What do the platforms do with shipping?
Each platform can change its terms, so I checked these pages on 27 October 2026.
On Amazon.in, the fees and pricing page says that with Easy Ship or Fulfillment by Amazon, Amazon delivers and charges you a fee based on weight and distance, on the higher of actual and volumetric weight. With Self-Ship you bear the shipping cost, and the shipping and fulfilment page lists an option to set your own shipping price. The referral fee is a percentage of the total selling price, and the closing fee depends on the item price. So a built-in price raises the referral fee, and it can move a product into a higher closing-fee band.
Flipkart's fees and commission page lists four seller fees: fixed fee, commission, shipping fee and collection fee. The shipping fee uses the higher of actual and volumetric weight (length × breadth × height in cm ÷ 5000), by Local, Zonal and National zone. Commission and collection fee are worked out on the final selling price, so they too rise with a built-in price. The page does not say what the customer pays for delivery, so check your Seller Hub.
Shopify's page on understanding shipping rates offers flat, order-amount, weight-based and carrier- or app-calculated rates, with free shipping possible on any of them. Custom shipping profiles let a bulky product have its own rates. Its built-in carrier-calculated rates are listed for fulfilment locations in six countries, and India is not one of them, so an Indian store needs an app for live courier rates at checkout. Shopify is also moving stores from shipping profiles to shipping options set per market, so check which one your store uses.
If you sell outside India
The test does not change. Your zones become carrier zones or countries, and GST becomes VAT or sales tax, or drops out of k where tax is added on top of the price. Read each market's price-display rules before you hide shipping in a price or add it at checkout.
Your calculation
Let us run it for two bulky products. Every figure here is ASSUMED, chosen only to show the arithmetic. None of them is a courier's rate, a market price or our price.
Imagine we sell both on our own website, with GST at 18% for the arithmetic (your product's rate may differ) and a 2% gateway fee, so k is 0.8275. Both ship in cartons billed at 15 kg. Shipping costs ₹250 to the near zone, ₹380 to the middle zone and ₹560 to the far zone. Orders split 20%, 35% and 45% across those zones, so average shipping is ₹435. The minimum contribution M is ₹200.
| Per order (assumed) | Pet bed | Folding study table |
|---|---|---|
| Price, including GST | ₹1,499 | ₹4,999 |
| Reaches you after GST and the gateway fee | ₹1,240 | ₹4,136 |
| Product cost and packaging | ₹660 | ₹2,390 |
| Contribution before shipping (C) | ₹580 | ₹1,746 |
| Test A: C − far zone (₹560) | ₹20, fails | ₹1,186, passes |
| Test B: price rise to build in ₹435 | ₹526, i.e. +35% | ₹526, i.e. +11% |
| Test B: far-zone check, C + 435 − 560 | ₹455, passes | ₹1,621, passes |
| Test C: delivery charge, near / middle / far | ₹302 / ₹459 / ₹677 | ₹302 / ₹459 / ₹677 |
The study table is easy. It passes Test A, so we can offer free delivery on every order. Absorbing costs us ₹435 on an average order, out of ₹1,746.
The pet bed is the hard one. Absorbing leaves it ₹145 on an average order and ₹20 on a far one, both below M. Building in passes on margin, but the price jumps by a third, and a near customer pays (435 − 250) ÷ 0.8275 = ₹224 more than their own delivery costs us. I would not do that to my nearest buyers.
So for the pet bed I would split it. Build the near-zone cost into the price: 250 ÷ 0.8275 = ₹302, which takes it to about ₹1,801. Then charge (380 − 250) ÷ 0.8275 = ₹157 for the middle zone and (560 − 250) ÷ 0.8275 = ₹375 for the far zone. Every zone now leaves about ₹580, and the near customer sees free delivery at a fair price.
To repeat this in a spreadsheet, keep one row per product.
- Share kept:
k = 1/(1 + GST) − fee% - Contribution before shipping:
C = price/(1 + GST) − fee% × price − fixed fees − product cost − packaging - Average shipping:
= SUMPRODUCT(zone shares, zone costs) - Test A:
= C − far-zone cost >= M - Test B: price rise
= average shipping / k, and far-zone check= C + average shipping − far-zone cost >= M - Test C: delivery charge per zone
= zone cost / k - Split: build in
= near-zone cost / k, and charge= (zone cost − near-zone cost) / k
Start with your three bulkiest products, where one wrong average costs you on every far-zone order. If you would like us to look at the carton first, send the product size, packed weight and monthly orders through the contact page. We will tell you if a smaller box would change the answer.
Questions buyers ask
What about returns when shipping is free?
Count them in the shipping cost. On a free-delivery order that comes back, you have paid the outbound freight and any return freight you carry, and you have no sale to show for it. Add your return rate × (outbound + return freight) to the zone costs in the test, or the price you build will come up short. In India, the E-Commerce Rules also ask for the cost of return shipping to be shown to buyers.
Does a free-shipping threshold help with bulky products?
Less than you might hope. Shopify, for example, lets you set a minimum order amount for free shipping on any rate. But if one bulky unit already crosses the threshold, the threshold is just free shipping by another name, so run Test A on that unit first.
Is a flat delivery fee per bulky item a good middle path?
Often, yes. Set the fee from your near-zone or average cost, grossed up as shown in this guide. Then check the far zone: the contribution after the far-zone cost, plus the fee you collect, must still meet your minimum.