A fulfillment is a shipment against a FulfillmentOrder. You can create several per FO to ship in batches.

Create a fulfillment

POST /fulfillments
Returns the created fulfillment (status, tracking_*, line items). We fire fulfillments/create, and orders/fulfilled once the FO is fully shipped.

Partial shipments

  • Omit fulfillment_order_line_items → ships all remaining quantity on the FO.
  • Send a quantity less than remaining_quantity → ships part; the FO stays in_progress and you can ship the rest later.

Multiple tracking numbers

Use the plural fields instead of the singular ones (don’t mix them):
If you omit url, we derive the tracking URL from a recognized company + number.

Update tracking

POST /fulfillments/{id}/update_tracking
Fires fulfillments/update.

Cancel a shipment

POST /fulfillments/{id}/cancel Marks the shipment cancelled and re-opens the quantity on its FulfillmentOrder so it can be fulfilled again.

Statuses

  • status (Fulfillment): pending · open · success · cancelled · error · failure.
  • display_status: granular carrier state — label_printed · in_transit · out_for_delivery · delivered · …