Cancel order has two money settings: a restocking fee, and whether a refund is sent straight away or waits for you. Both live on Editing Tools → Tools → Cancel order. A customer is always told the exact amounts before they confirm, and the order is cancelled at once either way: you cannot stop a customer cancelling.
Restocking fee
Restocking fee is No fee until you change it. Choose A percentage to keep a share of the refund, or A fixed amount to keep one amount in your store's currency. The fixed amount applies only to orders placed in your store's currency; on an order in another currency no fee is kept and the order's entry on the Order changes page says so, so use a percentage if you sell in other currencies.
Fee amount is the percentage (up to 100) or the amount. It does nothing while the fee is set to No fee, and the page tells you so next to the control: if the fee is on but the amount is 0, a note says it never keeps anything.
What the customer sees before they press Cancel my order, for a 20 percent fee on a $46.00 order:
Refundable amount: $46.00
Restocking fee: $9.20
You will receive: $36.80
The refund Shopify then sends is exactly that net figure, and the order's entry shows the amount before the fee, the fee kept and the refund for this cancel.
A fee of 100 percent keeps everything. The customer sees "The restocking fee is the whole amount, so nothing will be refunded. Your order is still cancelled.", is not asked where a refund should go, and the order is cancelled with no refund. The Order changes page reads No refund due, not "waiting".
Cancellation refunds
Cancellation refunds decides when the refund is sent. The cancel itself always happens straight away.
Choice | What happens |
Follow the store setting | Follows Refund customers automatically in Global settings. That setting is off by default, so refunds wait for you until you turn it on. |
Refund straight away | The refund is sent as soon as the customer cancels, whatever Global settings says. |
Wait for my approval | The refund always waits until you approve it, whatever Global settings says. |
When a refund waits, the customer is told "Your refund of $36.80 is waiting for the store to approve it. Nothing has been refunded yet." You see A refund is waiting for your approval on the order, and Approve refund sends it once. Nothing is refunded, and no timer approves it for you.
Related settings on the same page
Days until store credit expires sets how long store credit lasts when a customer chooses it. A 30-day setting produced a Shopify store credit account entry expiring exactly 30 days later.
Cancel is not offered on an order that has shipped, in whole or in part, because Shopify refuses to cancel it. See Why can't my customer cancel their order?.
On an order that is part of a subscription, Cancel is replaced by a note that cancelling the order does not cancel the subscription, with a Manage my subscription button.
What this does not do
It does not let you stop a customer cancelling. The order is cancelled at once, and only the refund can wait for you.
It does not charge a fee by itself. The restocking fee is No fee until you change it, and a fee of 0 keeps nothing.
It does not refund automatically after a wait. A refund that waits for your approval stays waiting until you press Approve refund.
It does not keep a fixed fee on an order in another currency. Use a percentage if you sell in other currencies.
It does not cancel a subscription. Cancelling an order that is part of a subscription is not offered, and the customer is pointed to Manage my subscription.
For where a refund goes once it is sent, see Where does the refund go when a customer cancels their order?. To turn cancelling on, see How do I let customers cancel their own Shopify order?.
