Mark Inbound Shipment as Abandoned
POST/api/walmart/:integrationInstance/wfs/inbound-shipments/:shipment/abandon
Mark a WFS inbound shipment as abandoned: it will never arrive, but Walmart can no longer cancel it (for example, a carrier rate quote is attached and its void window has passed, or the shipment is past Walmart's cancellation window). Walmart keeps reporting such a shipment as in flight and counting its units as inbound indefinitely.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
This is recorded in SKU.io only — nothing is sent to Walmart, and status keeps Walmart's value. The shipment stops counting as inbound in SKU.io (WFS inventory effective_inbound_quantity, replenishment, open-shipment counts), is hidden from the inbound shipment list by default, and its source Warehouse Transfer / Purchase Order is removed so the reserved source stock is released. Only this shipment is affected, not other shipments under the same inbound order.
Allowed while Walmart reports CREATED, AWAITING_DELIVERY, SHIPPED or IN_TRANSIT with no received units and no delivery date. If Walmart later reports the shipment delivered, receiving or received, SKU.io clears the abandoned mark automatically on the next sync.
Body:
- reason (string, required, 3–2000 chars): what happened to the shipment.
Authentication: Requires Bearer token.
Returns 200 with the updated shipment, 404 when the shipment does not belong to the instance, 422 when the reason is missing, the shipment cannot be abandoned (abandon_blocked_reason on the shipment says why), or its source transfer has already shipped.
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Validation failed — the body is a field → messages map (Laravel shape) or the platform envelope with a stable machine-readable code. Fix the payload and resubmit.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.