Hi,
Order statuses can either be changed by the payment plugins upon receiving payment notifications, or other plugins like the order auto cancel plugin which cancels created orders automatically after a certain period in order to free the stock, or with mass actions (menu System>Mass actions), or if the merchant in the backend changes the status himself, or if the customer cancels the order on his orders listing (if you activated that capability).
Normally, when the status is changed an entry is logged in the history table :
- if the IP there is the IP of an iDeal server, then it comes from the payment plugin.
- if the IP is the server where the website is or hikashop.com's IP address, then it has been done through a cron task (potentially by a mass action or a plugin like the order auto cancel plugin.
- if the IP address is the merchant's IP address, then it must come from an action the merchant made on the website.
- if the IP address is the customer's, then it must come from him cancelling the order.
- if there is no history of the order status change, then it must be a third party plugin which doesn't go through HikaShop to save the order status change, or deactivate the history logging when calling the save of the change.
- if the order is directly created with that order status, then it's either the payment plugin or the order status settings in the menu System>Order statuses that are wrong.