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
-
open— Created, no location assigned yet -
allocated— Assigned to a location and ready to be fulfilled -
processing— Items are being picked, packed, shipped, or partially fulfilled -
fulfilled— All line items have been fulfilled -
cancelled— The fulfillment order has been cancelled -
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