Skip to main content

Void, restore, or reset a shipment

Sometimes a shipment is recorded against the wrong warehouse, sent to the wrong carrier, or imported from a channel by mistake — and you need to undo it. Voiding a shipment reverses its inventory, reopens its fulfillment order, and keeps the record for history; restoring a voided shipment puts it back. This guide also covers resetting a fulfillment status that has drifted out of sync with a sales channel.

A shipment here means a SalesOrderFulfillment — the executed shipment record, as opposed to the fulfillment order (the plannable per-warehouse intent behind it). The distinction matters for every action on this page, and it's explained in Two-tier fulfillment.

Which action do I need?

You want to…UseWhereReversible?
Undo a shipment recorded in errorVoid shipmentOrder → Fulfillment tabYes — Restore
Put a voided shipment backRestoreOrders → Fulfillments listYes — Void again
Hide a finished shipment from the working listArchiveOrders → Fulfillments listYes — Unarchive
Recalculate a status stuck on Out of SyncReset fulfillment statusAdmin / supportN/A — recomputes
"Delete" now means "void"

Voiding replaced the old hard Delete for shipments. The action still uses the delete control in some places, but it no longer erases the record — it soft-cancels the shipment (status Canceled), keeps every row for history, and can be restored. There is no way to permanently destroy a shipment record from the UI.

Before you begin

  • You need the Fulfill sales orders permission to void a shipment. The Void shipment action is hidden without it.
  • Restoring, archiving, and unarchiving shipments require write access to the Fulfillments area (Orders → Fulfillments).
  • Resetting a fulfillment status requires the Update sales orders permission.
  • Open the order you want to work with from Orders → Sales Orders. The examples below use SO-DOCS-0001 for customer Blue Bottle Retail, shipped from Main Warehouse.

Void a shipment

Void a shipment when it was recorded against the wrong warehouse, dispatched to the wrong provider, or imported from a channel that reported it in error. Voiding reverses the shipment's inventory movements (restoring the FIFO layers it consumed), returns the parent fulfillment order's budget and reopens it so the work can be re-fulfilled, and cancels the carrier order where the provider still allows it.

  1. Open the sales order and go to the Fulfillment tab.
  2. Find the shipment card for the shipment you want to undo, and open its actions menu.
  3. Click Void shipment.
  4. In the Void shipment dialog, read what will happen, then enter an optional Reason (optional) — for example, "wrong warehouse selected."
  5. Click Void shipment to confirm (or Keep shipment to back out).

What you'll see: a toast reads "Shipment voided — its fulfillment order is reopened to be re-fulfilled." The shipment card switches to a read-only Voided state showing who voided it, when, and the reason, and its reopened fulfillment order returns to the board as pending work you can fulfill again.

Manual and channel shipments void even when marked shipped

An operator-recorded shipment — a manual shipment you keyed in, a pickup (Click & Collect) shipment, or a sales channel shipment imported from a marketplace — is a phantom record with no live carrier behind it. You can void one at any time, even once it reads as fulfilled, because voiding it undoes a mis-entry or a bad import rather than recalling a real package.

When a shipment has already shipped at the carrier

A shipment handed to a real carrier (ShipStation, Starshipit, and similar) and reported back as shipped is treated as a real, dispatched package. SKU.io first tries to cancel it at the provider. If the carrier can no longer remove the order, voiding is blocked with a message that the fulfillment is already shipped, and you're offered a local-only void instead.

  1. Click Void shipment as above. If the shipment is shipped at the carrier, the This shipment has already shipped dialog appears.
  2. Read the warnings: the physical package isn't stopped or recalled, on-hand stock will read higher than what's in the warehouse until you reconcile, and the reopened fulfillment order could ship a second time if re-fulfilled.
  3. Type VOID in the confirmation box.
  4. Click Void Local Copy (or Keep shipment to stop).

What you'll see: "Local copy voided — its fulfillment order is reopened to be re-fulfilled." The record in SKU.io is reversed; the goods stay on their way to the customer.

A local-only void doesn't recall the package

Forcing a local void changes only the record in SKU.io. It doesn't cancel the carrier order or stop the shipment. Inventory is added back as if the goods never left, so your on-hand count will overstate physical stock until you reconcile, and the reopened fulfillment order can be fulfilled again — re-fulfilling would ship a second package. Use it only to correct a mis-recorded shipment, never to undo a real one. To take goods back from a customer, raise a return instead — see Process returns: RMAs and credits.

Some shipments can't be voided in isolation

An Amazon MCF shipment or a shipment that's part of a merged shipment (a merge group) can't be voided on its own, because doing so would leave the linked records out of step. Voiding is refused for these; reshape the plan through the merge tools first. See Split, move, and merge fulfillments. An already-voided shipment can't be voided again.

Restore a voided shipment

Restoring un-voids a shipment: it re-consumes the fulfillment order budget, returns the shipment to the status it held before the void, and — when that status was fulfilled on a warehouse that moves stock — re-runs the inventory deduction. Restore is available from the Fulfillments list, where voided shipments are kept.

  1. Go to Orders → Fulfillments.
  2. Set the Voided filter to All or Only Voided so the voided shipment shows. A voided shipment carries a Voided chip.
  3. On the shipment's row, click the Restore action (or open the row menu and click Restore).
  4. In the Restore Fulfillment dialog, confirm by clicking Restore.

What you'll see: a success toast confirming the shipment was restored — the message names the shipment, for example "The sales order fulfillment … restored successfully." The shipment leaves the voided state and returns to its pre-void status, and — if it was fulfilled — its inventory is deducted again.

What restore re-does depends on the pre-void status

A shipment that was only submitted (dispatched, not yet shipped) when you voided it restores back to submitted with no inventory change. A shipment that was fulfilled restores back to fulfilled and re-consumes stock through the normal fulfillment path, exactly like marking it shipped again. If its channel fulfillment was cancelled during the void, restoring re-pushes it so the channel shows the order fulfilled again.

Restore can be blocked

A restore is refused when the shipment is not voided, when it belongs to a merge group, or when there is no longer enough allocated stock to cover its lines (re-fulfilling would over-commit inventory). Free up or re-allocate stock, then try again. See Approve, reserve, and allocate stock.

Archive or unarchive a shipment

Archiving hides a finished shipment from the working Fulfillments list without changing anything about the shipment itself. It's housekeeping, not a status change.

  1. Go to Orders → Fulfillments.
  2. On the shipment's row, click Archive (or select several rows and use the bulk Archive action). Use Unarchive to bring one back.

What you'll see: the shipment drops off (or returns to) the default list view. Archiving something already archived returns a warning rather than an error, so bulk archiving is safe to repeat.

Marking a packing slip as printed is separate

Marking a shipment's packing slip as printed sets its printed timestamp, which drives a list column and filter — it's part of the packing-slip workflow, not archiving. See Generate invoices, packing slips, and accounting.

Reset an out-of-sync fulfillment status

An order's fulfillment status can land on Out of Sync when SKU.io's shipments no longer match what a sales channel shows — for example, the shipments were deleted or voided in SKU.io while the channel order still reports fulfillments. A reset recomputes the fulfillment status from the order's actual fulfillment data so the badge reflects reality again.

A reset is accepted only while the fulfillment status is Out of Sync. Against an order in any other fulfillment status it's rejected with "Fulfillment status can only be reset when it is out of sync." When it runs, it recalculates the status from the order's current shipments and reports "Fulfillment status has been recalculated," moving the fulfillment badge to whatever those shipments imply — for example, back to Fulfilled, Partially Fulfilled, or Unfulfilled.

Reset requires the Update sales orders permission. If an order is stuck on Out of Sync and you can't clear it, ask an administrator or SKU.io support to run the reset for that order.

Fix the drift, not just the badge

Reset recomputes the status from what's in SKU.io now; it doesn't re-sync with the channel. If the underlying drift persists — a channel still showing a fulfillment SKU.io doesn't — reconcile the channel side too. Background on how channel orders and fulfillment write-back stay aligned is in How channel orders sync.

Next steps

Last verified: