Why does refunding a Buy X Get Y order leave the discount broken and the confirmation email wrong?

Editing an order or issuing a refund on a Buy X Get Y purchase can leave Shopify showing a discount that no longer makes sense, and the customer notification email often repeats the same wrong number.

discountsordersrefundsbuy-x-get-yautomatic-discounts

What's going on

A merchant runs a Buy X Get Y promotion, say buy two shirts and get one free, then needs to edit the resulting order. Maybe the customer wants to swap a size, cancel one unit, or return the item that triggered the free item. After the edit or partial refund, the discount shown on the order no longer matches reality: the free item is still discounted even though it no longer qualifies, or the refund total is off by the value of the promotion in a way that does not reconcile.

Making it worse, the automatic refund notification email goes out to the customer with that same mismatched number, so the customer sees a refund confirmation that does not line up with what they were actually charged or actually returned. That is usually the moment merchants notice something is wrong, because at that point it has become a customer service problem, not just an internal bookkeeping quirk.

This is not a one-off bug tied to a specific store's setup. It comes from how order editing and refunds interact with automatic, order-level discounts in general. Line-item discounts added by hand during an edit are recalculated correctly, but discounts generated by an automatic promotion like Buy X Get Y are not necessarily re-evaluated the same way once the order has already been placed.

Why it happens

Order editing is built primarily to let staff add items, change quantities, or apply new discounts to an existing order. It recalculates taxes and totals, but it generally does not re-run the original automatic discount logic, including Buy X Get Y, against the new set of line items. The discount allocated at checkout stays attached to whichever line items it originally touched, even if those line items change or disappear.

Buy X Get Y creates a dependency between two line items, the qualifying purchase and the discounted item earned by it. Editing and refund tools tend to treat each line item's discount allocation independently rather than modeling that dependency, so when one half of the pair is edited or refunded, the other half's discount can be left orphaned instead of being automatically adjusted or removed.

Refund notification emails pull from the order's discount and total fields at the moment the refund is processed. If those fields are stale or inconsistent for the reasons above, the email simply reports what is in the order record, since there is generally no separate check that catches an internally inconsistent discount before the customer is notified.

5 ways to fix it

1

Avoid editing the order at all when Buy X Get Y is involved

Order editing recalculates taxes and totals, but it does not re-run automatic, order-level discounts like Buy X Get Y against the new set of line items. If you need to change quantities or swap items on an order carrying a Buy X Get Y discount, the safer path is usually to cancel and refund the whole order and have the customer reorder, rather than editing it, so the discount gets evaluated fresh against a clean cart instead of being left stuck on line items that no longer make sense.

2

Check and correct the discount amount before you finalize the refund

Refund screens generally let you review and adjust line-item amounts before you complete the refund. If a Buy X Get Y promotion no longer applies cleanly, for example the customer returned the item that qualified them for the free or discounted item, manually correct the amount on the affected line items before submitting the refund instead of trusting whatever Shopify pre-fills.

3

Preview the numbers before the customer notification goes out

The refund summary and the customer notification email are generated from the same order data, so a stale discount allocation shows up in both places. Before clicking through the refund, check the dollar amounts against what the order should actually total. If anything looks wrong, uncheck the option to notify the customer, fix the order, and send a corrected explanation yourself rather than letting an automatic email go out with the wrong figures.

4

Consider structuring the promotion to avoid the edge case entirely

Much of this trouble comes from running the promotion as a fully free line item, which leaves no clean fallback if the qualifying item is later edited or returned. Where your margins allow it, a percentage-off structure on the discounted item, for example fifty percent off instead of one hundred percent off, tends to prorate and reverse more predictably during edits and refunds than a zero-dollar line item does.

5

Make discount verification a standing step for returns and refunds

If Buy X Get Y is a recurring promotion rather than a one-off, add a checklist step for staff so any return or exchange touching one of these orders gets a manual total check before the refund is issued. It adds a little time per order, but it avoids sending a customer a refund confirmation that does not match what they were actually charged.

Bottom line

There is no single setting that fixes this. Buy X Get Y is a useful native discount, but Shopify's order-editing and refund tools were not built to fully re-evaluate that kind of discount once an order is already placed, so the burden falls on staff to catch mismatches before the customer sees them. If this keeps coming up in a store that runs Buy X Get Y often, it is worth looking for a returns or refund tool, from BesPoP or elsewhere, that explicitly recalculates the discount before a refund goes out rather than relying on manual review every time.

Still Stuck?

Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.