· 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:

  • id
  • name (order number)
  • financialStatus
  • fulfillmentStatus
  • Line items (variantId/SKU and 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 keep command = UPDATE), and set action = REFUND
  • For each refunded item, add a line row with topRow = FALSE and itemCommand = REFUND, then provide:
    • variantId (preferred) or variantSKU
    • refundQuantity (units to refund)
    • (Optional) refundLineAmount (override the calculated refund for that line)
    • (Optional) restock = TRUE/FALSE and restockLocation (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

  1. In DataEase, start New Import → Orders
  2. Upload your edited file
  3. Map columns
  4. 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 restockLocation when you need a particular location
  • Using variantId gives 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.