Here’s a quick example of how I would record stock for a new inventory item in OpenBoxes.
Start by creating a new product, if necessary. Otherwise, you’ll need to look up the product in some way. This is where I need a bit more context to figure out the best way to guide you.
Request
POST /openboxes/api/generic/product HTTP/1.1
Host: myhost.openboxes.com
Accept: application/json
Content-Type: application/json
Authorization: ••••••
Cookie: JSESSIONID=<JSESSIONID>
Content-Length: 235
{
"productCode": "LAPTOP-LEN-T14",
"name": "Laptop, Lenovo, ThinkPad T14",
"description": "Lenovo ThinkPad T14",
"category": "ff808181963b09bf0196404896350002",
"productType": "DEFAULT",
"disableRefresh": true
}
Response
{
"data": {
"id": "8a8f80869ef54e9e019ef56dc2580021",
"productCode": "LAPTOP-LEN-T14",
"name": "Laptop, Lenovo, ThinkPad T14",
"description": "Lenovo ThinkPad T14",
"category": "Parts",
"unitOfMeasure": null,
"pricePerUnit": null,
"dateCreated": "2026-06-23T17:01:11.641Z",
"lastUpdated": "2026-06-23T17:01:11.641Z",
"updatedBy": "Miss Administrator",
"color": null,
"handlingIcons": [],
"lotAndExpiryControl": false,
"active": true,
"upc": null,
"displayNames": {
"default": null
}
}
}
Then you need to create the default product lot (inventory item) for the given product.
Request
POST /openboxes/api/generic/inventoryItem HTTP/1.1
Host: myhost.openboxes.com
Accept: application/json
Content-Type: application/json
Authorization: ••••••
Cookie: JSESSIONID=<JSESSIONID>
Content-Length: 104
{
"product": "8a8f80869ef54e9e019ef56dc2580021",
"lotNumber": null,
"expirationDate": null
}
Response
{
"data": {
"id": "8a8f80869ef54e9e019ef5638a350020",
"product": {
"id": "8a8f80869ef54e9e019ef561a013001f",
"name": "pixel, haptic, killer",
"productCode": "SSL-k69",
"upc": null
},
"lotNumber": null,
"expirationDate": null
}
}
Or you can register a serial number for the given product. Again, I’m not exactly sure how the RFID tag should resolve to a product. If the product is already known and the RFID is just an asset tag, then it can be used here to register a serial number for that product.
Request
POST /openboxes/api/generic/inventoryItem HTTP/1.1
Host: myhost.openboxes.com
Accept: application/json
Content-Type: application/json
Authorization: ••••••
Cookie: JSESSIONID=<JSESSIONID>
Content-Length: 104
{
"product": "8a8f80869ef54e9e019ef56dc2580021",
"lotNumber": "ACME-RFID-2026-000042",
"expirationDate": null
}
Response
{
"data": {
"id": "8a8f80869ef5739d019ef5787b2a0000",
"product": {
"id": "8a8f80869ef54e9e019ef56dc2580021",
"name": "Laptop, Lenovo, ThinkPad T14",
"productCode": "LAPTOP-LEN-T14",
"upc": null
},
"lotNumber": "ACME-RFID-2026-000042",
"expirationDate": null
}
}
Then we just need to combine this
Request
POST /openboxes/api/generic/transaction HTTP/1.1
Host: myhost.openboxes.com
Accept: application/json
Content-Type: application/json
Authorization: ••••••
Cookie: JSESSIONID=<JSESSIONID>
Content-Length: 301
{
"transactionType": { "id": "12" },
"transactionDate": "06/23/2026 12:00",
"inventory": { "id": "1" },
"comment": "Opening balance for RFID-tracked inventory",
"transactionEntries": [
{
"inventoryItem": { "id": "8a8f80869ef5739d019ef5787b2a0000" },
"quantity": 1
}
]
}
Response
{
"data": {
"id": "8a8f80869ef5739d019ef57cbd640006",
"dateCreated": "2026-06-23T17:17:33Z",
"transactionNumber": null,
"lastUpdated": "2026-06-23T17:17:33Z",
"incomingShipment": null,
"updatedBy": {
"id": "1"
},
"order": null,
"receipt": null,
"transactionEntries": [
{
"id": "8a8f80869ef5739d019ef57cbd640007"
}
],
"dateConfirmed": null,
"confirmedBy": null,
"transactionSource": null,
"outgoingShipment": null,
"source": null,
"requisition": null,
"transactionDate": "2026-06-23T00:00:00Z",
"comment": "Opening balance for RFID-tracked inventory",
"transactionType": {
"id": "12"
},
"inventory": {
"id": "1"
},
"destination": null,
"createdBy": {
"id": "1"
},
"cycleCount": null,
"confirmed": false
}
}
And here’s a screenshot showing the stock card for the given product