After an order is created, retrieve its fulfillment orders by calling GET /admin/api/2024-01/orders/{order_id}/fulfillment_orders.json; each fulfillment order groups line items by location and fulfillment service
Identify the fulfillment order ID(s) that belong to your fulfillment service by inspecting the assigned_location and fulfillment_service fields
Request fulfillment by POSTing to /admin/api/2024-01/fulfillment_orders/{fulfillment_order_id}/fulfillments.json with line item quantities and optionally tracking information
If the fulfillment service needs to accept the request first, respond to the fulfillment_orders/fulfillment_request webhook and call the accept endpoint at /admin/api/2024-01/fulfillment_orders/{id}/fulfillment_request/accept.json
Update tracking after shipping by POSTing tracking information to the fulfillment using the fulfillment update endpoint, setting tracking_number, tracking_url, and tracking_company
Mark the fulfillment complete or trigger partial fulfillment by specifying only the line item IDs and quantities that were shipped in the fulfillment creation payload
Known gotchas
The legacy Fulfillment API (POST /orders/{id}/fulfillments.json) is deprecated; the Fulfillment Orders API is the current approach and behaves differently
A fulfillment order in the OPEN state requires a fulfillment request/accept handshake if it is assigned to an external fulfillment service, not just a location
Partially fulfilling an order creates a new fulfillment order for the remaining items; track remaining_fulfillment_order on the response
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp