Move stock between locations
How stock travels between your locations without losing custody: a transfer names the lines up front, submitting reserves them at the source, shipping carries them at their book value, and receiving lands them — with every shortfall or surplus disposed by name, never silently.
Warehouse · a guided walk in 5 steps.
The steps
- Compose the transfer — The transfer is the move’s paper: which items, how much, from where to where — fixed before anything moves. — createTransfer
- Submit to reserve — Submitting sets the stock aside at the source so it cannot be sold out from under the move; a same-place move completes right here. — submitTransfer
- Ship it — Shipping marks the goods as on the road, carried at their book value until they land. — shipTransfer
- Receive what lands — Receiving records what actually arrived — on hand, or held for review; partial arrivals are normal, receive again as more lands. — receiveTransfer
- Close it — or resolve the differences — A fully-landed move closes; anything missing or extra is disposed by name — loss, damage, found, scrap, or returned — so the books never drift silently. — closeTransfer, resolveTransfer
The calls
Every operation this use case runs, in the order it first appears, with the request and the response its reference page shows.
createTransfer
createTransfer — mutation · Create a new stock transfer between locations at your organization.
Example request
mutation ExampleCreateTransfer($input: CreateTransferInput!) {
createTransfer(input: $input) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
destinationLogicalFacilityId
weight
sourceOrganizationId
destinationOrganizationId
expectedArrivalAt
carrierRefs
}
}
Variables:
{
"input": {
"caption": "Blue jeans",
"sourceLogicalFacilityId": "01900000-0000-7000-8000-4971feb30000",
"destinationLogicalFacilityId": "01900000-0000-7000-8000-3885245e0000",
"lines": [
{
"inventoryItemId": "01900000-0000-7000-8000-9307d9650000",
"quantity": "2"
}
]
}
}
Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.
Example response
{
"data": {
"createTransfer": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "TF-EXMP-0000-000F",
"type": "Transfer",
"caption": "Blue jeans",
"status": "draft",
"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",
"destinationLogicalFacilityId": "01900000-0000-7000-8000-3885245e0000",
"weight": "<weight>",
"sourceOrganizationId": "01900000-0000-7000-8000-b627156a0000",
"destinationOrganizationId": "01900000-0000-7000-8000-fcbbe67d0000",
"expectedArrivalAt": "2027-01-31T00:00:00.000Z",
"carrierRefs": [
"<carrier refs>"
]
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}
submitTransfer
submitTransfer — mutation · Submit a stock transfer — commit the move between your locations.
Example request
mutation ExampleSubmitTransfer($id: ID!, $revision: ID!, $reason: String) {
submitTransfer(id: $id, revision: $revision, reason: $reason) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
destinationLogicalFacilityId
weight
sourceOrganizationId
destinationOrganizationId
expectedArrivalAt
carrierRefs
}
}
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": {
"submitTransfer": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "TF-EXMP-0000-000F",
"type": "Transfer",
"caption": "Blue jeans",
"status": "draft",
"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",
"destinationLogicalFacilityId": "01900000-0000-7000-8000-3885245e0000",
"weight": "<weight>",
"sourceOrganizationId": "01900000-0000-7000-8000-b627156a0000",
"destinationOrganizationId": "01900000-0000-7000-8000-fcbbe67d0000",
"expectedArrivalAt": "2027-01-31T00:00:00.000Z",
"carrierRefs": [
"<carrier refs>"
]
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}
shipTransfer
shipTransfer — mutation · Ship a transfer — the stock physically leaves the sender.
Example request
mutation ExampleShipTransfer($input: ShipTransferInput!, $revision: ID!, $reason: String) {
shipTransfer(input: $input, revision: $revision, reason: $reason) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
destinationLogicalFacilityId
weight
sourceOrganizationId
destinationOrganizationId
expectedArrivalAt
carrierRefs
}
}
Variables:
{
"input": {
"transferId": "01900000-0000-7000-8000-1d47d93b0000",
"expectedArrivalAt": "2027-01-31T00:00:00.000Z"
},
"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": {
"shipTransfer": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "TF-EXMP-0000-000F",
"type": "Transfer",
"caption": "Blue jeans",
"status": "draft",
"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",
"destinationLogicalFacilityId": "01900000-0000-7000-8000-3885245e0000",
"weight": "<weight>",
"sourceOrganizationId": "01900000-0000-7000-8000-b627156a0000",
"destinationOrganizationId": "01900000-0000-7000-8000-fcbbe67d0000",
"expectedArrivalAt": "2027-01-31T00:00:00.000Z",
"carrierRefs": [
"<carrier refs>"
]
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}
receiveTransfer
receiveTransfer — mutation · Receive a transfer — the stock arrives and books into the receiver.
Example request
mutation ExampleReceiveTransfer($input: ReceiveTransferInput!, $revision: ID!, $reason: String) {
receiveTransfer(input: $input, revision: $revision, reason: $reason) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
destinationLogicalFacilityId
weight
sourceOrganizationId
destinationOrganizationId
expectedArrivalAt
carrierRefs
}
}
Variables:
{
"input": {
"transferId": "01900000-0000-7000-8000-1d47d93b0000",
"receipts": [
{
"lineNo": 1,
"quantity": "2",
"toBucket": "on_hand"
}
],
"surplus": [
{
"lineNo": 1,
"quantity": "2",
"toBucket": "on_hand"
}
]
},
"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": {
"receiveTransfer": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "TF-EXMP-0000-000F",
"type": "Transfer",
"caption": "Blue jeans",
"status": "draft",
"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",
"destinationLogicalFacilityId": "01900000-0000-7000-8000-3885245e0000",
"weight": "<weight>",
"sourceOrganizationId": "01900000-0000-7000-8000-b627156a0000",
"destinationOrganizationId": "01900000-0000-7000-8000-fcbbe67d0000",
"expectedArrivalAt": "2027-01-31T00:00:00.000Z",
"carrierRefs": [
"<carrier refs>"
]
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}
closeTransfer
closeTransfer — mutation · Close a completed transfer.
Example request
mutation ExampleCloseTransfer($id: ID!, $revision: ID!, $reason: String) {
closeTransfer(id: $id, revision: $revision, reason: $reason) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
destinationLogicalFacilityId
weight
sourceOrganizationId
destinationOrganizationId
expectedArrivalAt
carrierRefs
}
}
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": {
"closeTransfer": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "TF-EXMP-0000-000F",
"type": "Transfer",
"caption": "Blue jeans",
"status": "draft",
"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",
"destinationLogicalFacilityId": "01900000-0000-7000-8000-3885245e0000",
"weight": "<weight>",
"sourceOrganizationId": "01900000-0000-7000-8000-b627156a0000",
"destinationOrganizationId": "01900000-0000-7000-8000-fcbbe67d0000",
"expectedArrivalAt": "2027-01-31T00:00:00.000Z",
"carrierRefs": [
"<carrier refs>"
]
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}
resolveTransfer
resolveTransfer — mutation · Resolve a transfer’s missing or damaged residuals — decide loss, damage, or found, in one step.
Example request
mutation ExampleResolveTransfer($input: ResolveTransferInput!, $revision: ID!, $reason: String) {
resolveTransfer(input: $input, revision: $revision, reason: $reason) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
destinationLogicalFacilityId
weight
sourceOrganizationId
destinationOrganizationId
expectedArrivalAt
carrierRefs
}
}
Variables:
{
"input": {
"transferId": "01900000-0000-7000-8000-1d47d93b0000",
"resolutions": [
{
"lineNo": 1,
"quantity": "2",
"disposition": "<disposition>",
"reason": "Correcting a miscount."
}
]
},
"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": {
"resolveTransfer": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "TF-EXMP-0000-000F",
"type": "Transfer",
"caption": "Blue jeans",
"status": "draft",
"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",
"destinationLogicalFacilityId": "01900000-0000-7000-8000-3885245e0000",
"weight": "<weight>",
"sourceOrganizationId": "01900000-0000-7000-8000-b627156a0000",
"destinationOrganizationId": "01900000-0000-7000-8000-fcbbe67d0000",
"expectedArrivalAt": "2027-01-31T00:00:00.000Z",
"carrierRefs": [
"<carrier refs>"
]
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}