In the following code, I am able to store all the information with the exclusion of the stock data. Has something changed in M2? public function __construct( ScopeConfigInterface $scopeConfig, CollectionFactory $product, Magento\Catalog\Api\ProductRepositoryInterface $productRepository ) { $this->scopeConfig = $scopeConfig; $this->product = $product; $this->productRepository = $productRepository; } public function update(\XXXXXX\XXXXXX\Api\Data\InventoryCollectionInterface $data) { foreach ($data['list'] as $d) { $product = $this->productRepository->getById($d['entity_id']); $product->setStatus(($d['quantity'] > 0 ? 1 : 0)); $product->setUpc($d['upc']); $product->setStockData(array( 'qty' => $d['quantity'], 'is_in_stock' => ($d['quantity'] > 0 ? 1 : 0) )); $this->productRepository->save($product); } return "Done"; }