> For the complete documentation index, see [llms.txt](https://multisig-doc.hive-keychain.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://multisig-doc.hive-keychain.com/websocket-flow/2-user-a-requests-a-transaction.md).

# 2 - User A requests a transaction

Once the user has successfully subscribed to the WebSocket, they can initiate a multisig transaction.&#x20;

#### Create the operation

```typescript
const op: Hive.TransferOperation = [
      'transfer',
      {
        from: 'joe',
        to: 'jane',
        amount: 1,
        memo: 'payment',
      },
    ];
```

#### Create a transaction by encapsulating with hiveTx

```typescript
const _hiveTx = new hiveTx.Transaction();
const transaction = _hiveTx.create([op], getSeconds(expiration))
```

#### Encode the transaction

{% hint style="info" %}
[ More details on encoding the transaction here.](/utils/encode-transaction.md)
{% endhint %}

```typescript
const txEncode: IEncodeTransaction = {
          transaction: transaction,
          method: 'posting',
          expirationDate: expiration,
          initiator: 'user-a',
        };
        
const multisig = HiveMultisig.getInstance(window: Window,options?:MultisigOptions); 
const encodedTx = await multisig.utils.encodeTransaction(txEncode)
```

#### Request for signatures

```typescript
await multisig.wss.requestSignatures(encodedTx:RequestSignatureMessage);
```

The `multisig.wss.requestSignatures()` function informs the backend to distribute the encoded messages to the potential signers.

### RequestSignatureMessage object

This object is obtained by [encoding the transaction](/utils/encode-transaction.md).

| Property         | Description                                                                 | Type                                 |
| ---------------- | --------------------------------------------------------------------------- | ------------------------------------ |
| signatureRequest | The object that contains the encrypted transaction that needs to be signed. | ISignatureRequest object             |
| initialSigner    | Details about the initial signer or initiator.                              | SignatureRequestInitialSigner object |
