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

Waiving Order Balances on Shopify: Short-Paid COD Orders in India

Shopify can now waive an order's remaining balance from the payment card. Here's how to use it on short-paid COD orders, what it does to your GST invoice, and the carrier deductions you must never waive.

Waiving Order Balances on Shopify: Short-Paid COD Orders in India

Short answer, because you probably have a stack of orders waiting: open the order in Shopify admin, look at the payment card where the balance due is shown, and use the option to waive the remaining amount. Confirm it, and the order closes out as paid with the waived figure recorded against it. Shopify added this control on 29 October, which is good timing for anyone in India whose Diwali COD volume has just finished landing and whose Shopify waive outstanding order balance problem is really forty-odd orders stuck at "Partially paid" because the delivery boy took ₹1,450 on a ₹1,499 order.

Before you start clicking, there's a distinction that matters more than the mechanics: a genuine short collection at the customer's door is not the same thing as a courier remittance that arrived net of freight and COD fees. Waiving the second one quietly destroys your unit economics. More on that below.

Why COD orders in India end up a few rupees short

Four causes, roughly in order of how often we see them.

The customer doesn't have change and the delivery agent doesn't either, so ₹1,499 becomes ₹1,450 or ₹1,500. Rounding down is more common than rounding up, for obvious reasons.

The customer negotiates at the door. It happens, especially on apparel and footwear where the alternative for the agent is a refusal and a return trip. Some couriers tacitly allow a small variance rather than book an RTO.

A part-prepaid order. You collected ₹200 on Razorpay as a COD confirmation deposit, the balance was meant to be collected on delivery, and the amounts didn't reconcile cleanly.

Someone recorded a manual payment in Shopify for the remitted amount rather than the invoiced amount. This is the one that produces the phantom balance: the order looks short-paid but the customer actually paid in full and the courier simply deducted its charges before sending you money.

How to waive an outstanding balance on a Shopify order

From the order page, in the payment section, the balance due row gives you the waive option. You enter or confirm the amount, Shopify records it as a waived balance, and the order's payment status moves to paid. The waived amount stays visible on the order timeline, so your finance person can see what happened six weeks later without asking you.

Two practical notes. Staff permissions matter — if your ops executive can't see the option, that's a permissions issue, not a missing feature. And if your admin hasn't surfaced it yet, Shopify rolls these things out in waves; it'll appear.

Removing a waived amount from the order page

Same place. The waived line on the payment card can be removed, which restores the outstanding balance and puts the order back to partially paid. Useful when the remittance was simply late and the money turns up two days after someone wrote it off. It is not useful after you have exported the month to Tally and filed, so do your waiving before reconciliation, not after.

Does waiving a balance change the GST invoice total?

No. This is the part that trips people up.

Waiving a balance in Shopify is a cash-collection record. It does not reissue your tax invoice, it does not reduce taxable value, and it does not generate a credit note. The supply happened at ₹1,499. Your GST liability is calculated on ₹1,499 regardless of whether the courier handed you ₹1,450.

Work it through on that single order, GST at 18% on an inclusive price:

  • Taxable value: 1,499 ÷ 1.18 = ₹1,270.34
  • GST payable: ₹228.66
  • Cash actually received: ₹1,450
  • Shortfall absorbed: ₹49

You remit ₹228.66 either way. If your contribution margin on that SKU was ₹300, the ₹49 write-off takes 16% of it. That is a worse number than most founders expect from "it's only forty-nine rupees".

Can you treat the ₹49 as a discount and reduce your output tax? Generally not. A discount given after the supply only reduces taxable value under GST if it was agreed at or before the time of supply and is linked to the specific invoice — a courier rounding down at the door meets neither test. In practice the shortfall sits in your P&L as a write-off or a collection loss, not as a reduction in sales. Ask your CA how they want it coded before you create 200 of these in a festive month; the account head they choose determines whether it shows up as a cost you can see or disappears into "miscellaneous".

If the customer genuinely returned part of the order or you genuinely agreed a price reduction, that's a different transaction and it needs a credit note under Section 34, issued through your invoicing system, not a waive on the Shopify order.

Shiprocket COD remittance shortfalls: the ones you must not waive

Aggregators and carriers remit COD net of their charges. A ₹1,499 order might come back to your bank account as something closer to ₹1,380 after forward freight, the COD handling fee and GST on those services. Nothing was short-collected. The customer paid ₹1,499.

If you waive that ₹119 on the Shopify order, three things break. Your revenue is understated by the exact amount of your shipping cost, so your gross margin looks fine when it isn't. Your shipping expense disappears from the P&L, so you can't see freight creeping up when the carrier revises slabs. And your COD recovery rate, the metric that actually tells you whether a pin code is worth serving, becomes meaningless.

The test is simple. Pull the carrier's COD remittance report and look at the collected amount per AWB, not the credited amount. If collected equals the order total, you have a fee deduction and it belongs in your shipping expense ledger. If collected is less than the order total, that's a real shortfall and the waive control is the right tool.

Carriers also hold back COD against RTO charges and weight-discrepancy adjustments, and those appear in the remittance as separate debits. Treat them as costs. A weight dispute on a Delhivery shipment is not a customer who paid less.

Marking a Shopify order paid when the courier collected less

The old workaround was to hit "Mark as paid" for the full invoice value and move on. Fast, and it overstates cash collected by exactly the gap. At the end of the quarter your Shopify sales total doesn't tie to your bank statement and nobody can explain the difference.

The other old workaround was recording a partial manual payment of ₹1,450 and leaving the order partially paid forever. That's honest, but those orders then clog every filter you use. Flow automations that trigger on paid orders don't fire. Your loyalty app doesn't award points. And at month end somebody has to decide what to do with them anyway.

Waiving replaces both. Record the ₹1,450 you actually received as the payment, waive the ₹49, and the order is closed with the cash figure intact and the gap documented.

Why the order still shows a balance after you've been paid

If an order shows outstanding after the COD money has clearly landed, check these in order:

  1. Was the COD payment ever recorded in Shopify? Many Indian stores run COD as a manual payment method, which means someone or something has to mark it. If your ops team marks payments in batches on Mondays, Friday's orders will all look unpaid.
  2. Did a COD app record the payment via webhook on delivery, using a different amount than the order total — for instance a prepaid deposit netted off twice?
  3. Was a partial capture done on the prepaid portion, with the balance never captured? Razorpay and Cashfree partial-capture flows do this on hybrid orders.
  4. Is there an edited order in the mix? Editing an order after it ships creates a balance that has nothing to do with the courier.

Four is the one people miss. If your CX team added a free replacement item to an order to settle a complaint, Shopify will cheerfully ask for the money.

Set a waive threshold before the next peak, not during it

Write down a rupee figure and a rule. Ours, for stores that ask: anything under ₹100 gets waived same-day by the ops executive without escalation. ₹100 to ₹500 goes to a weekly review where somebody checks the AWB against the carrier's collected amount. Above ₹500 it's a claim against the carrier, because repeated large shortfalls from the same hub are a pattern, not an accident.

The threshold is a cost decision, not a moral one. If chasing ₹40 costs twenty minutes of a person's time, chasing it is the expensive option.

At festive scale the arithmetic is worth doing once. Four hundred COD orders in the week around Diwali, six percent short-collected, average gap ₹40: that's twenty-four orders and ₹960 of real money. The ₹960 is irrelevant. The twenty-four orders sitting in an unresolved state while your accountant tries to close October is not. The reason to fix this process is the hours, not the rupees.

Automating it without losing the audit trail

You can't currently bulk-waive from the orders list, so high-volume stores end up building something. The sane version: import the carrier's COD remittance CSV, match on AWB or order name, flag every order where collected is less than order total, and tag those in Shopify so a human reviews a filtered list rather than scrolling. Shopify Flow can handle the tagging side if the data is already on the order; anything involving an external remittance file needs a small app or a scheduled script. We build these as private apps when the volume justifies it — the business case is usually one ops hire's worth of time per quarter, which is the threshold at which custom app work pays for itself rather than being a nice idea.

For stores not at that scale, a shared sheet and a Friday half-hour is genuinely fine. Don't build software to solve twenty-four rows.

Quick answers

Can I waive a balance on a partially paid order that's already fulfilled? Yes. Fulfilment status and payment status are independent in Shopify, which is exactly why COD works at all.

Does the customer get notified? Don't assume either way — send one test order through on your own store and watch what arrives. Notification behaviour varies with your settings and your apps, and for a short collection you usually don't want an email going out at all.

Will waiving show up in my Shopify finance reports? The order's net payment reflects what you actually collected. Check your sales reports after the first few and confirm they match the bank before you process a hundred.

What about waiving as a goodwill gesture on a prepaid order? Wrong tool. That's a refund, and a refund produces the correct GST treatment through a credit note.

Pick ten short-paid orders from last week, pull the matching AWBs from your carrier's remittance report, and check whether the gap is a fee deduction or a real shortfall. Whatever that ratio turns out to be is the number that tells you which of these processes you actually need. If the reconciliation is tangled enough that nobody wants to start, our team in Bengaluru does a free store audit that covers order and payment configuration, and we'll tell you if the fix is a process change rather than a build. Usually it is. If it isn't, a developer on retainer can close it in a sprint.

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