Fulfillment Orders

Fulfillment Orders represent groups of line items from an order that are assigned to a specific location and delivery method. They enable split-shipment workflows, multi-location fulfillment, and mixed delivery/collection scenarios.

Key Concepts

Fulfillment Order Lifecycle

  1. open — Created, no location assigned yet
  2. allocated — Assigned to a location and ready to be fulfilled
  3. processing — Items are being picked, packed, shipped, or partially fulfilled
  4. fulfilled — All line items have been fulfilled
  5. cancelled — The fulfillment order has been cancelled
  6. closed — All processing is complete

Each fulfillment order line item has its own status as it moves through the pick/pack/ship workflow: open, allocated, pick_in_progress, picked, pack_in_progress, fulfilled, cancelled, closed.

Delivery Method

Each fulfillment order has a delivery_method that determines how the customer receives the items:

  • DELIVERY — Standard delivery to a customer address ( delivery_address + delivery_schedule ).
  • COLLECTION — Customer collects from a pickup point ( customer_collection_address + customer_collection_schedule ).
  • DIGITAL — No physical delivery; fulfilled digitally.

You can switch between delivery methods at any time before fulfillment using the Update Delivery Method endpoint.

Operations

Fulfill

Mark items as fulfilled and ready for shipping. This operation:

  • Updates line item statuses to fulfilled
  • Optionally creates a draft shipment automatically
  • Triggers inventory updates

Unfulfill

Reverse a fulfillment when items cannot be shipped. This allows:

  • Correcting fulfillment errors
  • Handling out-of-stock situations discovered after fulfillment
  • Reallocating items to different locations

Split

Divide a fulfillment order when items need to ship from different sources:

  • Create a new fulfillment order with selected line items
  • Assign to a different location if needed
  • Maintain order integrity across splits

Merge

Combine fulfillment orders when consolidation makes sense:

  • Reduce shipping costs by combining shipments
  • Improve customer experience with fewer deliveries
  • Optimize fulfillment operations

Ship

Create shipments for fulfilled items:

  • Specify carrier account and parcel details
  • Include scheduling preferences
  • Generate shipping labels through the Carriyo Shipping API

Cancel

Cancel specific line items within a fulfillment order:

  • Provide a cancellation reason
  • Automatically updates inventory
  • Triggers order status recalculation

Update Location

Reassign a fulfillment order to a different location, e.g., to optimise based on inventory or proximity to the customer.

Update Address

Update delivery_address or customer_collection_address in place, depending on the fulfillment order's current delivery_method. For switching between delivery and collection, use Update Delivery Method first.

Update Delivery Method

Switch a fulfillment order between DELIVERY, COLLECTION, and DIGITAL, updating the corresponding address and schedule in a single call.

Update Schedule

Change the scheduled from/to window for a fulfillment order without changing its delivery method.

Update Partner References

Sync your system's references (partner_fulfillment_order_reference and individual partner_fulfillment_reference values) back to Carriyo without affecting any other fields.

Location Management

Fulfillment orders are tied to locations. You can:

  • Update the assigned location before fulfillment
  • Move items between locations using split and merge operations
  • Track inventory across all fulfillment locations