Authenticate with an OAuth user token using the `https://api.ebay.com/oauth/api_scope/sell.fulfillment` scope.
Call `GET https://api.ebay.com/sell/fulfillment/v1/order` with `filter=orderfulfillmentstatus:{NOT_STARTED|IN_PROGRESS}` to retrieve open orders; paginate using `limit` and `offset`.
For each order, review `lineItems` for item details and `fulfillmentStartInstructions` for ship-to address and carrier service level.
When the package ships, call `POST https://api.ebay.com/sell/fulfillment/v1/order/{orderId}/shipping_fulfillment` with the `trackingNumber`, `shippingCarrierCode`, and optionally `shippedDate`.
This call has no response payload on success (HTTP 201); verify via `GET /order/{orderId}/shipping_fulfillment` to confirm the fulfillment record was created.
For contested payment disputes, create a shipping fulfillment with tracking evidence for all disputed line items to support resolution.
Known gotchas
The Sell Fulfillment API uses the RESTful order ID format (e.g., `12-12345-67890`), which is different from the legacy Trading API order number; do not mix ID formats between APIs.
eBay currently uses the submitted tracking number as the fulfillment ID, but this behavior is documented as subject to change — do not rely on the fulfillment ID equaling the tracking number in downstream logic.
Sandbox testing uses `api.sandbox.ebay.com` as the root URI; ensure environment-specific base URL switching is implemented before go-live.
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