Skip to main content

Dropship (Ship Fulfillment)

POST 

/api/purchase-orders/:purchase_order/dropship

Create a dropship fulfillment for a dropship purchase order (ship directly to customer).

Required scope: purchase-orders:write

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

Body fields:

  • tracking_number (string|null): null for a supplier pickup with no tracking number
  • carrier (string, optional): carrier name, e.g. USPS
  • shipping_method_id (integer, optional): SKU.io shipping method to record on the fulfillment
  • shipping_method_name (string, optional): free-text service name when no shipping method id is given
  • shipped_at (string, optional): ship date/time; defaults to now
  • lines (array, optional): partial shipment — only these lines and quantities are fulfilled. Omit to fulfil every unfulfilled line.
  • lines..sales_order_line_id or lines..purchase_order_line_id (integer): the line to ship
  • lines.*.quantity (number)
  • dropship_label_id (integer, optional): the dropship label this shipment ships on. Only that label's items and quantities are fulfilled (lines is ignored; a full-order label ships every unfulfilled line on this PO), and the fulfillment is linked to the label. The label must belong to this purchase order and be purchased. Idempotent: if the label is already linked to a fulfillment, that fulfillment is returned instead of recording another.

When dropship_label_id is omitted but tracking_number matches one of this PO's purchased labels, the shipment is recorded on that label in the same way.

Returns 400 with a message when the fulfillment cannot be created (e.g. the label does not belong to this purchase order, or has not been purchased). A purchase order that was cancelled (by the supplier) or voided records no shipment: the request returns 400 and nothing is created.

Authentication: Requires Bearer token.

Requires permission: purchase_orders.update

Request​

Responses​

OK

Response Headers
    Content-Type