Skip to main content

Fulfillment orders

Use fulfillment orders when an integration needs to know, per location, what is still to be shipped for an order and what has already been shipped — for example a logistics provider, a warehouse control system, or a storefront showing the order status.

An order has one or more fulfillment orders, each assigned to the location it is fulfilled from. One location can have several fulfillment orders of the same order. A fulfillment order is either fulfilled in Pickware (type: WarehouseLocationToOrder) or is to be fulfilled externally, from a location Pickware does not manage (type: ExternalToOrder). A fulfillment order fulfilled in Pickware names its location in sourceWarehouseLocation; an external one has no sourceWarehouseLocation, and externalLocationName carries the name of its Shopify location, or null when no Shopify location is known. Every executed shipment is recorded as a fulfillment.

Available operations​

Example: fulfillment orders of an order​

query FulfillmentOrders($orderId: ID!) {
fulfillmentOrders(filter: { destinationOrderId: { equals: $orderId } }) {
edges {
node {
number
state
type
isPartiallyFulfilled
sourceWarehouseLocation {
code
name
}
externalLocationName
lineItems {
edges {
node {
quantity
product {
productNumber
}
}
}
}
shippingLabels {
edges {
node {
carrier
cancelled
trackingCodes
}
}
}
fulfillments {
edges {
node {
number
state
lineItems {
edges {
node {
quantity
fulfillmentOrderLineItem {
id
}
}
}
}
}
}
}
}
}
}
}

Notes​

Reading the fulfillment orders of an order through Order.fulfillmentOrders, or the sourceWarehouseLocation and shippingLabels of a fulfillment order, also needs the read scopes of those types, see Token scopes. A fulfillment order's line item quantity is the quantity assigned to it; the quantity already shipped is the sum of the line items that reference it across its fulfillments in the state Fulfilled.