Pick, pack and ship or hand over an order
Start the fulfilment job, pick it, pack it, and either ship it with the carrier or stage it for pickup and hand it to the customer.
Payments & fulfillment · a play in 4 steps.
The steps
- Start the fulfilment — the pick/pack/ship or pickup job. — createFulfillment
- Start picking — the picker takes the job — then pack it, sealed and ready. — startPickFulfillment, packFulfillment
- Ship it — it leaves with the carrier; shipped stock leaves your books. — shipFulfillment
- Or stage it for pickup and hand it to the customer — the delivery moment. — stagePickupFulfillment, handoverFulfillment
The calls
Every operation this use case runs, in the order it first appears, with the request and the response its reference page shows.
createFulfillment
createFulfillment — mutation · Start a fulfilment — the pick/pack/ship (or pickup) job for an order’s items.
Example request
mutation ExampleCreateFulfillment($input: NewFulfillmentInput!) {
createFulfillment(input: $input) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
orderId
organizationId
method
carrierName
trackingRef
packedAt
}
}
Variables:
{
"input": {
"caption": "Blue jeans",
"orderId": "01900000-0000-7000-8000-f6d8263a0000",
"method": "ship",
"lines": [
{
"orderLineNo": 1,
"quantity": "2"
}
]
}
}
Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.
Example response
{
"data": {
"createFulfillment": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "FF-EXMP-0000-000F",
"type": "Fulfillment",
"caption": "Blue jeans",
"status": "pending",
"parentId": "01900000-0000-7000-8000-065235280000",
"rootId": "01900000-0000-7000-8000-a093dd800000",
"createdAt": "2027-01-31T00:00:00.000Z",
"updatedAt": "2027-01-31T00:00:00.000Z",
"revisionNum": 1,
"revision": "01900000-0000-7000-8000-b7960e180000",
"orderId": "01900000-0000-7000-8000-f6d8263a0000",
"organizationId": "01900000-0000-7000-8000-44b781470000",
"method": "ship",
"carrierName": "Blue jeans",
"trackingRef": "<tracking ref>",
"packedAt": "2027-01-31T00:00:00.000Z"
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}
startPickFulfillment
startPickFulfillment — mutation · Start picking a fulfilment — the picker takes the job.
Example request
mutation ExampleStartPickFulfillment($id: ID!, $revision: ID!, $reason: String) {
startPickFulfillment(id: $id, revision: $revision, reason: $reason) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
orderId
organizationId
method
carrierName
trackingRef
packedAt
}
}
Variables:
{
"id": "01900000-0000-7000-8000-37386ae00000",
"revision": "01900000-0000-7000-8000-b7960e180000",
"reason": "Correcting a miscount."
}
Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.
Example response
{
"data": {
"startPickFulfillment": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "FF-EXMP-0000-000F",
"type": "Fulfillment",
"caption": "Blue jeans",
"status": "pending",
"parentId": "01900000-0000-7000-8000-065235280000",
"rootId": "01900000-0000-7000-8000-a093dd800000",
"createdAt": "2027-01-31T00:00:00.000Z",
"updatedAt": "2027-01-31T00:00:00.000Z",
"revisionNum": 1,
"revision": "01900000-0000-7000-8000-b7960e180000",
"orderId": "01900000-0000-7000-8000-f6d8263a0000",
"organizationId": "01900000-0000-7000-8000-44b781470000",
"method": "ship",
"carrierName": "Blue jeans",
"trackingRef": "<tracking ref>",
"packedAt": "2027-01-31T00:00:00.000Z"
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}
packFulfillment
packFulfillment — mutation · Pack a picked fulfilment — sealed and ready to go.
Example request
mutation ExamplePackFulfillment($id: ID!, $revision: ID!, $reason: String) {
packFulfillment(id: $id, revision: $revision, reason: $reason) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
orderId
organizationId
method
carrierName
trackingRef
packedAt
}
}
Variables:
{
"id": "01900000-0000-7000-8000-37386ae00000",
"revision": "01900000-0000-7000-8000-b7960e180000",
"reason": "Correcting a miscount."
}
Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.
Example response
{
"data": {
"packFulfillment": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "FF-EXMP-0000-000F",
"type": "Fulfillment",
"caption": "Blue jeans",
"status": "pending",
"parentId": "01900000-0000-7000-8000-065235280000",
"rootId": "01900000-0000-7000-8000-a093dd800000",
"createdAt": "2027-01-31T00:00:00.000Z",
"updatedAt": "2027-01-31T00:00:00.000Z",
"revisionNum": 1,
"revision": "01900000-0000-7000-8000-b7960e180000",
"orderId": "01900000-0000-7000-8000-f6d8263a0000",
"organizationId": "01900000-0000-7000-8000-44b781470000",
"method": "ship",
"carrierName": "Blue jeans",
"trackingRef": "<tracking ref>",
"packedAt": "2027-01-31T00:00:00.000Z"
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}
shipFulfillment
shipFulfillment — mutation · Ship a fulfilment — it leaves with the carrier.
Example request
mutation ExampleShipFulfillment($input: ShipFulfillmentInput!) {
shipFulfillment(input: $input) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
orderId
organizationId
method
carrierName
trackingRef
packedAt
}
}
Variables:
{
"input": {
"fulfillmentId": "01900000-0000-7000-8000-82dcede40000",
"expectedRevision": "01900000-0000-7000-8000-e02b2e6c0000",
"shipTo": {
"name": "Blue jeans",
"addressLines": [
"<address lines>"
],
"city": "Toronto",
"region": "ON",
"countryCode": "CA"
}
}
}
Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.
Example response
{
"data": {
"shipFulfillment": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "FF-EXMP-0000-000F",
"type": "Fulfillment",
"caption": "Blue jeans",
"status": "pending",
"parentId": "01900000-0000-7000-8000-065235280000",
"rootId": "01900000-0000-7000-8000-a093dd800000",
"createdAt": "2027-01-31T00:00:00.000Z",
"updatedAt": "2027-01-31T00:00:00.000Z",
"revisionNum": 1,
"revision": "01900000-0000-7000-8000-b7960e180000",
"orderId": "01900000-0000-7000-8000-f6d8263a0000",
"organizationId": "01900000-0000-7000-8000-44b781470000",
"method": "ship",
"carrierName": "Blue jeans",
"trackingRef": "<tracking ref>",
"packedAt": "2027-01-31T00:00:00.000Z"
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}
stagePickupFulfillment
stagePickupFulfillment — mutation · Stage a pickup fulfilment — ready and waiting for the customer.
Example request
mutation ExampleStagePickupFulfillment($id: ID!, $revision: ID!, $reason: String) {
stagePickupFulfillment(id: $id, revision: $revision, reason: $reason) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
orderId
organizationId
method
carrierName
trackingRef
packedAt
}
}
Variables:
{
"id": "01900000-0000-7000-8000-37386ae00000",
"revision": "01900000-0000-7000-8000-b7960e180000",
"reason": "Correcting a miscount."
}
Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.
Example response
{
"data": {
"stagePickupFulfillment": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "FF-EXMP-0000-000F",
"type": "Fulfillment",
"caption": "Blue jeans",
"status": "pending",
"parentId": "01900000-0000-7000-8000-065235280000",
"rootId": "01900000-0000-7000-8000-a093dd800000",
"createdAt": "2027-01-31T00:00:00.000Z",
"updatedAt": "2027-01-31T00:00:00.000Z",
"revisionNum": 1,
"revision": "01900000-0000-7000-8000-b7960e180000",
"orderId": "01900000-0000-7000-8000-f6d8263a0000",
"organizationId": "01900000-0000-7000-8000-44b781470000",
"method": "ship",
"carrierName": "Blue jeans",
"trackingRef": "<tracking ref>",
"packedAt": "2027-01-31T00:00:00.000Z"
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}
handoverFulfillment
handoverFulfillment — mutation · Hand a pickup fulfilment to the customer — the goods change hands.
Example request
mutation ExampleHandoverFulfillment($id: ID!, $revision: ID!, $reason: String) {
handoverFulfillment(id: $id, revision: $revision, reason: $reason) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
orderId
organizationId
method
carrierName
trackingRef
packedAt
}
}
Variables:
{
"id": "01900000-0000-7000-8000-37386ae00000",
"revision": "01900000-0000-7000-8000-b7960e180000",
"reason": "Correcting a miscount."
}
Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.
Example response
{
"data": {
"handoverFulfillment": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "FF-EXMP-0000-000F",
"type": "Fulfillment",
"caption": "Blue jeans",
"status": "pending",
"parentId": "01900000-0000-7000-8000-065235280000",
"rootId": "01900000-0000-7000-8000-a093dd800000",
"createdAt": "2027-01-31T00:00:00.000Z",
"updatedAt": "2027-01-31T00:00:00.000Z",
"revisionNum": 1,
"revision": "01900000-0000-7000-8000-b7960e180000",
"orderId": "01900000-0000-7000-8000-f6d8263a0000",
"organizationId": "01900000-0000-7000-8000-44b781470000",
"method": "ship",
"carrierName": "Blue jeans",
"trackingRef": "<tracking ref>",
"packedAt": "2027-01-31T00:00:00.000Z"
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}