Skip to main content

Dispatch Fulfillments for Sales Order

POST 

/api/sales-orders/:salesOrder/dispatch-fulfillments

Runs the fulfillment dispatcher for a single sales order: validates that the order is dispatchable (approved, fulfillment status in sync, all lines mapped to products, a shipping method selected, valid addresses), groups the fulfillable allocated lines by warehouse, and submits each warehouse's pending fulfillment order to the shipping provider or fulfillment service configured for that warehouse.

Required scope: orders:write

Grant this scope to your token under Settings → Developer → Personal Access Tokens.

Authentication: Requires Bearer token.

Request body fields (all optional; each flag bypasses one pre-dispatch check):

  • overrideOutOfSync (boolean, default false): Dispatch even when the order's fulfillment status is out of sync with the sales channel.
  • overrideSelectShippingMethod (boolean, default false): Dispatch even when no shipping method has been selected or mapped for the order.
  • overrideUnmappedLines (boolean, default false): Dispatch even when some order lines are not mapped to products (only mapped lines are dispatched).
  • overrideManualDispatch (boolean, default false): Dispatch warehouses that are configured for manual dispatch only.
  • overridePartialDispatch (boolean, default false): Allow dispatching when only part of the order's quantity is currently fulfillable.

Behavior:

  • Dispatch is treated as user-requested, so warehouse auto-dispatch eligibility rules are bypassed.
  • Orders with a pickup shipping method are staged for customer pickup instead of being submitted to a carrier.
  • Submitting a fulfillment order to a provider does not create a shipment record; the provider's ship confirmation records the shipment later. The data array therefore contains only fulfillment records created immediately during dispatch and is often empty even after a successful dispatch.
  • Failed pre-dispatch checks do not error — the order is skipped and a note explaining why is recorded on the order; the response returns an empty data array.
  • Concurrent dispatch requests for the same order are serialized; if another dispatch is already running the request fails with 409.

Path parameters:

  • salesOrder (required): Sales order ID.

Requires permission: sales_orders.fulfill

Request

Responses

OK

Response Headers
    Content-Type