There are many causes for this error, such as currency exchange, rounding issue. In this case, I would like to show one more, there could be a broken inventory transaction unfinished.
Below is an example, there is unbalance of inventory transaction for a quarantine order.
You can write a job to update the amount to offset the Sold or Purchased transaction. In the example above, there are 2 transactions need to be updated to match the Sold and Purchased ones. Note that they go in pair in this case.