fulfillmenttools
  • Welcome to the fulfillmenttools Platform Documentation
  • Getting Started
    • Setup your access to fulfillmenttools
    • Make your first API Calls
      • Add your first facility
      • Add your first listing
      • Place your first order
    • Core concepts & terminology
      • Order Flow
    • Postman Collection
    • Client SDKs
    • FAQ
  • Clients
    • Backoffice
      • First steps - Registration
      • Network view
        • Home
        • Orders
          • Unroutable orders
          • Pre-orders & Backorders
          • Order History
        • Inventory Management
          • Stock Overview
          • Channel Inventory
        • Facilities
        • Users
        • Returns
        • DOMS configuration
        • Settings
        • Analytics
          • DOMS Pages
          • Fulfillment Operations Pages
          • Inventory Pages
          • Downloads Page
      • Facility view
        • Home
        • Inbound
        • Tasks
        • Listings
        • Storage Locations
        • Facility
        • Users
    • Inventory app
      • Registration Inventory App
      • App sections
        • Inbound
        • Storage and relocation
    • Operations app
      • Android
        • Manual Registration
        • Android Enterprise Registration
        • Sections
          • Picking
            • Load Units (legacy)
            • Substitute items
            • Weighed or measured products
            • Scanning configuration
            • Picking Methods
              • Batch Picking
              • Multi Order Picking
          • Packing
          • Handover
          • Returns (legacy)
        • Printing
        • Notifications
      • Webapp
        • Packing
      • Overview features Android & Webapp
    • Technical requirements
      • Zebra Hardware Scanner Configuration
      • Honeywell Hardware Scanner Configuration
      • Supported barcodes for camera scanning
      • Requirements for fft applications
      • Zebra printer
    • Returns app
      • Handle unannounced returns
      • Handle announced returns
  • Products
    • Core Functionality
      • Process
        • External actions
      • Add and manage facilities
      • Notification Center
      • Checking on features
      • Tags and Stickers Concept
      • GDPR
      • Remote Configuration
      • Expiry
      • Target time
      • Time calculation for queries of future availabilities (LPS-calculation)
      • Interfacility Transfer
    • Carrier Management
      • Overview
        • Available Carriers
      • Concepts
        • Carrier Country Service Mapping (CCSM)
        • Non-delivery-days
        • Custom Carrier & Headless operation of Carriers
      • Providing needed data
    • Fulfillment Options
      • Fulfillability Check
      • Checkout Options
        • Available fulfillment options based on basket
        • Earliest possible delivery date
        • Available delivery dates within time-period
        • Availability for delivery date
      • Delivery Promise
    • Inventory Management
      • Configurations
      • Entities
        • Listing
        • Stock
          • Stock Properties
        • Storage Location
        • Zone
      • Global Inventory
        • Stock availability
        • Channel Inventory
        • Expected stock
        • Inbound Process
        • Reservations
        • Safety Stock
      • Inventory Control
        • Inventory Traits
        • Measurement Units
        • Outbound Inventory Tracking
        • Storage Location Recommendations
    • Order Fulfillment
      • Headless Order Fulfillment
      • Pick Jobs
      • Zone picking
      • Load Units
      • Custom Service
      • Handover Jobs
      • Add External Documents
      • Configurations
        • Picking Configuration
          • Picking methods
          • Short Pick Reasons
        • Packing Configuration
          • Packing Container Types
        • Print / Document Configuration
        • Tag Configurations
          • Parcel Tag Configuration
        • Handover Configuration
        • Operative Container Types
    • Order Routing
      • Entities
        • Ship-from-Store Orders
        • Click-and-Collect Orders
        • Locked Orders
        • Custom Services Orders
          • Simple Custom Service Order
          • Complex Custom Service Order
      • Fences
      • Ratings
      • Order Split
        • Order split - initial routing
        • Order split after shortpick
        • Item bundles
      • Reroute
      • Shape the routing with the DOMS Toolkit
      • Decision logs
    • Returns Management
      • Returns legacy
        • Available status
      • Returns 2.0
        • Return Reasons
        • Item Conditions
        • Integrating Returns with Events
    • Use Cases
      • Demand-Driven Replenishment
      • Expected stock in availability
      • Multi Order Picking
      • Interfacility transfer
      • Assigned Users
  • Connecting to fulfillmenttools
    • General Topics
      • Use external identity providers to authenticate to fulfillmenttools
        • Microsoft Entra ID / Azure Active Directory (AD)
      • Public Event Export
      • Available Regions
      • Backup Policies
    • GraphQL API
    • RESTful API
      • General Topics
        • API Release Life Cycle
        • Versioning
        • Authorization
        • Customization via Attributes
        • Update Guarantees
        • Rate Limits
        • Resource Timestamps
        • Pagination Interface
        • Localization
        • Custom Attributes
      • OpenAPI Specification
        • Swagger UI
        • OpenAPI 3.0 Spec
    • Eventing
      • Structure of an Event
      • Available Events
      • Tutorial
    • commercetools Connect
    • Integration Tutorial
      • Adding facilities
      • Adding listings to facilities
      • Configuring stocks
      • Carrier configuration
      • Placing orders
      • Checkout Options
      • Distributed Order Management System (Routing)
      • Local fulfillment configuration
  • Incident Reporting
    • How to report incidents in fulfillmenttools
    • How to define incident priorities
  • Release Notes
    • Release Summary – May 2024
    • Release Summary – June 2024
    • Release Summary – July 2024
    • Release Summary – August 2024
    • Release Summary – September 2024
    • Release Summary – October 2024
Powered by GitBook
On this page

Was this helpful?

  1. Products
  2. Inventory Management
  3. Global Inventory

Inbound Process

PreviousExpected stockNextReservations

Last updated 5 months ago

Was this helpful?

This page is outdated. Please go to our new documentation under .

Summary

An inbound process maps all processes around incoming goods in a store or warehouse. This can include delivery of goods but also interfacility transfers or similar processes. Whenever a purchaseOrder or a receipt is created, a corresponding inboundProcess is automatically created as well.

An overview of all inbound process can be found in the or in the . Incoming goods can be accepted via the of our inventory app. The event of checking and accepting incoming goods is represented via .

Sub-Entities

The inbound process has sub-entities, which can be created and modified as part of the inbound process, or alternatively via their own endpoints.

Purchase Order

A purchase order is issued when new stock is ordered for a store or warehouse. It includes the following information:

Creating an inbound process with a purchaseOrder

Mandatory values:

  • facilityRef: facility for which the order is destined

  • purchaseOrder:

    • orderDate: time and date on which order was placed

    • requestedDate: time and date on which order is expected to arrive

    • requestedItems:

      • tenantArticleId: unique identifier for item

      • quantity: quantities and units of ordered items (maximum of 200 items can be processed)

Optional values:

  • tenantInboundProcessId:unique identifier for inbound used in the customer systems

  • onHold: Setting an inbound process on hold means that it should be paused for now. Can be set manually via Backoffice or via API. By setting the flag to true, the inboundProcess status is set to onHold.

  • scannableCodes: scannableCodes such as barcodes that are relevant in the inboundProcess, e.g. , barcode of the delivery note

  • purchaseOrder:

    • requestedItems:

    • cancelled: If no further deliveries are expected, a purchaseOrder can be cancelled by an admin via Backoffice or via API. This is also possible, if several items have already been accepted. By setting the flag to true, the inboundProcess status is set to closed.

    • supplier: information on supplier of delivery (name)

    • customAttributes

Receipt

After a goods receipt was performed and goods have been accepted, a receipt is issued that adds the stock to the facility. It includes the following information:

Adding a receipt to an inboundProcess

Mandatory values:

  • receivedDate: date when the order was accepted in the facility

  • receivedItems: for each item that was announced via purchaseOrder the following information can be provided:

    • tenantArticleId:unique identifier for item

    • acceptedQuantity: quantity that was accepted in the goods receipt

    • rejectedQuantity: Quantity that was rejected in the goods receipt (due to being, e.g., broken).

    • comments: information relevant for that specific lineItem such as comments, photos, or other attachments

  • comments: information relevant for that specific delivery such as comments, photos, or other attachments

Rejected items are not a subset of accepted items and are not booked to the facility as stock.

Optional values:

  • asnRef: can be used to store the reference to an internal advanced shipping note

  • receivedItems: for each item that was announced via purchaseOrder the following information can be provided:

    • storageLocationRef: the storage location on which the item was placed

  • comments: information relevant for that specific delivery

  • status: If a goods receipt has been started via inventory app, the status of the receipt changes to IN_PROGRESS and then to FINISHEDafter the process was completed in the app.

  • customAttributes: Attributes that can be added to the receipt. These attributes cannot be used within fulfillmenttools' processes, but can be used to carry custom information on receipt.

Status

The inboundProcess itself as well as its sub-entities can have different status. Our clients show the status that are most relevant to the user in the inbound view and in the inventory app.

Status
Meaning
Entity

OPEN

Delivery has not arrived yet

inboundProcess

PARTIAL_DELIVERY

Items in the delivery were missing

inboundProcess

CLOSED

All items that were announced via purchase order have arrived (either as accepted or rejected quantity) or purchase order was cancelled.

inboundProcess

ON_HOLD

Inbound process should be paused for now. Can be set manually via Backoffice or via API.

inboundProcess

CANCELLED

No further deliveries are expected. No real status, can be either true or false. Can be set manually via Backoffice or via API.

purchaseOrder

OPEN

No functional meaning

purchaseOrder

IN_PROGRESS

Goods receipt for (one part of the) delivery has been started (via inventory app)

receipt

FINISHED

Goods receipt for (one part of the) delivery has been finished (via inventory app)

receipt

Validation in inbound process

Unit validation in inbound processes

If there is a measurementUnitKey defined for a listing that is part of the inboundProcess, each new line item in inboundProcess.purchaseOrder.requestedItems and inboundProcess.receipts.receivedItems is validated against it: All quantities MUST match the unit of the Listing.

Attention: When creating an inboundProcess with a purchaseOrder with unit "xyz" and changing the listing.measurementUnitKey to something else ("qwe") the inboundProcess.purchaseOrder must now be patched/replaced to reflect the correct unit again before a receipt can created in the inventory app. This is intentional and ensures the consistency of new stock levels in the facility. In general it is not advised to change the unit of a product in a facility without careful consideration, but in some cases it might be desired to start with no unit on the listing (= no validation) and transition to stricter rules later.

Stock property validation in inbound processes

If there are stockProperties defined for a listing that is part of the inboundProcess, each new line item in inboundProcess.purchaseOrder.requestedItems and inboundProcess.receipts.receivedItems is validated against it. The validation for requested and received items behaves slightly different as we do not expect systems to know the exact properties of all items before they have arrived.

Validation for requestedItems

  • All stockProperties that are part of the requestedItems must also be defined in the stockProperties of the listing.

  • Not all stockProperties that are part of the listing must also be present in the requestedItems.

  • This means, it is allowed to create a purchaseOrder without stockProperties in the requestedItems even though the included listing has stockProperties defined.

Validation for receivedItems

  • All stockProperties that are part of the receivedItems must also be defined in the stockProperties of the listing.

  • Not all stockProperties that are part of the listing must also be present in the requestedItems. Only stockProperties where required is true need to be present in both listing and receivedItems. This is because creating a stock without providing a value for a required property is forbidden and will fail.

Api Documentation

Inbound Process

Purchase Order

Receipt

customAttributes: can be used to carry custom information that might be of interest to connectors or services outside of fulfillmenttools. For more information see .

stockProperties: information on of requested items such as expiry date

: information specific to that lineItem such as expiry date or batch number

For more information on measurementUnits, click .

For more information on stockProperties on listing, click .

custom attributes
stock properties
stockProperties
here
here
https://docs.fulfillmenttools.com/documentation
inbound view
inventory app
inbound section
Receipts

Get multiple Inbound Processes

get
Query parameters
sizenumber · min: 1 · max: 100OptionalDefault: 25
startAfterIdstringOptional
sortstring · enumOptionalPossible values:
facilityRefstring[]Optional
scannableCodestringOptional
searchTermstringOptional

Matches partial values; The queries terms and therefore the result set of the query can change in the future:

  • tenantInboundProcessId
  • scannableCodes
  • receipts.receivedItems.tenantArticleId
  • purchaseOrder.requestedItems.tenantArticleId
  • purchaseOrder.supplier.name
  • values of related listings
    • listing.title
    • listing.scannableCodes
searchTermExactstringOptional

Only matches complete values; The queries terms and therefore the result set of the query can change in the future:

  • tenantInboundProcessId
  • scannableCodes
  • receipts.receivedItems.tenantArticleId
  • purchaseOrder.requestedItems.tenantArticleId
  • purchaseOrder.supplier.name
  • values of related listings
    • listing.title
    • listing.scannableCodes
purchaseOrder_cancelledbooleanOptional
Responses
200
Paginated result containing the matching Inbound Process entities
application/json
401
Your user is not allowed to operate against this API instance
application/json
403
Your user, although recognized, is not authorized to use this
application/json
get
GET /api/inboundprocesses HTTP/1.1
Host: 
Accept: */*
{
  "inboundProcesses": [
    {
      "anonymized": true,
      "created": "2025-05-12T10:04:21.800Z",
      "customAttributes": {},
      "facilityRef": "text",
      "id": "text",
      "inboundDate": [
        "2025-05-12T10:04:21.800Z"
      ],
      "lastModified": "2025-05-12T10:04:21.800Z",
      "onHold": true,
      "origin": [
        {
          "name": "text"
        }
      ],
      "purchaseOrder": {
        "created": "2025-05-12T10:04:21.800Z",
        "customAttributes": {},
        "id": "text",
        "lastModified": "2025-05-12T10:04:21.800Z",
        "orderDate": "2025-05-12T10:04:21.800Z",
        "requestedDate": {
          "type": "ASAP",
          "value": "2025-05-12T10:04:21.800Z"
        },
        "requestedItems": [
          {
            "customAttributes": {},
            "quantity": {
              "unit": "text",
              "value": 1
            },
            "stockProperties": {
              "expiry": "text"
            },
            "tenantArticleId": "text"
          }
        ],
        "status": "OPEN",
        "supplier": {
          "name": "text"
        },
        "transfer": {
          "id": "text"
        }
      },
      "receipts": [
        {
          "asnRef": "text",
          "comments": [
            {
              "content": "text",
              "documentSetRef": "text",
              "id": "text",
              "userRef": "text"
            }
          ],
          "customAttributes": {},
          "id": "text",
          "receivedDate": "2025-05-12T10:04:21.800Z",
          "receivedItems": [
            {
              "acceptedQuantity": {
                "unit": "text",
                "value": 1
              },
              "comments": [
                {
                  "content": "text",
                  "documentSetRef": "text",
                  "id": "text",
                  "userRef": "text"
                }
              ],
              "customAttributes": {},
              "id": "text",
              "rejectedQuantity": {
                "unit": "text",
                "value": 1
              },
              "stockProperties": {
                "expiry": "text"
              },
              "storageLocationRef": "text",
              "tenantArticleId": "text"
            }
          ],
          "status": "OPEN"
        }
      ],
      "scannableCodes": [
        "text"
      ],
      "status": "OPEN",
      "tenantInboundProcessId": "text",
      "version": 1
    }
  ],
  "total": 1
}

Get an Inbound Process by ID

get
Path parameters
inboundProcessIdstringRequired
Responses
200
Requested Inbound Process entity
application/json
401
Your user is not allowed to operate against this API instance
application/json
403
Your user, although recognized, is not authorized to use this
application/json
get
GET /api/inboundprocesses/{inboundProcessId} HTTP/1.1
Host: 
Accept: */*
{
  "anonymized": true,
  "created": "2025-05-12T10:04:21.800Z",
  "customAttributes": {},
  "facilityRef": "text",
  "id": "text",
  "inboundDate": [
    "2025-05-12T10:04:21.800Z"
  ],
  "lastModified": "2025-05-12T10:04:21.800Z",
  "onHold": true,
  "origin": [
    {
      "name": "text"
    }
  ],
  "purchaseOrder": {
    "created": "2025-05-12T10:04:21.800Z",
    "customAttributes": {},
    "id": "text",
    "lastModified": "2025-05-12T10:04:21.800Z",
    "orderDate": "2025-05-12T10:04:21.800Z",
    "requestedDate": {
      "type": "ASAP",
      "value": "2025-05-12T10:04:21.800Z"
    },
    "requestedItems": [
      {
        "customAttributes": {},
        "quantity": {
          "unit": "text",
          "value": 1
        },
        "stockProperties": {
          "expiry": "text"
        },
        "tenantArticleId": "text"
      }
    ],
    "status": "OPEN",
    "supplier": {
      "name": "text"
    },
    "transfer": {
      "id": "text"
    }
  },
  "receipts": [
    {
      "asnRef": "text",
      "comments": [
        {
          "content": "text",
          "documentSetRef": "text",
          "id": "text",
          "userRef": "text"
        }
      ],
      "customAttributes": {},
      "id": "text",
      "receivedDate": "2025-05-12T10:04:21.800Z",
      "receivedItems": [
        {
          "acceptedQuantity": {
            "unit": "text",
            "value": 1
          },
          "comments": [
            {
              "content": "text",
              "documentSetRef": "text",
              "id": "text",
              "userRef": "text"
            }
          ],
          "customAttributes": {},
          "id": "text",
          "rejectedQuantity": {
            "unit": "text",
            "value": 1
          },
          "stockProperties": {
            "expiry": "text"
          },
          "storageLocationRef": "text",
          "tenantArticleId": "text"
        }
      ],
      "status": "OPEN"
    }
  ],
  "scannableCodes": [
    "text"
  ],
  "status": "OPEN",
  "tenantInboundProcessId": "text",
  "version": 1
}

Delete an Inbound Process by ID

delete
Path parameters
inboundProcessIdstringRequired
Responses
200
Inbound Process successfully deleted
401
Your user is not allowed to operate against this API instance
application/json
403
Your user, although recognized, is not authorized to use this
application/json
delete
DELETE /api/inboundprocesses/{inboundProcessId} HTTP/1.1
Host: 
Accept: */*

No content

Get a Purchase Order by ID

get
Path parameters
purchaseOrderIdstringRequired
Responses
200
Purchase Order entity
application/json
401
Your user is not allowed to operate against this API instance
application/json
403
Your user, although recognized, is not authorized to use this
application/json
get
GET /api/purchaseorders/{purchaseOrderId} HTTP/1.1
Host: 
Accept: */*
{
  "created": "2025-05-12T10:04:21.800Z",
  "customAttributes": {},
  "facilityRef": "text",
  "id": "text",
  "inboundProcessRef": "text",
  "lastModified": "2025-05-12T10:04:21.800Z",
  "orderDate": "2025-05-12T10:04:21.800Z",
  "requestedDate": {
    "type": "ASAP",
    "value": "2025-05-12T10:04:21.800Z"
  },
  "requestedItems": [
    {
      "customAttributes": {},
      "quantity": {
        "unit": "text",
        "value": 1
      },
      "stockProperties": {
        "expiry": "text"
      },
      "tenantArticleId": "text"
    }
  ],
  "status": "OPEN",
  "supplier": {
    "name": "text"
  },
  "transfer": {
    "id": "text"
  },
  "version": 1
}

Get InboundReceiptJobs

get

Query parameters
sizenumber · min: 1 · max: 100OptionalDefault: 25
startAfterIdstringOptional
facilityRefstring[]Optional
searchTermstring · min: 1Optional
searchTermExactstring · min: 1Optional
fromDatestring · date-timeOptional
toDatestring · date-timeOptional
Responses
200
Paginated Inbound Receipt Jobs
application/json
401
Your user is not allowed to operate against this API instance
application/json
403
Your user, although recognized, is not authorized to use this
application/json
get
GET /api/inboundreceiptjobs HTTP/1.1
Host: 
Accept: */*
{
  "inboundReceiptJobs": [
    {
      "expectedDate": {
        "type": "ASAP",
        "value": "2025-05-12T10:04:21.800Z"
      },
      "facilityRef": "text",
      "id": "text",
      "inboundProcessRef": "text",
      "items": {
        "customAttributes": {},
        "quantity": {
          "unit": "text",
          "value": 1
        },
        "stockProperties": {
          "expiry": "text"
        },
        "tenantArticleId": "text"
      },
      "origin": {
        "name": "text"
      },
      "originReadableId": "text",
      "originReadableName": "text",
      "status": "OPEN"
    }
  ],
  "total": 1
}

Get an Inbound Receipt Job by ID

get

Path parameters
inboundEntryIdstringRequired
Responses
200Success
application/json
401
Your user is not allowed to operate against this API instance
application/json
403
Your user, although recognized, is not authorized to use this
application/json
get
GET /api/inboundreceiptjobs/{inboundEntryId} HTTP/1.1
Host: 
Accept: */*
{
  "expectedDate": {
    "type": "ASAP",
    "value": "2025-05-12T10:04:21.800Z"
  },
  "facilityRef": "text",
  "id": "text",
  "inboundProcessRef": "text",
  "items": {
    "customAttributes": {},
    "quantity": {
      "unit": "text",
      "value": 1
    },
    "stockProperties": {
      "expiry": "text"
    },
    "tenantArticleId": "text"
  },
  "origin": {
    "name": "text"
  },
  "originReadableId": "text",
  "originReadableName": "text",
  "status": "OPEN"
}

Get receipt by id

get

Path parameters
receiptIdstringRequired
Responses
200Success
application/json
401
Your user is not allowed to operate against this API instance
application/json
403
Your user, although recognized, is not authorized to use this
application/json
404
The requested entity was not found
application/json
get
GET /api/receipts/{receiptId} HTTP/1.1
Host: 
Accept: */*
{
  "asnRef": "text",
  "comments": [
    {
      "content": "text",
      "documentSetRef": "text",
      "id": "text",
      "userRef": "text"
    }
  ],
  "created": "2025-05-12T10:04:21.800Z",
  "customAttributes": {},
  "id": "text",
  "inboundProcessRef": "text",
  "lastModified": "2025-05-12T10:04:21.800Z",
  "receivedDate": "2025-05-12T10:04:21.800Z",
  "receivedItems": [
    {
      "acceptedQuantity": {
        "unit": "text",
        "value": 1
      },
      "comments": [
        {
          "content": "text",
          "documentSetRef": "text",
          "id": "text",
          "userRef": "text"
        }
      ],
      "customAttributes": {},
      "id": "text",
      "rejectedQuantity": {
        "unit": "text",
        "value": 1
      },
      "stockProperties": {
        "expiry": "text"
      },
      "storageLocationRef": "text",
      "tenantArticleId": "text"
    }
  ],
  "status": "OPEN",
  "version": 1
}
  • Summary
  • Sub-Entities
  • Purchase Order
  • Receipt
  • Status
  • Validation in inbound process
  • Unit validation in inbound processes
  • Stock property validation in inbound processes
  • Api Documentation
  • Inbound Process
  • GETGet multiple Inbound Processes
  • POSTCreate a new Inbound Process
  • GETGet an Inbound Process by ID
  • DELETEDelete an Inbound Process by ID
  • Purchase Order
  • GETGet a Purchase Order by ID
  • PUTUpdate or create a Purchase Order
  • PATCHPartially updates a Purchase Order using a selection of fields
  • POSTCreate a new Purchase Order
  • PUTCreates or updates the specific purchase order of an existing inbound process.
  • Receipt
  • POSTAdds a receipt to an inbound process.
  • GETGet InboundReceiptJobs
  • GETGet an Inbound Receipt Job by ID
  • POSTCreates a receipt
  • GETGet receipt by id

Create a new Inbound Process

post
Body
customAttributesobject | nullableOptional

Attributes that can be added to this entity. These attributes cannot be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.

facilityRefstringRequired

Facility in which the inbound process takes place

onHoldbooleanOptional

Indicates if the inbound process is on hold and will not be processed further

scannableCodesstring[]Optional

scannableCodes such as barcodes that are relevant in the inboundProcess, e.g. , barcode of the delivery note

tenantInboundProcessIdstringOptional

Identifier of the process provided by the tenant system. It is recommended to be unique

Responses
200
Created Inbound Process entity
application/json
401
Your user is not allowed to operate against this API instance
application/json
403
Your user, although recognized, is not authorized to use this
application/json
post
POST /api/inboundprocesses HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 876

{
  "customAttributes": {},
  "facilityRef": "text",
  "onHold": true,
  "purchaseOrder": {
    "customAttributes": {},
    "orderDate": "2025-05-12T10:04:21.800Z",
    "requestedDate": {
      "type": "ASAP",
      "value": "2025-05-12T10:04:21.800Z"
    },
    "requestedItems": [
      {
        "customAttributes": {},
        "quantity": {
          "unit": "text",
          "value": 1
        },
        "stockProperties": {
          "expiry": "text"
        },
        "tenantArticleId": "text"
      }
    ],
    "status": "OPEN",
    "supplier": {
      "name": "text"
    }
  },
  "receipts": [
    {
      "asnRef": "text",
      "comments": [
        {
          "content": "text",
          "userRef": "text"
        }
      ],
      "customAttributes": {},
      "receivedDate": "2025-05-12T10:04:21.800Z",
      "receivedItems": [
        {
          "acceptedQuantity": {
            "unit": "text",
            "value": 1
          },
          "comments": [
            {
              "content": "text",
              "userRef": "text"
            }
          ],
          "customAttributes": {},
          "rejectedQuantity": {
            "unit": "text",
            "value": 1
          },
          "stockProperties": {
            "expiry": "text"
          },
          "storageLocationRef": "text",
          "tenantArticleId": "text"
        }
      ],
      "status": "OPEN"
    }
  ],
  "scannableCodes": [
    "text"
  ],
  "tenantInboundProcessId": "text"
}
{
  "anonymized": true,
  "created": "2025-05-12T10:04:21.800Z",
  "customAttributes": {},
  "facilityRef": "text",
  "id": "text",
  "inboundDate": [
    "2025-05-12T10:04:21.800Z"
  ],
  "lastModified": "2025-05-12T10:04:21.800Z",
  "onHold": true,
  "origin": [
    {
      "name": "text"
    }
  ],
  "purchaseOrder": {
    "created": "2025-05-12T10:04:21.800Z",
    "customAttributes": {},
    "id": "text",
    "lastModified": "2025-05-12T10:04:21.800Z",
    "orderDate": "2025-05-12T10:04:21.800Z",
    "requestedDate": {
      "type": "ASAP",
      "value": "2025-05-12T10:04:21.800Z"
    },
    "requestedItems": [
      {
        "customAttributes": {},
        "quantity": {
          "unit": "text",
          "value": 1
        },
        "stockProperties": {
          "expiry": "text"
        },
        "tenantArticleId": "text"
      }
    ],
    "status": "OPEN",
    "supplier": {
      "name": "text"
    },
    "transfer": {
      "id": "text"
    }
  },
  "receipts": [
    {
      "asnRef": "text",
      "comments": [
        {
          "content": "text",
          "documentSetRef": "text",
          "id": "text",
          "userRef": "text"
        }
      ],
      "customAttributes": {},
      "id": "text",
      "receivedDate": "2025-05-12T10:04:21.800Z",
      "receivedItems": [
        {
          "acceptedQuantity": {
            "unit": "text",
            "value": 1
          },
          "comments": [
            {
              "content": "text",
              "documentSetRef": "text",
              "id": "text",
              "userRef": "text"
            }
          ],
          "customAttributes": {},
          "id": "text",
          "rejectedQuantity": {
            "unit": "text",
            "value": 1
          },
          "stockProperties": {
            "expiry": "text"
          },
          "storageLocationRef": "text",
          "tenantArticleId": "text"
        }
      ],
      "status": "OPEN"
    }
  ],
  "scannableCodes": [
    "text"
  ],
  "status": "OPEN",
  "tenantInboundProcessId": "text",
  "version": 1
}

Update or create a Purchase Order

put
Path parameters
purchaseOrderIdstringRequired
Body
cancelledbooleanOptionalDeprecated

This field is deprecated. Set the status to 'CANCELED' Set the purchaseOrder to 'cancelled'. No further deliveries will be expected. Already received goods are unaffected.

customAttributesobject | nullableOptional

Attributes that can be added to this entity. These attributes cannot be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.

orderDatestring · date-timeRequired

Time and date at which the order was placed. Note: This does not refer to the creation date of this entity in the system.

requestedDateall ofRequired

Time and date at which the order is expected to arrive. Use 'ASAP' for deliveries with unknown date, but be aware that some features will not include these orders.

statusstring · enumOptionalPossible values:
versionnumberRequired
Responses
200
Updated/created Purchase Order entity
application/json
401
Your user is not allowed to operate against this API instance
application/json
403
Your user, although recognized, is not authorized to use this
application/json
put
PUT /api/purchaseorders/{purchaseOrderId} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 325

{
  "customAttributes": {},
  "orderDate": "2025-05-12T10:04:21.800Z",
  "requestedDate": {
    "type": "ASAP",
    "value": "2025-05-12T10:04:21.800Z"
  },
  "requestedItems": [
    {
      "customAttributes": {},
      "quantity": {
        "unit": "text",
        "value": 1
      },
      "stockProperties": {
        "expiry": "text"
      },
      "tenantArticleId": "text"
    }
  ],
  "status": "OPEN",
  "supplier": {
    "name": "text"
  },
  "version": 1
}
{
  "created": "2025-05-12T10:04:21.800Z",
  "customAttributes": {},
  "facilityRef": "text",
  "id": "text",
  "inboundProcessRef": "text",
  "lastModified": "2025-05-12T10:04:21.800Z",
  "orderDate": "2025-05-12T10:04:21.800Z",
  "requestedDate": {
    "type": "ASAP",
    "value": "2025-05-12T10:04:21.800Z"
  },
  "requestedItems": [
    {
      "customAttributes": {},
      "quantity": {
        "unit": "text",
        "value": 1
      },
      "stockProperties": {
        "expiry": "text"
      },
      "tenantArticleId": "text"
    }
  ],
  "status": "OPEN",
  "supplier": {
    "name": "text"
  },
  "transfer": {
    "id": "text"
  },
  "version": 1
}

Partially updates a Purchase Order using a selection of fields

patch
Path parameters
purchaseOrderIdstringRequired
Body
cancelledbooleanOptionalDeprecated

This field is deprecated. Set the status to 'CANCELED' Set the purchaseOrder to 'cancelled'. No further deliveries will be expected. Already received goods are unaffected.

customAttributesobject | nullableOptional

Attributes that can be added to this entity. These attributes cannot be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.

orderDatestring · date-timeOptional
statusstring · enumOptionalPossible values:
versionnumberRequired
Responses
200
Updated Purchase Order entity
application/json
401
Your user is not allowed to operate against this API instance
application/json
403
Your user, although recognized, is not authorized to use this
application/json
patch
PATCH /api/purchaseorders/{purchaseOrderId} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 325

{
  "customAttributes": {},
  "orderDate": "2025-05-12T10:04:21.800Z",
  "requestedDate": {
    "type": "ASAP",
    "value": "2025-05-12T10:04:21.800Z"
  },
  "requestedItems": [
    {
      "customAttributes": {},
      "quantity": {
        "unit": "text",
        "value": 1
      },
      "stockProperties": {
        "expiry": "text"
      },
      "tenantArticleId": "text"
    }
  ],
  "status": "OPEN",
  "supplier": {
    "name": "text"
  },
  "version": 1
}
{
  "created": "2025-05-12T10:04:21.800Z",
  "customAttributes": {},
  "facilityRef": "text",
  "id": "text",
  "inboundProcessRef": "text",
  "lastModified": "2025-05-12T10:04:21.800Z",
  "orderDate": "2025-05-12T10:04:21.800Z",
  "requestedDate": {
    "type": "ASAP",
    "value": "2025-05-12T10:04:21.800Z"
  },
  "requestedItems": [
    {
      "customAttributes": {},
      "quantity": {
        "unit": "text",
        "value": 1
      },
      "stockProperties": {
        "expiry": "text"
      },
      "tenantArticleId": "text"
    }
  ],
  "status": "OPEN",
  "supplier": {
    "name": "text"
  },
  "transfer": {
    "id": "text"
  },
  "version": 1
}

Create a new Purchase Order

post
Body
cancelledbooleanOptionalDeprecated

This field is deprecated. Set the status to 'CANCELED' Set the purchaseOrder to 'cancelled'. No further deliveries will be expected. Already received goods are unaffected.

customAttributesobject | nullableOptional

Attributes that can be added to this entity. These attributes cannot be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.

facilityRefstring · min: 1Required
orderDatestring · date-timeRequired

Time and date at which the order was placed. Note: This does not refer to the creation date of this entity in the system.

requestedDateall ofRequired

Time and date at which the order is expected to arrive. Use 'ASAP' for deliveries with unknown date, but be aware that some features will not include these orders.

statusstring · enumOptionalPossible values:
Responses
201
Created Purchase Order entity
application/json
401
Your user is not allowed to operate against this API instance
application/json
403
Your user, although recognized, is not authorized to use this
application/json
post
POST /api/purchaseorders HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 334

{
  "customAttributes": {},
  "facilityRef": "text",
  "orderDate": "2025-05-12T10:04:21.800Z",
  "requestedDate": {
    "type": "ASAP",
    "value": "2025-05-12T10:04:21.800Z"
  },
  "requestedItems": [
    {
      "customAttributes": {},
      "quantity": {
        "unit": "text",
        "value": 1
      },
      "stockProperties": {
        "expiry": "text"
      },
      "tenantArticleId": "text"
    }
  ],
  "status": "OPEN",
  "supplier": {
    "name": "text"
  }
}
{
  "created": "2025-05-12T10:04:21.800Z",
  "customAttributes": {},
  "facilityRef": "text",
  "id": "text",
  "inboundProcessRef": "text",
  "lastModified": "2025-05-12T10:04:21.800Z",
  "orderDate": "2025-05-12T10:04:21.800Z",
  "requestedDate": {
    "type": "ASAP",
    "value": "2025-05-12T10:04:21.800Z"
  },
  "requestedItems": [
    {
      "customAttributes": {},
      "quantity": {
        "unit": "text",
        "value": 1
      },
      "stockProperties": {
        "expiry": "text"
      },
      "tenantArticleId": "text"
    }
  ],
  "status": "OPEN",
  "supplier": {
    "name": "text"
  },
  "transfer": {
    "id": "text"
  },
  "version": 1
}

Creates or updates the specific purchase order of an existing inbound process.

put
Path parameters
inboundProcessIdstringRequired
Body
cancelledbooleanOptionalDeprecated

This field is deprecated. Set the status to 'CANCELED' Set the purchaseOrder to 'cancelled'. No further deliveries will be expected. Already received goods are unaffected.

customAttributesobject | nullableOptional

Attributes that can be added to this entity. These attributes cannot be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.

orderDatestring · date-timeRequired

Time and date at which the order was placed. Note: This does not refer to the creation date of this entity in the system.

requestedDateall ofRequired

Time and date at which the order is expected to arrive. Use 'ASAP' for deliveries with unknown date, but be aware that some features will not include these orders.

statusstring · enumOptionalPossible values:
versionnumberRequired
Responses
200
Purchase order successfully updated on inbound process
application/json
201
Purchase order successfully created on inbound process
application/json
401
Your user is not allowed to operate against this API instance
application/json
403
Your user, although recognized, is not authorized to use this
application/json
put
PUT /api/inboundprocesses/{inboundProcessId}/purchaseorder HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 325

{
  "customAttributes": {},
  "orderDate": "2025-05-12T10:04:21.800Z",
  "requestedDate": {
    "type": "ASAP",
    "value": "2025-05-12T10:04:21.800Z"
  },
  "requestedItems": [
    {
      "customAttributes": {},
      "quantity": {
        "unit": "text",
        "value": 1
      },
      "stockProperties": {
        "expiry": "text"
      },
      "tenantArticleId": "text"
    }
  ],
  "status": "OPEN",
  "supplier": {
    "name": "text"
  },
  "version": 1
}
{
  "created": "2025-05-12T10:04:21.800Z",
  "customAttributes": {},
  "id": "text",
  "lastModified": "2025-05-12T10:04:21.800Z",
  "orderDate": "2025-05-12T10:04:21.800Z",
  "requestedDate": {
    "type": "ASAP",
    "value": "2025-05-12T10:04:21.800Z"
  },
  "requestedItems": [
    {
      "customAttributes": {},
      "quantity": {
        "unit": "text",
        "value": 1
      },
      "stockProperties": {
        "expiry": "text"
      },
      "tenantArticleId": "text"
    }
  ],
  "status": "OPEN",
  "supplier": {
    "name": "text"
  },
  "transfer": {
    "id": "text"
  }
}

Adds a receipt to an inbound process.

post
Path parameters
inboundProcessIdstringRequired
Body
asnRefstringOptional

enables mapping a receipt to one of the ASNs in this inbound process

customAttributesobject | nullableOptional

Attributes that can be added to this entity. These attributes cannot be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.

receivedDatestring · date-timeRequired

date-time of the arrival of the items in the facility

statusstring · enumOptional

status of this receipt, only receipts with status 'FINISHED' are booked. IN_PROGRESS can be used to save partial receipts.

Possible values:
Responses
201
Receipt was added to the inbound process
application/json
401
Your user is not allowed to operate against this API instance
application/json
403
Your user, although recognized, is not authorized to use this
application/json
post
POST /api/inboundprocesses/{inboundProcessId}/receipts HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 416

{
  "asnRef": "text",
  "comments": [
    {
      "content": "text",
      "userRef": "text"
    }
  ],
  "customAttributes": {},
  "receivedDate": "2025-05-12T10:04:21.800Z",
  "receivedItems": [
    {
      "acceptedQuantity": {
        "unit": "text",
        "value": 1
      },
      "comments": [
        {
          "content": "text",
          "userRef": "text"
        }
      ],
      "customAttributes": {},
      "rejectedQuantity": {
        "unit": "text",
        "value": 1
      },
      "stockProperties": {
        "expiry": "text"
      },
      "storageLocationRef": "text",
      "tenantArticleId": "text"
    }
  ],
  "status": "OPEN"
}
{
  "asnRef": "text",
  "comments": [
    {
      "content": "text",
      "documentSetRef": "text",
      "id": "text",
      "userRef": "text"
    }
  ],
  "customAttributes": {},
  "id": "text",
  "receivedDate": "2025-05-12T10:04:21.800Z",
  "receivedItems": [
    {
      "acceptedQuantity": {
        "unit": "text",
        "value": 1
      },
      "comments": [
        {
          "content": "text",
          "documentSetRef": "text",
          "id": "text",
          "userRef": "text"
        }
      ],
      "customAttributes": {},
      "id": "text",
      "rejectedQuantity": {
        "unit": "text",
        "value": 1
      },
      "stockProperties": {
        "expiry": "text"
      },
      "storageLocationRef": "text",
      "tenantArticleId": "text"
    }
  ],
  "status": "OPEN"
}

Creates a receipt

post

Body
asnRefstringOptional

enables mapping a receipt to one of the ASNs in this inbound process

customAttributesobject | nullableOptional

Attributes that can be added to this entity. These attributes cannot be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.

facilityRefstringRequired
receivedDatestring · date-timeRequired

date-time of the arrival of the items in the facility

statusstring · enumOptional

status of this receipt, only receipts with status 'FINISHED' are booked. IN_PROGRESS can be used to save partial receipts.

Possible values:
Responses
201
Created inbound receipt
application/json
401
Your user is not allowed to operate against this API instance
application/json
403
Your user, although recognized, is not authorized to use this
application/json
post
POST /api/receipts HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 437

{
  "asnRef": "text",
  "comments": [
    {
      "content": "text",
      "userRef": "text"
    }
  ],
  "customAttributes": {},
  "facilityRef": "text",
  "receivedDate": "2025-05-12T10:04:21.800Z",
  "receivedItems": [
    {
      "acceptedQuantity": {
        "unit": "text",
        "value": 1
      },
      "comments": [
        {
          "content": "text",
          "userRef": "text"
        }
      ],
      "customAttributes": {},
      "rejectedQuantity": {
        "unit": "text",
        "value": 1
      },
      "stockProperties": {
        "expiry": "text"
      },
      "storageLocationRef": "text",
      "tenantArticleId": "text"
    }
  ],
  "status": "OPEN"
}
{
  "asnRef": "text",
  "comments": [
    {
      "content": "text",
      "documentSetRef": "text",
      "id": "text",
      "userRef": "text"
    }
  ],
  "created": "2025-05-12T10:04:21.800Z",
  "customAttributes": {},
  "id": "text",
  "inboundProcessRef": "text",
  "lastModified": "2025-05-12T10:04:21.800Z",
  "receivedDate": "2025-05-12T10:04:21.800Z",
  "receivedItems": [
    {
      "acceptedQuantity": {
        "unit": "text",
        "value": 1
      },
      "comments": [
        {
          "content": "text",
          "documentSetRef": "text",
          "id": "text",
          "userRef": "text"
        }
      ],
      "customAttributes": {},
      "id": "text",
      "rejectedQuantity": {
        "unit": "text",
        "value": 1
      },
      "stockProperties": {
        "expiry": "text"
      },
      "storageLocationRef": "text",
      "tenantArticleId": "text"
    }
  ],
  "status": "OPEN",
  "version": 1
}