Kibo Shipments API Developer Guide
Fulfillment
Understand fulfillment architecture and concepts
Hold Shipments
Manage shipment holds in the Admin UI
Pick Lists and Sheets
Configure pick lists and sheets in the Admin UI
Shipment Attributes
Set up shipment attributes in the Admin UI
Multi Piece Shipments
Configure multi-piece shipments in the Admin UI
Understanding Fulfillment (Shipments) in Kibo
In Kibo, a Shipment is the fundamental object in the fulfillment process. It’s a concrete, actionable instruction for a specific location (like a warehouse or a retail store) to pick, pack, and dispatch a set of items from an order. The key thing to understand is the separation of concerns:- An Order is the customer’s request—what they bought.
- Order Routing is the decision—how the order should be fulfilled.
- A Shipment is the action—the specific “to-do list” sent to a fulfillment location.
How This Domain Fits Into Kibo
The Shipment is the workhorse of the post-purchase process. It’s where the digital order becomes a physical reality.- Order Routing: The output of the Order Routing engine is a “suggestion” that becomes the direct input for creating one or more shipments.
- Inventory: When a shipment is created, Kibo firms up the inventory reservation. When it’s fulfilled, the
onHandinventory at the assigned location is finally decremented. - Customer: The customer is notified about the progress of their shipments, including tracking numbers which are stored on the shipment record.
- Returns: If a customer wants to return an item, the return is processed against the original shipment it came from.
Prerequisites
- Kibo API credentials with Fulfillment permissions.
- An understanding of Kibo’s Order and Location concepts.
- Node.js 16+ with TypeScript.
- Familiarity with REST APIs and
async/await.
What You’ll Learn
After completing this guide, you’ll understand:- How Kibo structures Shipment data and its state-driven lifecycle (based on official API specs).
- The key “Task-Based” pattern Kibo uses for all shipment modifications.
- Common workflows like fulfilling and canceling shipments (with accurate, tested examples).
- How to avoid the most common beginner mistakes.
- How to read and navigate the official API documentation for Fulfillment.
Kibo Shipment Fundamentals
How Kibo Organizes Fulfillment Data
Kibo’s Fulfillment data is built around a state machine, where a Shipment moves through various stages. The core objects are:Shipment: The main object representing a fulfillment task.shipmentNumber: A unique, Kibo-assigned number identifying the shipment.orderId: The order this shipment belongs to.locationCode: The specific location responsible for fulfilling this shipment.workflowState: The current stage of the shipment (e.g.,Ready,Fulfilled,Cancelled). This is the most important status field.items: An array ofShipmentItemobjects detailing the products and quantities to be fulfilled.
Pickup: For “Buy Online, Pick Up in Store” (BOPIS) shipments, a relatedPickupobject is created to manage the customer pickup process.Task: This is an action you send. To change a shipment’s state (e.g., to fulfill it), you must execute a named task on it, like"Fulfill". This is a key Kibo pattern.
Key Kibo Patterns You’ll See Everywhere
Task-Based Workflow: This is the most important pattern in fulfillment. You cannot directly modify a shipment’s state. You must use the “Fulfill” task to move a shipment fromReady to Fulfilled. The request to execute a task looks like this:
VALIDATION_ERROR if you try to execute a task that isn’t valid in the shipment’s current workflowState.
API Documentation Reference:
Find complete specs under the “Fulfillment” section at:
/api-overviews/openapi_fulfillment_overview
Common Shipment Workflows
Kibo developers typically work with Shipments in these scenarios:- Backend Integration: A Warehouse Management System (WMS) uses the API to get new shipments, and then notifies Kibo as they are packed and shipped.
- In-Store Operations: Building a simple tablet application for store associates to manage BOPIS orders, marking them ready for pickup and then as collected.
- Customer Service Tools: A custom UI for support agents to cancel or reassign shipments when a customer calls with an issue.
SDK Fulfillment Workflows
The following examples use the Task-Based Pattern to move shipments through their lifecycle, which is the correct and auditable way to manage shipment state in Kibo.SDK Setup
All examples rely on a baseConfiguration and ShipmentApi client instance.
1. Ship-to-Home (STH) Fulfillment Workflow
A standard STH fulfillment involves a series of tasks.| Step | Task Name / Action | Endpoint Type | Required Body Fields |
|---|---|---|---|
| 1. Accept Shipment | Accept Shipment | Task Completion | shipmentAccepted: true |
| 2. Validate Stock | Validate Items In Stock | Task Completion | stockLevel: "IN_STOCK" or "PARTIAL_STOCK" |
| 3. Print Packing Slip | Print Packing Slip | Task Completion | Empty {} |
| 4. Add Tracking | None (Direct Call) | Edit Package | trackingNumbers |
| 5. Prepare for Shipment | Prepare for Shipment | Task Completion | back: false, canceled: false |
| 6. Mark As Fulfilled | None (Direct Call) | PUT /fulfilled | None (Optional Manual Step) |
2. Buy Online, Pick Up in Store (BOPIS) Fulfillment Workflow
BOPIS fulfillment follows a flow for in-store pickup.| Step | Task Name / Action | Endpoint Type | Required Body Fields |
|---|---|---|---|
| 1. Accept Shipment | Accept Shipment | Task Completion | shipmentAccepted: true |
| 2. Print Pick List | Print Pick List | Task Completion | Empty {} |
| 3. Validate Stock | Validate Items In Stock | Task Completion | stockLevel: "IN_STOCK" or "PARTIAL_STOCK" |
| 4. Provide to Customer | Customer Pickup | Task Completion | customerAccepted: true |
| 5. Mark As Fulfilled | None (Direct Call) | PUT /fulfilled | None (Optional Manual Step) |
3. Transfer Fulfillment Workflow
Transfer shipments move inventory between locations to fulfill an order.| Step | Task Name / Action | Endpoint Type | Required Body Fields |
|---|---|---|---|
| 1. Validate Stock | Validate Items In Stock | Task Completion | stockLevel: "IN_STOCK" or "PARTIAL_STOCK" |
| 2. Print Packing Slip | Print Packing Slip | Task Completion | Empty {} |
| 3. Add Tracking | None (Direct Call) | Edit Package | trackingNumbers |
| 4. Prepare for Shipment | Prepare for Shipment | Task Completion | back: false, canceled: false |
| 5. Validate Incoming Transfer | Validate Incoming Transfer | Task Completion | stockLevel: "IN_STOCK" or "PARTIAL_STOCK" |
Additional Common Operations (Task-Based)
These examples align with Kibo’s use of either theexecute task method or direct API actions for state changes.
Example 1: Get a Shipment’s Details
Example 2: Reassign a Shipment
Reassigning a shipment is a direct action to transfer the fulfillment responsibility.Example 3: Cancel an Item from a Shipment
Canceling items uses a specific direct API call (/canceledItems).
Troubleshooting Your Fulfillment Implementation
Reading Kibo Error Messages
ITEM_NOT_FOUND: TheshipmentNumberororderIdyou provided does not exist.VALIDATION_ERROR: This means you tried to do something that violates the shipment’s current state.- Example: Trying to execute the
Fulfilltask on a shipment not in theReadystate.
- Example: Trying to execute the
TASK_NOT_FOUND: Thenameprovided in yourTaskobject is not a valid task (e.g., misspelled).
Common Development Issues
Issue 1: My shipment is “stuck” and I can’t update it.- Why it happens: The shipment object is largely read-only; its state is controlled by the task-based workflow. Developers mistakenly try to
PUTan update to the shipment object to change its status. - How to fix it: You must use the
performShipmentTask(orexecute) endpoint for all state changes. Before trying to change a shipment, ask “What task do I need to execute?”
- Why it happens: An order’s status is an aggregate of all its shipments. The order will not move to a
Completedstatus until all of its constituent shipments have been fulfilled (or canceled). - How to fix it: Ensure your fulfillment process handles all shipments associated with the order.

