· DataEase · Tutorials · 3 min read
Bulk Refund Shopify Orders
Processing refunds for many orders manually can be extremely time-consuming. DataEase makes it easy: export your orders, prepare refund actions with optional restock and notifications, and import them back to Shopify—all with validation.
🎯 Goal
Issue full or partial refunds for many orders at once, optionally restocking inventory and notifying customers, using CSV/Excel and DataEase.
📋 Step-by-Step Instructions
1. Export Orders (Optional, to Target Correctly)
In DataEase, go to New Export → Orders. Include at least:
idname(order number)financialStatusfulfillmentStatus- Line items (
variantId/SKUand quantities) for reference
Use filters (date range, Paid status, channel/market) to select refundable orders.
2. Prepare the Refund File
Open the exported file in Excel or Google Sheets. Use one of the patterns below:
A. Full Refund (Order-Level)
Add a row with id of the order and set action = REFUND.
Optional fields:
refundTotal— exact amount to refund (for full refund, match order total)refundShippingAmount— shipping portion to refund (if applicable)refundReason,refundNote,notifyCustomer= TRUE/FALSE
B. Partial Refund (Line-Level)
- Add the order main line with
topRow= TRUE (you can keepcommand= UPDATE), and setaction= REFUND - For each refunded item, add a line row with
topRow= FALSE anditemCommand= REFUND, then provide:variantId(preferred) orvariantSKUrefundQuantity(units to refund)- (Optional)
refundLineAmount(override the calculated refund for that line) - (Optional)
restock= TRUE/FALSE andrestockLocation(if restocking to a specific location)
- To refund only shipping, omit line rows and set an order-level
refundShippingAmount
When done, save the file as .xlsx or .csv.
3. Import & Validate
- In DataEase, start New Import → Orders
- Upload your edited file
- Map columns
- Run Validation
Fix anything flagged in Validation Status (e.g., non-refundable status, invalid amounts, missing identifiers).
4. Run the Import and Review Results
After validation passes, click Run Import to process the refunds in Shopify.
Once complete, download the result file and spot-check a few orders in Shopify Admin to confirm refunds, restocks, and notifications were applied as intended.
📝 Important Notes
- Refunds are available for paid orders and cannot exceed the captured amount remaining
- Multiple partial refunds are allowed until the captured total is exhausted
- Restock returns items to available inventory; specify
restockLocationwhen you need a particular location - Using
variantIdgives the most reliable match; use SKU only if unique - Consider taxes/discounts: DataEase will calculate them from refunded lines unless you override with
refundLineAmount/refundTotal
💡 Minimal CSV Examples
Full refund of an order:
id,action,refundTotal,refundReason,notifyCustomer
gid://shopify/Order/123,REFUND,59.99,"Item defect",TRUE
Partial refund for a single line (with restock):
id,topRow,command,action,itemCommand,variantId,refundQuantity,restock,restockLocation
gid://shopify/Order/456,TRUE,UPDATE,REFUND,,,,,
gid://shopify/Order/456,FALSE,,REFUND,gid://shopify/ProductVariant/111,1,TRUE,"Warehouse A"
Refund shipping only:
id,action,refundShippingAmount,refundNote
gid://shopify/Order/789,REFUND,5.00,"Shipping delay compensation"
🎉 That’s it!
Your refunds are now processed in bulk.
If you run into any issues or have questions, feel free to contact our support team.