Failed to relay call on GSN v3 Matic Mumbai

I’m trying to use GSN v3 for a couple of weeks on the Matic Mumbai network but I’ve hit a roadblock where I’m unable to send any transaction through GSN it will just return Failed to relay call error stated below:

Error: Failed to relay call. Results: Relaying errors (1): https://mumbai.v3.opengsn.org/v3 => Failed to sign relayed transaction for 0xce8f8891f679649036fa0cb6b18253135a9b73be: TypeError: assert is not a function stack:Error: Failed to sign relayed transaction for 0xce8f8891f679649036fa0cb6b18253135a9b73be: TypeError: assert is not a function at AccountManager.sign (http://127.0.0.1:5173/node_modules/.vite/deps/@opengsn_provider.js?v=2fea1233:70858:17) at async RelayClient._prepareRelayHttpRequest (http://127.0.0.1:5173/node_modules/.vite/deps/@opengsn_provider.js?v=2fea1233:81140:27) at async RelayClient._attemptRelay (http://127.0.0.1:5173/node_modules/.vite/deps/@opengsn_provider.js?v=2fea1233:81027:29) at async RelayClient.relayTransaction (http://127.0.0.1:5173/node_modules/.vite/deps/@opengsn_provider.js?v=2fea1233:80985:31) at async RelayProvider._ethSendTransaction (http://127.0.0.1:5173/node_modules/.vite/deps/@opengsn_provider.js?v=2fea1233:81724:21)

Here’s my GSN setup

const web3Provider = await detectEthereumProvider({ mustBeMetaMask: true });
const gsnConfig: Partial<GSNConfig> = {
	loggerConfiguration: { logLevel: 'debug' },
	paymasterAddress: '0x327BBd6BAc3236BCAcDE0D0f4FCD08b3eDfFbc06' // Using public accept everything paymaster
};

const relayProvider = RelayProvider.newProvider({
	provider: web3Provider,
	config: gsnConfig
});
await relayProvider.init();

const gsnProvider = new ethers.providers.Web3Provider(
	relayProvider as any as providers.ExternalProvider
);

This is my contract instantiate

const curContract: Contract = new ethers.Contract(
	curContractInfo.address,
	JSON.stringify(curContractInfo.abi),
	gsnProvider
);

And here’s is my GSN interaction script

const provider = await detectEthereumProvider({ mustBeMetaMask: true });
const accounts = await provider.send('eth_requestAccounts', [])

const signer = userDataContract.connect(gsnProvider.getSigner());
const transaction = await signer.registerUser(
	user.uid, // User UID
	user.displayName, // User name
	accounts.result[0], // User wallet
	{
		gasPrice: await gsnProvider.getGasPrice()
	}
);

const hash = transaction.hash;
console.log(`Transaction ${hash} sent`);
const receipt = await transaction.wait();
console.log(`Mined in block: ${receipt.blockNumber}`);

Any help would be helpful why I kept getting signer errors even though I’ve already set the signer provided by GSN Provider, is this my code problem or a relayer issue on the Matic Mumbai network?