How to fulfill only specific order items of an order (partial fulfillment) using rest API

Topic summary

Problem: A fulfillment app needs to fulfill only certain line items in an order and reject others (e.g., no carrier availability or no inventory), but the default “Request Fulfillment” targets all items.

Latest guidance: Use the Admin GraphQL API. With fulfillmentCreateV2, you can create a fulfillment for specific fulfillment order line items by providing the fulfillmentOrderId and the exact line item IDs/quantities. This covers partial fulfillment (only the items you can ship).

Open gap: There’s no direct per-line-item “reject” via the same call; simply not including items leaves them unfulfilled, but doesn’t explicitly reject them.

Workaround for explicit separation: Split the order into multiple fulfillment orders so only shippable items are in the fulfillment you accept. Constraint: If the order is already in “fulfillment requested,” it may be “not in a splittable state.”

Confirmed solution: 1) Cancel the fulfillment request, 2) Split the order into separate fulfillment orders, 3) Re-request fulfillment. The original poster confirmed these steps work via the API.

Status: Resolved with a practical workflow; no native per-line-item reject in REST noted.

Summarized with AI on December 20. AI used: gpt-5.

Hi Aniket,

This may be easier to achieve with GraphQL API rather than the REST API, using the fulfillmentCreateV2 mutation. First, you need to identify the fulfillment order and the specific line items you want to fulfill. You can retrieve this information using the order query to get the fulfillment orders associated with an order. Then you’d use the fulfillmentCreateV2 mutation to create a fulfillment for the specific line items. You need to provide the fulfilmentOrderId and specify the fulfilmentOrderLineItems with their respective IDs and quantities.