Calling payable mint function from another contract

I am trying to call a payable mint function from another contract but I get the following message "ERC1155: transfer to non ERC1155Receiver implementer"

I know the call works because when I take out the 'mint' part out and say just increment some counter its OK. Maybe calling a payable function from another contract isn't even possible? How would the calling contract know how much gas to send to make the mint. Note in my paticular example the mint from the calling contract should be free as I don't require any msg.value from the calling contracts function. I have tried importing "erc1551reciever.sol" into the CalledContract but sure not whether to explore this anymore if it's not actually possible.

Called Contract

function mint() public payable {   

  if (msg.sender != owner() && msg.sender != CallingContractAddress) {
    require(msg.value >= cost * _mintAmount,"Requester does not have enough to mint");
  }
 
  uint16 nextTokenId = minted+1;
  _mint(msg.sender, nextTokenId,1,"");
  minted++;
 }

Calling Contract

function triggerMint() payable external {
  calledContract.mint()
}