3

My salable quantity is greater than my quantity. How has this happened? I recently updated to Magento 2 and have been trying to get my head around the MSI but still can't figure out how salable quantity is more than quantity in the case of this and some other products. With the result that I am overselling on stock.

enter image description here

Ideally I would work only from simple stock quantity but I when I disable the manage stock option, I then oversell on the front end as there is no stock control.

4

Based on your description the root cause of the problem could be one of those:

  1. You have upgraded to Magento 2.3 from the previous version of Magento where you had some orders placed, but not shipped. As since Magento 2.3 the stock deduction logic has changed drastically and now Magento places reservation at the time of Order placement (negative reservation) and then compensate it at the time of Shipment creation (positive reservation), you face the problem that Magento compensates the reservation which in fact was not created (because an order has been placed on older version of Magento.). You can read more about this here - https://github.com/magento-engcom/msi/wiki/Salable-Quantity-Calculation-and-Mechanism-of-Reservations

  2. another reason for getting this issue is that you had Inventory Configuration Manage Stock = false. With this config option, Magento does not place a reservation at the time of order placement. But then you decided to switch Stock management On, and placing shipment you overcompensated with positive reservation (similar as case 1)

3
  • Thank you Igor, I think it could be number 2. Do you know of any way to change the salable quantity so it reflects our actual stock?
    – Alice
    Apr 14 '19 at 15:25
  • @Alice currently this is not done yet. But this functionality would be released in the upcoming MSI release - 1.1.2 . You can track this GitHub issue - github.com/magento-engcom/msi/issues/2170 and my comment here - github.com/magento-engcom/msi/issues/… Apr 15 '19 at 19:16
  • Thank you Igor, I take it that its not safe to go into the inventory_reservation via php and edit the quantity where you can see it has been taken out or put into stock for a short term fix?
    – Alice
    Apr 16 '19 at 9:37
2

Late answer but I had this problem too on a couple of items out of 1000's and I could not figure out why. To update the quantities and solve this, since i only have one stock source, I unassigned the products from that source, the assigned them again with stock zero, and then corrected stocks and stock and saleable qty balanced again.

To do the above, go to the products page, select the trouble causing products, from the actions dropdown list select "unassign inventory source". Once done, elect those same products and from the action dropdown select "assign inventory source". The products will then need their quantities updating manually, either through the product pages or via stock source import.

Hope this helps some short term. This is not a great answer, but it is a temporary one so one can correct it and keep a note to try and trouble shoot the circumstances if it occurs again. It happened to less than 0.2% of one of my sites product ranges, it is obviously not a common issue and only time will tell on how to reproduce it!

1
  • Thank you Jaimie, we had the same problem which was caused by backordered items migrated from M1 to M2. Changing stock from negative value to zero, followed by re-assigning inventory source solved this.
    – Espen
    Jan 7 at 13:50
1

Please see the following diagram illustrates the relationship between source stocks, aggregate stocks, and sales channels: enter image description here

In your case, maybe your stock is mapping with 2 sources, first one has salable Inventory is 10 and second one has salable Inventory is 7.5, so the salable Quantity in your stock is 17.5. This is similar Bicycle Shop UK stock in diagram with formula: Salable Quantity = 40 (Warehouse Salable Inventory)+ 15 (Flagship Store Salable Inventory) - 5 (only X Left)=50

1
  • Thank you Bachlee89, but I only have one source = default source..... I do have two sales channels though, website and ebay...
    – Alice
    Apr 5 '19 at 20:06
0

I know this is a bit old but I've encountered this issue on 2 different M2 stores for different reasons and the fix we implemented hasn't been mentioned above.

One store was using a cheap "Delete Orders" extension which wasn't correctly updating the reservations table. The other was a M1 to M2 migration which had Cancelled orders. This meant more Saleable Stock was showing than actual.

There's a section in the M2 documentation about finding and fixing inventory reservation inconsistencies you can see here: https://devdocs.magento.com/guides/v2.4/inventory/inventory-cli-reference.html

The following command shows you all the "fixes" you need to make in order to resolve the inconsistencies in your inventory.

bin/magento inventory:reservation:list-inconsistencies -r

The -r flag puts it in a raw format that makes step 2 of this process much easier. It'll produce lines like this:

172:bike-123:+2.000000:1

Which translates to ORDER ID : SKU : +/- QUANTITY TO ADJUST : STOCK ID

Each one can be fixed by running the create-compensations cli command, e.g.:

bin/magento inventory:reservation:create-compensations 172:bike-123:+2.000000:1

And you can chain multiple fixes in to one command just by putting a space between the compensations you want to create, e.g.:

bin/magento inventory:reservation:create-compensations 172:bike-123:+2.000000:1 173:bike-123:+2.000000:1 174:bike-123:+2.000000:1 etc...

NB - If your SKU's contain spaces, brackets, ampersands or other special characters you'll have to escape them with , e.g. "MY\ SKU".

BUT A WORD OF WARNING ON THIS.

Every time I have run the list-inconsistencies command I have had it report the some of the same inconsistencies multiple times, i.e. it will show multiple records of the same order ID, SKU and quantity to compensate for some orders (but not all). I don't know if this is because of the sites I've worked on or if it's a Magento bug. If you follow the official documentation it will show you a one-line command that lists the inconsistencies and then fixes them. I would recommend you don't do this. If you do have more than one of the same inconsistency and you run the fixes you'll end up going the other way and overcompensating, potentially by a lot.

Instead, I'd output the inconsistencies to a file:

bin/magento inventory:reservation:list-inconsistencies -r > inconsistencies.csv

Then open it in something like Excel and de-duplicate the column. You can then safely run the create-compensations command with this list of unique compensations and voila, your inventory reservations table is up to date.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.