· DataEase · Tutorials  · 3 min read

Bulk Unfulfill Orders

Reverting fulfilled items back to Unfulfilled manually can be extremely time-consuming. DataEase makes it easy: export your orders, prepare unfulfill actions with optional restock settings, and import them back to Shopify—all with validation.

🎯 Goal

Revert fulfilled items back to Unfulfilled in bulk—optionally restocking inventory and choosing a location—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, Fulfilled/Partially fulfilled) to select orders you plan to unfulfill.


2. Prepare the Unfulfill File

Open the exported file in Excel or Google Sheets. Choose one of the patterns:

A. Unfulfill the Entire Order

  • Add a row with the order id and set action = UNFULFILL
  • (Optional) restock = TRUE/FALSE — return items to inventory
  • (Optional) restockLocation — where to restock (if omitted, the app will use the original fulfillment location when possible)

B. Partial Unfulfill (Line-Level)

  • Add the order main line with topRow = TRUE (you can keep command = UPDATE) and set action = UNFULFILL
  • For each item to revert, add a line row with topRow = FALSE and itemCommand = UNFULFILL, then provide:
    • variantId (preferred) or variantSKU
    • unfulfillQuantity (units to revert)
    • (Optional) restock = TRUE/FALSE and restockLocation

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 issues flagged in Validation Status (e.g., non-editable/locked order, missing identifiers, invalid quantities).


4. Run the Import and Verify

After validation passes, click Run Import to unfulfill the orders in Shopify.

Once complete, download the result file and spot-check in Shopify Admin: fulfillment status should reflect the change (items moved back to Unfulfilled), and inventory adjusted if you enabled restock.


📝 Important Notes

  • Eligibility: Some fulfillments can’t be canceled (e.g., already delivered/locked). Validation will flag these
  • Inventory: Set restock=TRUE to return items to available inventory. Use restockLocation to direct stock to a specific location
  • Quantities: You can partially unfulfill a line—make sure unfulfillQuantity ≤ fulfilled quantity
  • Identifiers: Use variantId for the most reliable match; use SKU only if unique
  • Field naming: In some templates this action may appear as CANCEL_FULFILLMENT. If your export shows that value, use it instead of UNFULFILL

💡 Minimal CSV Examples

Unfulfill an entire order (and restock to the original location):

id,action,restock
gid://shopify/Order/123,UNFULFILL,TRUE

Unfulfill specific lines with quantities (choose a restock location):

id,topRow,command,action,itemCommand,variantId,unfulfillQuantity,restock,restockLocation
gid://shopify/Order/456,TRUE,UPDATE,UNFULFILL,,,,,
gid://shopify/Order/456,FALSE,,UNFULFILL,gid://shopify/ProductVariant/111,2,TRUE,"Warehouse A"
gid://shopify/Order/456,FALSE,,UNFULFILL,gid://shopify/ProductVariant/222,1,TRUE,"Warehouse A"

Unfulfill by SKU (no restock):

id,topRow,command,action,itemCommand,variantSKU,unfulfillQuantity,restock
gid://shopify/Order/789,TRUE,UPDATE,UNFULFILL,,,,,
gid://shopify/Order/789,FALSE,,UNFULFILL,SKU-RED-M,1,FALSE

🎉 That’s it!

Your orders are now unfulfilled in bulk.
If you run into any issues or have questions, feel free to contact our support team.