Hi,
The system will automatically add the canonical URL tag to the product details page of the product as long as the canonical URL field o f the product is not empty, regardless of the "force canonical URLs on listing" setting or other settings.
This is done by the code:
if(!empty($this->canonical)) {
$doc = JFactory::getDocument();
$doc->addHeadLink(hikashop_cleanURL($this->canonical), 'canonical');
}
at the beginning of the file product / show that you can edit via the menu Display>Views.
So first, I would recommend to check if that code is there because you could have a view override on that view file without that code, and in that case, it wouldn't add the canonical tag to the page, no matter what you do.
If that code is there, I would add some var_dump calls to check that the variable $this->canonical is properly filled and that it goes in the if.
If that's all ok, then HikaShop is adding the canonical tag to the headers. So that means it's probably either the template or a system plugin removing it. So switching the template to the default one, turning off the system plugins one by one would be the next step to figure out where the problem comes from.