- Inventory management
Multi-location inventory
Track product inventory across multiple locations. This feature, updated in April 2023, enables granular inventory tracking and provides location-specific access control through assignments.
InventoryRecord model
The InventoryRecord resource manages location-specific inventory data:
Optional assignment model for controlling location access:
Key properties and behaviors:
- Context: The
InventoryRecordexists within a Product or Product Variant context - ID: Follows standard writable ID format
- OwnerID: Writable only by Marketplace Owner, otherwise reflects creating Supplier
- Product.Inventory: Remains on Product resource
- With InventoryRecords:
QuantityAvailableshows sum of all records - Manual updates not reflected when InventoryRecords exist
- With InventoryRecords:
- Address: Read-only object derived from provided AddressID
- Multiple records: Allowed for same Product/Address combination
- Useful for tracking different fulfillment methods
- AddressID: Must be owned by the OwnerID
- AllowAllBuyers: Defaults to true
- Set false to enable granular assignment control
API endpoints
Product inventory
GET v1/products/{productID}/inventoryrecordsGET v1/products/{productID}/inventoryrecords/{inventoryRecordID}POST v1/products/{productID}/inventoryrecordsPUT v1/products/{productID}/inventoryrecords/{inventoryRecordID}PATCH v1/products/{productID}/inventoryrecords/{inventoryRecordID}DELETE v1/products/{productID}/inventoryrecords/{inventoryRecordID}GET v1/products/{productID}/inventoryrecords/assignmentsPOST v1/products/{productID}/inventoryrecords/assignmentsDELETE v1/products/{productID}/inventoryrecords/{inventoryRecordID}/assignments
Variant inventory
GET v1/products/{productID}/variants/{variantID}/inventoryrecordsGET v1/products/{productID}/variants/{variantID}/inventoryrecords/{inventoryRecordID}POST v1/products/{productID}/variants/{variantID}/inventoryrecordsPUT v1/products/{productID}/variants/{variantID}/inventoryrecords/{inventoryRecordID}PATCH v1/products/{productID}/variants/{variantID}/inventoryrecords/{inventoryRecordID}DELETE v1/products/{productID}/variants/{variantID}/inventoryrecords/{inventoryRecordID}GET v1/products/{productID}/variants/{variantID}/inventoryrecords/assignmentsPOST v1/products/{productID}/variants/{variantID}/inventoryrecords/assignmentsDELETE v1/products/{productID}/variants/{variantID}/inventoryrecords/{inventoryRecordID}/assignments
User endpoints
GET v1/me/products/{productID}/inventoryrecordsGET v1/me/products/{productID}/variants/{variantID}/inventoryrecords
Additional properties
LineItem.InventoryRecordID
- Only writable before order submission
- References the InventoryRecord for quantity updates
- Required when using Inventory Records
- Without InventoryRecordID, no inventory updates occur
- Applies when any Inventory Records exist for the Product
OrderCalculateResponse.LineItemOverrides.InventoryRecordID
- Enables InventoryRecordID override for line items
- No validation against AllowAllBuyers setting
- No validation for explicit assignments
Implementation example
Use case: Store pickup
A business offers three physical locations where customers can pick up their online orders.
Admin setup
-
Create InventoryRecords for each product location:
-
Associate each record with the physical location's address
-
Configure available quantities per location
-
Optional: Use assignments to restrict shopper access to specific locations
Shopper workflow
-
Navigate product catalog to item detail page
-
Check available pickup locations:
-
Add to cart with location selection:
Include LineItem.InventoryRecordID to specify pickup location
-
System automatically updates location inventory on order submission
-
Optional: Implement pre-webhooks to require InventoryRecordID on all line items