# Create a Transaction

To create a transaction for the multisig to act upon first derive a PDA for the transaction. The transaction PDA is used to reference the account created, and will store some basic information about the transaction.

In addition to the PDA, creating a transaction also requires and authority index.

A complete example to create a new Transaction with the expected `transactionIndex`

<pre><code><strong>// fetch the multisig
</strong><strong>const multisigAccount = await squadsProgram.account.ms.fetch(multisig);
</strong><strong>
</strong><strong>// get the next expected transactionIndex
</strong><strong>const transactionIndex = new anchor.BN(multisigAccount.transactionIndex + 1);
</strong><strong>
</strong><strong>// get the transaction PDA
</strong><strong>const transaction = await anchor.web3.PublicKey.findProgramAddress(
</strong>    anchor.utils.bytes.utf8.encode("squad"),
    multisig.toBuffer(),
    transactionIndex.toBuffer("le", 4), // or .toArrayLike(Buffer, "le", 4) 
    anchor.utils.bytes.utf8.encode("transaction")
<strong>);
</strong><strong>
</strong><strong>// get the public key of the payer/creator
</strong><strong>const creator = wallet.publicKey;
</strong><strong>
</strong><strong>await program.methods.createTransaction(1) //using authorityIndex of 1
</strong>   .accounts({
       multisig,    // the multisig PDA
       transaction, // the transaction PDA
       creator // the creator/payer of the transaction acccount
    })
    .rpc();
</code></pre>

After being created, the transaction will remain in a `Draft` status, until it is activated by the member key that created it.

Refer to the [Transaction PDA section](https://docs.squads.so/main/squads-legacy/development/pdas/transaction) for more information about deriving the transaction PDA and [the Authority section](https://docs.squads.so/main/squads-legacy/development/authorities) for information about how authorities function within Squads.
