As far as I know, even though the bitcoin cash is a fork from bitcoin itself, it is impossible to send bitcoin cash to bitcoin or vice versa.
Bitcoin and BCH (and BSV for that matter) share the same address format. See here for a randomly generated example of the same address appearing on all three chains:
https://blockchair.com/search?q=1Ekt3ooP7gyXzd2aUXdkGrDs4taC342z79. You can quite easily send bitcoin to a BCH address or vice versa. The coins will be at the same address on the correct blockchain, so if you have access to the associated seed or private key, then you can recover them. For example, if I sent BCH to a bitcoin address in my own wallet by mistake, I could export the relevant private key and import it in to a BCH wallet to access the coins. But in situations like this when you have sent it to a service, since the service are the only ones who have access to the associate keys, they are the only ones who can recover the coins.
As Baofeng says, the only thing OP can do is contact Kraken and ask them to recover it. I'm not sure why BTC.com are asking for an xpub key, since if the coins have been sent to Kraken then only Kraken can recover them, and a public key wouldn't let you recover them anyway - you need a private key.