This works for me: $item = ['qty' => 11]; // For example $product->setStockData(['qty' => $item['qty'], 'is_in_stock' => $item['qty'] > 0]); $product->save(); **Edit**: This is no longer the correct way to handle this, because `$product->save()` is deprecated since Magento 2.1. The correct way to do this is by using the `StockRegistryInterface`: /** * @var StockRegistryInterface */ protected $stockRegistry; /** * Inventory constructor. * @param StockRegistryInterface $stockRegistry */ public function __construct( StockRegistryInterface $stockRegistry ) { $this->stockRegistry = $stockRegistry; parent::__construct(); } With the above code, you can use the following: $sku = 'ABC123'; $qty = 10; $stockItem = $this->stockRegistry->getStockItemBySku($sku); $stockItem->setQty($qty); $this->stockRegistry->updateStockItemBySku($sku, $stockItem); Use **Managers** as much as possible. Keep your modules decoupled from each other. It's The Magento Way™