Hi,
If every internal transfer always shows one unit less than what is actually on hand, that usually points to a configuration or reserved quantity issue rather than a bug in the stock itself.
Here are some possible causes and how to check them:
1. Check Tracked Products
If the product is tracked by lot or serial number, Odoo requires you to assign them during transfers. If you don’t assign all 5 serials/lots, Odoo will only validate the assigned ones (for example, 4). That’s why it seems like one unit is missing. You can check this on the product form under the Inventory tab.
2. Reserved Quantities vs. On Hand
Go to Reporting > Inventory > Stock Moves and check if there is an already reserved move for that missing quantity (maybe for another transfer, delivery, or reordering). Odoo reduces the available-to-reserve stock by what is already allocated. For example: 5 on hand, but 1 is reserved for another picking, so you only see 4 available.
3. Double-Check Operation Type Settings
For your Internal Transfer operation type, check if the default source location actually contains all the stock. Sometimes the operation type points to a location that only has part of the inventory.
4. Test With a Fresh Product
Create a new product with no tracking, add 10 units via an inventory adjustment, then try an internal transfer. If the issue doesn’t appear, the problem is with tracking or reservations. If it still shows one less, it could be custom code or a bug in your Odoo version.
Hope it helps