Refund & Restock
When a cancellation goes through (customer self-serve or merchant-side), we run two actions automatically.
Default behavior
| Action | What we do | Configurable |
|---|---|---|
| Refund | Full refund to the original payment method. | No (MVP). |
| Restock | Restock every item to the original location it was reserved from. | No (MVP). |
This matches Shopify's "Refund and restock" checkbox — we always tick both for self-serve cancels.
The cancellation detail — reason, refund amount, refund status, and whether items were restocked — is recorded on the Activity page:

Edge cases
Mixed payment methods
If the order was paid with a gift card + credit card, the refund splits the same way Shopify splits it natively. We do not override.
Multi-location restock
If an order pulled inventory from two locations, the restock returns each line item to its original reservation location. There is no merge-to-one-location step.
Manual gateways
Some manual / offline payment methods cannot be refunded via API. For those, the Cancel order row hides on the customer-facing widget — we do not show an option we cannot honor. Cancel from your Shopify admin manually if needed.
Partial fulfilment
If part of the order has shipped, we treat the order as fulfilled and the cancel option hides. Issuing a partial refund/restock for the remaining items requires merchant judgement (e.g., is the carrier still able to recall?). We do not auto-do that.
High-risk orders
If Shopify flagged the order as high risk and you have not approved the charge, the refund still works (no charge to refund). The order goes to cancelled state cleanly.
What about store credit?
MVP does not offer store-credit refunds. Roadmap item — currently planned for the post-MVP P1 release. Email us if this is critical for your store.
What if the customer wants to re-place the order?
They place a new order on the storefront. We do not "uncancel". This is intentional — uncancelling re-reserves inventory and re-charges, which rarely matches the customer's intent.