Mark Sales Order for Pickup
POST/api/sales-orders/:salesOrder/mark-for-pickup
Stages a subset of the order's allocated line quantities for customer pickup. The order's pending fulfillment work is parked in an awaiting-pickup state — no shipment record is created until the customer actually collects — and the request records who marked the items, when, and the expected pickup date. Partial quantities are supported, so some units can be marked for pickup while the rest are fulfilled normally.
orders:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Authentication: Requires Bearer token.
Request body fields:
- warehouse_id (integer, required): Warehouse the customer will collect from. Every listed line must be routed to this warehouse.
- expected_pickup_at (date-time, optional): When the customer is expected to collect.
- note (string, optional, max 2000): Free-text note; recorded on the order as "Marked for pickup: <note>".
- items (array, required, min 1): Lines and quantities to mark for pickup.
- items.*.sales_order_line_id (integer, required): Sales order line; must belong to the order and the given warehouse.
- items.*.quantity (number, required, > 0, < 100000): Quantity to mark; cannot exceed the line's unfulfilled quantity.
Behavior:
- Returns the ID of the pickup-staged fulfillment order in
fulfillment_order_id. - Items with a zero quantity are ignored; if no item has a positive quantity the request fails with 400.
Path parameters:
- salesOrder (required): Sales order ID.
Requires permission: sales_orders.fulfill
Request
Responses
- 200
- 400
- 401
- 403
- 404
- 422
- 429
OK
Response Headers
Bad Request
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.
Unprocessable Entity
Response Headers
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.