Free Shopify store auditSpeed, SEO and conversion leaks — no cost, no obligation.
Claim it
Thriftizer Solutions LLPShopify Select Partner
Book a Growth Audit
Shopify Sep 23, 2026 8 min read

Shopify Discounts: Percentage vs Fixed Amount vs Free Shipping

Percentage scales with the cart, fixed amount doesn't, and free shipping is a 6.8% discount at ₹1,150 AOV. The maths behind each discount type on Shopify, with GST, COD and Markets caveats.

Shopify Discounts: Percentage vs Fixed Amount vs Free Shipping

Percentage off scales with the cart, fixed amount doesn't, and free shipping costs you a flat number that shrinks as a share of the order as the basket grows. That's the whole decision in one sentence. If your average order is ₹800 and your shipping cost is ₹78, free shipping is a 10% discount wearing a disguise. If your average order is ₹4,000, it's under 2% and it's the best-value offer on your Shopify store by a distance.

Everything else is detail. Useful detail, because most of the margin leak we find in discount setups isn't the headline number, it's the stacking rules, the currency conversion, and the GST treatment nobody checked.

Three discount types, three cost curves

Think about what happens to your cost per order as the cart value rises.

  • Percentage. Cost stays constant as a share, rises in rupees. A 15% code costs you ₹150 on a ₹1,000 cart and ₹900 on a ₹6,000 cart. Your best customers get the biggest subsidy.
  • Fixed amount. Cost stays constant in rupees, falls as a share. ₹200 off is 20% of a ₹1,000 cart and 3.3% of a ₹6,000 one. Without a minimum spend it's brutal on small orders.
  • Free shipping. Same shape as fixed amount, except the cost is your actual logistics rate, and it comes with a natural threshold mechanic that percentage discounts can't replicate.

So the type you choose is mostly a statement about which carts you want to subsidise. Percentage rewards the big basket. Fixed amount and free shipping reward the marginal buyer who was going to spend a little anyway.

What a 15% discount actually costs you in India

Less than the sticker, if you price GST-inclusive. Most Indian D2C brands do.

Product listed at ₹1,499. Say your slab is 12%. The net revenue inside that price is 1499 ÷ 1.12 = ₹1,338.39, and ₹160.61 is GST you're collecting on behalf of the government.

Apply 15% off. Customer pays ₹1,274.15. Net revenue is now 1274.15 ÷ 1.12 = ₹1,137.63. You gave away ₹224.85 at the till, but your actual revenue drop is ₹200.76. The remaining ₹24.09 was GST you no longer have to remit, because a discount recorded on the invoice at the time of supply reduces the taxable value.

Short version: divide any inclusive-price discount by (1 + your GST rate) to get the real cost. On a 12% slab, a 15% discount costs you 13.4%. Worth knowing before you set the number.

The caveat is that this only holds for discounts on the invoice. Cashback funded outside the order, wallet credit, gateway offers reimbursed to Razorpay or a card issuer: those don't touch your taxable value. They're a full-price sale with a marketing expense attached, and your accountant will treat them that way.

Free shipping is the cheapest lever, above a certain AOV

Run your own number before you believe the received wisdom. Take your blended per-order forward shipping cost, including packaging and the courier's fuel surcharge, and divide by AOV.

At ₹78 shipping and ₹1,150 AOV, that's 6.8%. Which means a sitewide 5% code is cheaper than free shipping, and nobody tells you that because free shipping sounds free. At ₹2,600 AOV, the same ₹78 is 3%, and now free shipping is the better deal for you and the more persuasive one for the customer.

The threshold is where free shipping earns its place. Set it at roughly 1.3x your median order value, not your average, because the average is dragged up by a long tail of big carts that were never at risk. If your median is ₹1,150, a ₹1,499 threshold asks most under-threshold shoppers to add one more item, not two.

Build it as a price-based shipping rate, not as a shipping discount code. The rate shows up in the cart drawer and at checkout without the customer hunting for a code, and it respects your Shopify Markets zones so you're not accidentally giving free shipping to Dubai on a ₹1,499 order. A shipping discount code, by contrast, only reveals itself at checkout, which is exactly where you don't want to be introducing new information.

When fixed amount is the right call

Three situations, in our experience.

First, narrow price bands. If everything you sell sits between ₹899 and ₹1,499, a flat ₹200 off is legible and the variance in what it costs you is small. Percentage adds nothing.

Second, when you want a hard floor on the discount's rupee value for acquisition. A ₹300-off-first-order code with a ₹1,200 minimum gives you a known CAC contribution per order. A 20% code gives you a number you find out later.

Third, the old direct-response heuristic about how discounts read: on cheap items a percentage looks bigger, on expensive ones the rupee figure looks bigger. ₹300 off a ₹999 tee reads as generous; 30% off a ₹14,000 jacket reads bigger than ₹4,200 does, even though it isn't. The crossover point in rupee pricing is somewhere in the low thousands and it moves by category. Test it rather than trusting the rule.

Where fixed amount goes wrong is Shopify's amount off products type. It applies the amount to each eligible item unless you cap the quantity. We've watched a ₹500-off-products discount take ₹2,500 off a five-item cart during a festive sale because nobody set the maximum. Check that field.

Prepaid discounts: the arithmetic usually disappoints

This is the offer every Indian D2C founder reaches for, and it's the one that most often fails to pay for itself. Here's a worked case.

1,000 orders a month, AOV ₹1,200, 62% COD. RTO runs 22% on COD, 3% on prepaid. A round trip on an RTO costs you roughly ₹190 once you count forward freight, return freight, packaging and the handling time. Your courier charges a ₹35 COD fee per order.

Now offer 5% off for prepaid, and assume it works well: COD share drops from 62% to 42%, so 200 orders shift.

  • RTOs before: (620 × 0.22) + (380 × 0.03) = 147.8
  • RTOs after: (420 × 0.22) + (580 × 0.03) = 109.8
  • 38 RTOs avoided × ₹190 = ₹7,220 saved
  • COD fees avoided: 200 × ₹35 = ₹7,000
  • Total saving: ₹14,220

Cost of the discount: 580 prepaid orders × ₹60 = ₹34,800. You're down ₹20,580 a month.

The killer is leakage. 380 of those customers were paying online anyway, and you just handed them ₹22,800 for behaviour they'd already chosen. Every prepaid discount has this problem and it gets worse as your prepaid share grows, which is the opposite of how incentives should work.

What we'd do instead: a flat ₹30 rather than 5%, which halves the leakage and keeps the offer legible, and spend the difference on COD verification, an OTP step, or simply removing COD on first orders above a value band. At ₹4,000 AOV the maths flips and a percentage prepaid discount can clear comfortably. At ₹1,200 it rarely does.

How Shopify actually combines them

Shopify sorts discounts into three classes: product, order and shipping. You decide, per discount, which other classes it's allowed to combine with. A cart can carry one from each class if all three are set to combine, so a customer can hold a product discount, an order-level code and free shipping simultaneously. Two discounts of the same class never stack.

The trap is automatic discounts. An automatic 10% sitewide plus a combinable WELCOME200 plus a shipping discount is three subsidies on one order, and each one was signed off by a different person in a different week. Before any sale, open the discounts list, filter to active, and read the combination settings row by row. It takes fifteen minutes and it's the highest-return fifteen minutes in your festive prep.

Native types cover more than people assume: amount off products, amount off order, percentage, buy X get Y, and free shipping with a minimum and per-country conditions. For logic Shopify doesn't cover natively, tiered spend bands, category-weighted caps, a discount that respects per-SKU floor margins, you write a discount function and install it as an app. That capability is no longer locked to Plus, which removed one of the older reasons to upgrade. If you're weighing the move anyway, our view on when Plus pays for itself is on the Shopify Plus page, and the build side sits under app development.

Fixed amounts break across Shopify Markets

If you sell into the UAE, the US or Australia alongside India, percentage discounts travel without thinking. 15% is 15% in every currency.

Fixed amounts don't. A ₹300 discount converts at your market's exchange rate and lands as an odd figure, or, depending on how the market is configured, applies as a raw number in the local currency, which is how a ₹300 code becomes an AED 300 code. We've seen it. Check every fixed-amount code against a test order in each active market before it goes live, and prefer percentage for anything that runs cross-border.

Same applies to free shipping thresholds. A ₹1,499 threshold that makes sense in India is around AED 65, which is nowhere near enough to cover an international parcel. Set per-market thresholds explicitly.

Measuring whether the discount did anything

Redemption count is not performance. A code with 4,000 redemptions might have generated zero incremental orders and simply cost you 15% on demand you already had.

Two things worth doing. One, track contribution margin per session rather than conversion rate. A sale that lifts conversion from 1.8% to 2.4% and cuts margin per order by 22% can be a losing trade, and the dashboard that only shows conversion will never tell you. Two, hold something back. Exclude one channel, one region or one segment from the offer for its first week. Imperfect, but it's the only way to see the counterfactual, and it costs nothing to set up.

Also: stop advertising codes if you're using automatic discounts. Shopify's checkout shows a discount field regardless, and every visible field invites a customer to open a new tab and go hunting. Automatic discounts apply silently. Codes are for cases where you need attribution or an audience gate.

A sensible default

For a store under ₹2,000 AOV: free shipping above a threshold as the standing offer, fixed-amount codes for acquisition with a minimum spend, and percentage reserved for end-of-season clearance where you want the discount to scale with the price of what's not moving.

Above ₹3,000 AOV: free shipping unconditionally, because it's now a rounding error against your margin and removing the threshold removes a decision point at checkout.

Either way, cap the stack. One product-level discount, one order-level, one shipping. Write it down somewhere the marketing calendar can see it.

If you want a second pair of eyes on what your current discount rules actually do when they collide, our free store audit covers the checkout and discount configuration along with speed and tracking. Send the store URL and a list of your active codes.

Previous postNext post

Ready to scale your D2C brand profitably?

Let's build a growth engine that drives more traffic, more conversions and more profit.

Book a Growth Audit
📅 Free Audit💬 WhatsApp