# Signing with multisig

**URL:** <https://forums.sui.io/t/signing-with-multisig/45765>\
**Category:** SDK\
**Created:** [July 1, 2024, 11:05am UTC](https://forums.sui.io/t/signing-with-multisig/45765 "2024-07-01T11:05:32Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nikos-T](https://avatars.discourse-cdn.com/v4/letter/n/54ee81/32.png) [@Nikos-T](https://forums.sui.io/u/Nikos-T)\
**Post date:** [July 1, 2024, 11:05am UTC](https://forums.sui.io/t/signing-with-multisig/45765/1 "2024-07-01T11:05:32Z")

</div>

> i am using `split_and_transfer` function of `pay` module i am using multisig account for this transaction i am getting this error `VMVerificationOrDeserializationError` while doing it thorugh `js-sdk` it works fine on CLI ? what can be root cause of this error? i am using js-sdk version 1.2.0

---

<div class="post-metadata">

**Author:** ![Nikos-T](https://avatars.discourse-cdn.com/v4/letter/n/54ee81/32.png) [@Nikos-T](https://forums.sui.io/u/Nikos-T)\
**Post date:** [July 1, 2024, 11:07am UTC](https://forums.sui.io/t/signing-with-multisig/45765/2 "2024-07-01T11:07:57Z")

</div>

When signing from a multisig address, the process is

1. building the transaction using `setSender(multisigAddr)`
2. assembling signatures of the participants of the multisig and possibly the gas-owner/sponsor if any.
3. executing the transaction passing the transaction bytes and above signatures with `SuiClient.executeTransactionBlock`.

Do you have a code snippet we can maybe debug?  
[sa.](https://sdk.mystenlabs.com/typescript/cryptography/multisig)

---

<div class="post-metadata">

**Author:** ![amit\_28453\_42876](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@amit\_28453\_42876](https://forums.sui.io/u/amit_28453_42876)\
**Post date:** [July 2, 2024, 5:00am UTC](https://forums.sui.io/t/signing-with-multisig/45765/3 "2024-07-02T05:00:31Z")

</div>

try {  
const tx: any = new Transaction();  
const coins = await client.getCoins({  
owner: address,  
coinType: ‘0x2::sui::SUI’,  
});  
const […mergeCoins] = coins.data;  
if (mergeCoins?.length) {  
tx.moveCall({  
target: `0x2::pay::split_and_transfer`,  
type: ‘0x2::sui::SUI’,  
arguments: [  
tx.object(mergeCoins[0]?.coinObjectId),  
tx.pure(+values?.amount \* 1000000000),  
tx.pure(values?.recipentAddress),  
],  
});  
tx.setSender(address);  
tx.setGasBudget(10\_000\_000);  
tx.setGasOwner(address);

```
    const { transactionBlockBytes, signature }: any = await signTransaction({
      transactionBlock: tx,
      chain: SUI_ENVIRONMENT,
    });

    getSignature(
      transactionBlockBytes,
      walletDeatils,
      'pay',
      'split_and_transfer',
      tabStatus,
      setTabStatus,
      setTransactions,
      signature,
    );
    setValue({ recipentAddress: '', amount: '' });
    setShowModal(false);
  }
} catch (e: any) {
  toast.error(e.message);
}

```

---

<div class="post-metadata">

**Author:** ![Nikos-T](https://avatars.discourse-cdn.com/v4/letter/n/54ee81/32.png) [@Nikos-T](https://forums.sui.io/u/Nikos-T)\
**Post date:** [July 2, 2024, 9:07am UTC](https://forums.sui.io/t/signing-with-multisig/45765/4 "2024-07-02T09:07:59Z")

</div>

1. I assume the `address` you use is the multisig address, correct?
2. If `signTransaction()` uses a wallet to sign, I suppose it signs it with a simple address, not a multisig. If so, you need to do use `MultisigPublicKey.combinePartialSignatures()` as [here](https://sdk.mystenlabs.com/typescript/cryptography/multisig#combining-signatures-with-a-multisigpublickey)
