When to use this API
The Stock Orders API is most commonly used to sync stock order information with a platform that is not connected to Inventory Planner, such as a 3PL. Details about stock orders created in Inventory Planner are pulled by the API, then the information is pushed back to Inventory Planner. The term 'stock order' includes purchase orders, transfers, and assembly orders.
Accurate and timely updates to stock orders in Inventory Planner improve the accuracy of replenishment recommendations by taking incoming stock and the timing of arrivals into consideration.
Working with Inventory Planner APIs
To get started, refer to the Inventory Planner Public API article for information including authorization and making requests.
The base URL for the API is https://app.inventory-planner.com/
API endpoints
Purchase orders (api/v1/purchase-orders) and purchase order (api/v1/purchase-orders/{id})
The following fields for purchase order are currently supported:
id
- purchase order identifier in Inventory Planner (read-only)reference
- number/reference numberextra_reference
- secondary/extra reference numberstatus
- statuscreated_date
- creation dateexpected_date
- expected datepayment_date
- payment dateshipment_date
- shipment datereceived_date
- received date (last)last_modified
- last modified atreadonly
- true if PO cannot be edited in Inventory Plannersource_type
- 'warehouse' for transfers and assembly orders, 'vendor' for purchase orderstype
- 'assembly' for assembly orders, 'transfer' for transfers, 'po' or empty for purchase ordersvendor
- vendorsource_warehouse
- source warehouse for transfers and assembly orderssource
- vendor or source_warehousewarehouse
- warehousevendor_address
- vendor addressbilling_address
- billing addressshipping_address
- shipping addressemail
- vendor emailattn
- Attnnotes
- Notesshipment_method
- shipment methodpayment_terms
- payment termsshipping_handling
- shipping/handling charges in order currencyshipping_handling_tax
shipping/handling tax in order currencycurrency
- order currencydiscount_enabled
- true if discount column is enableddefault_discount
- default discount for line itemsuom_ordering
uom_round
moq
items
- line items (refer to "Purchase order items")total
- total cost in order currency (read-only)total_ordered
- total ordered qty (read-only)total_received
- total received qty (read-only)shop_name
- shop name in PDFaddMySKUs
- true to add variant SKU to line itemsaddVendorSKUs
- true to add variant vendor reference/SKU to line itemsaddBarcodes
- true to add variant barcode to line itemsaddCategories
- true to add variant categories to line itemsuseTitlesAsVendorName
- true to use variant title as line item title, false to use variant vendor product namecustom_fields
- custom fields in field=value formatconnections
- connection information (refer to "Purchase order connections")stock-update
- information about stock updates pushed to connection (refer to "Purchase order stock updates")
Transfers and assembly orders
Transfers and assembly orders use the same API endpoints as purchase orders.
To create assembly orders it is necessary to set the following:
warehouse
source_warehouse
type='assembly'
components
for each line item
Purchase order items (api/v1/purchase-orders/{id}/items) and item (api/v1/purchase-orders/{id}/items/{item_id})
The following fields for purchase order items are currently supported (unless marked as read-only, the field is editable):
id
- line item variant IDThe line item variant ID can be found within the user interface by navigating to Catalog > Listings and viewing the "ID" column. Alternatively, you can call GET (collection resource) to retrieve ID values.
title
- line item titlesku
- line item SKUbarcode
- line item barcodeimage
- line item image URLvendor_name
- line item vendor namevendor_reference
- line item vendor reference/SKUuom_ordering
- line item UOMvendor_packaging
- line item MOQsource_stock
- stock snapshot at source warehouse for transfersin_stock
- stock snapshot at destination warehousepurchase_orders_qty
- on order qty snapshottransfer_units_in
- transfer in qty snapshottransfer_units_out
- transfer out qty snapshotreplenishment
- line item ordered (replenished) quantitycost price
- line item cost pricelanding_cost_price
- line item landingtax
- line item taxdiscount
- line item discountcbm
- line item cbmreceived
- line item received quantityreceived_history
- line item received historycomponents
- list of components needed to produce line item (for assembly orders)
The line item received history is an array of the documents with the following fields:
date
- received date time stamp (in Unix format)value
- received qty
The line item components is an array of documents with the following fields:
id
- component variant idquantity
- component quantity required to produce 1 unit of line item's assemblysku
- component SKUtitle
- component titlebarcode
- component barcode
Purchase order connections (api/v1/purchase-orders/[id]/connections) and connection (api/v1/purchase-orders/[id]/connections/[connection])
The following fields for purchase order connection are currently supported:
status
- One of:success,
error,
run
(save process is running),queued
(waiting for QuickBooks Desktop update).connection
- connection (internal) nameconnection
_id - connection (internal) idsave_po
- true if PO is saved into this connectionid
- id of this purchase order for this connectionreference
- reference of this purchase order for this connection
Purchase order stock updates (api/v1/purchase-orders/{id}/stock-update)
The following fields for purchase order stock update are currently supported:
forDst
- true if stock was updated in destination warehouse, or false if stock was update in source warehouse (possible for transfers only)wh
- warehouse where stock was updateditems
- information about updated line items
Items are an array of documents with the following fields:
id
- line item variant idstock_before
- stock in connection before updatedelta
- stock delta pushed in connectionerror
- non empty error message if stock update for this line item failed
API usage examples
Update variant vendor data/Assign a variant vendor
PUT /api/v1/variants/1/vendors/mysupplier
{
"vendor": {
"cost_price": 2.1,
"vendor_reference": "R"
}
}
Response:
{
"vendor": {
"cost_price": 2.1,
"vendor_reference": "R",
"vendor_name": "N",
"t": "vendor",
"s": "user",
"n": "mysupplier"
},
"result": {
"status": "success",
"message": "Vendor data vendor mysupplier updated"
}
}
Use DELETE on variant vendor resources to delete previously assigned vendor and associated data.
Create a new purchase order based on current replenishment quantities
This request creates a new purchase order containing items for variants of vendor_v1 and current replenishment quantities greater than 3.
POST /api/v1/purchase-orders
{
"purchase-order": {
"status": "OPEN",
"reference": "MY_PO_20",
"expected_date": "2018-03-15",
"vendor": "vendor_1",
"warehouse": "w1",
"variants_filter": {
"vendor": "vendor_1",
"replenishment_gt": 3
}
}
}
Response:
{
"purchase-order": {
"status": "draft",
"vendor": "Wonka Candy (DEMO)",
"expected_date": "2018-03-15",
"items": [
...
],
"id": "5a8322013e7859ae69a5d180",
...
},
"result": {
"status": "success",
"message": "Created purchase-order 5a8322013e7859ae69a5d180"
}
}
Create a new transfer based on current replenishment quantities and save it into a Brightpearl connection
POST /api/v1/purchase-orders
{
"purchase-order": {
"status": "OPEN",
"source_warehouse": "w1",
"warehouse": "w2",
"expected_date": "2018-03-15",
"variants_filter": {
"replenishment_gt": 3
},
"connections": [
{
"connection": "inventoryplannerdev.brightpearl.com",
"save_po": true
}
]
}
}
Response:
{
"purchase-order": {
"status": "active",
"source_warehouse": "w1",
"warehouse": "w2",
"expected_date": "2018-03-15",
"connections": [
{
"connection": "inventoryplannerdev.brightpearl.com",
"save_po": true,
"id": "t410034",
"reference": "ST0021",
"status": "success"
}
],
"items": [
...
],
"id": "5a83236c3e78599f6ea5d180",
...
},
"result": {
"status": "success",
"message": "Created purchase-order 5a83236c3e78599f6ea5d180"
}
}
Create a new assembly order
POST /api/v1/purchase-orders
{
"purchase-order": {
"type": "assembly",
"status": "OPEN",
"reference": "MY_AO_20",
"expected_date": "2018-03-15",
"warehouse": "w1",
"source_warehouse": "w1",
"items": [
{
"id": "c1_1",
"sku": "T-1",
"title": "Office table",
"replenishment": 10,
"components": [
{
"id": "c1_2",
"quantity": 1,
"sku": "C-1",
"title": "Table top",
},
{
"id": "c1_3",
"quantity": 4,
"sku": "C-2",
"title": "Table leg"
}
]
}
]
}
}
Update received quantities in the existing purchase order (multiple line items)
This request updates the (total) received quantity for two line items with variant IDs 123/124.
PATCH /api/v1/purchase-orders/5a8321b33e7859f568a5d180/items
{
"items": [
{
"id": "c20_123",
"received": 7,
},
{
"id": "c20_124",
"received": 5,
}
]
}
Response:
{
"items": [
{
"id": "c20_123",
"replenishment": 10,
"received": 7
},
{
"id": "c20_124",
"replenishment": 20,
"received": 5
}
],
"result": {
"status": "success",
"message": "2 updated, from total 2 items"
},
}
Note: Any changes to the stock orders you make via API calls will not affect the current forecast and replenishment analysis, but they will be counted once the data is recalculated after the "nightly sync".
To make the necessary recalculations right after a change, you can use the parameter "skip_background_jobs
" as in the "update received quantities
" request below:
{
"items": [
{
"id": "c20_123",
"received": 3
},
"skip_background_jobs": false
]
}
Close an existing purchase order
Sets the status field to CLOSED.
PATCH /api/v1/purchase-orders/5a8321b33e7859f568a5d180
{
"purchase-order": {
"status": "CLOSED",
}
}
Response:
{
"purchase-order": {
"status": "CLOSED",
"id": "5a8322013e7859ae69a5d180",
...
},
"result": {
"status": "success",
"message": "Updated purchase-order 5a8322013e7859ae69a5d180"
}
}
Update the received quantities in existing purchase order (single line item)
This request updates the (total) received quantity for line item with variant ID 123.
PATCH /api/v1/purchase-orders/5a8321b33e7859f568a5d180/items/123
{
"item": {
"id": "c20_123",
"received": 13
}
}
Response:
{
"items": {
"id": 123,
"replenishment": 20,
"received": 13
},
"result": {
"status": "success",
"message": "Purchase order \"1\" item i2 updated"
}
}
Save existing purchase order into a Brightpearl connection
PUT /api/v1/purchase-orders/5a8321b33e7859f568a5d180/connections/QuickBooksCommerce.30636
{
"connection": {
"save_po": true
}
}
Response:
{
"connection": {
"save_po": true,
"connection": "inventoryplannerdev.brightpearl.com",
"id": 815902,
"reference": "PO0043",
"status": "success"
},
"result":{
"status":"success",
"message":"Updated purchase-order 5a8321b33e7859f568a5d180 connection inventoryplannerdev.brightpearl.com"
}
}
Retrieve stock updates available for push-to-destination connection (computed based on received quantities and previous stock updates)
GET /api/v1/purchase-orders/5c9deeb5178a3816620d8362/stock-update?forDst=true
Response:
{
"items": [
{
"id": 123,
"delta": 10,
"stock_before": 0
},
{
"id": 456,
"delta": 5,
"stock_before": 1,
},
...
],
"forDst": true,
"wh": 13434355
}
Push stock updates to destination connection
POST /api/v1/purchase-orders/5c9deeb5178a3816620d8362/stock-update
{
"stock-update":{
"items": [
{
"id": 123,
"delta": 10,
"stock_before": 0
},
{
"id": 456,
"delta": 5,
"stock_before": 1,
},
...
]
},
"forDst": true
}
Response:
{
"items": [
{
"id": 123,
"delta": 10,
"stock_before": 0
},
{
"id": 456,
"delta": 5,
"stock_before": 1,
"error": "Update request failed"
},
...
],
"forDst": true
}