> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dynamic.xyz/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# signTransaction (Sui)

# signTransaction

Signs a Sui transaction without executing it. This is useful when you need to collect signatures before execution, or when working with sponsored transactions.

## Usage

```javascript theme={"system"}
import { signTransaction, isSuiWalletAccount, getSuiClient } from "@dynamic-labs-sdk/sui";
import { getPrimaryWalletAccount } from "@dynamic-labs-sdk/client";
import { Transaction } from "@mysten/sui/transactions";

const walletAccount = getPrimaryWalletAccount();

if (walletAccount && isSuiWalletAccount(walletAccount)) {
  const suiClient = await getSuiClient({ walletAccount });

  // Build a transaction
  const tx = new Transaction();
  tx.transferObjects(
    [tx.object("0x...")],
    tx.pure.address(recipientAddress)
  );

  // Sign the transaction
  const result = await signTransaction({
    transaction: tx,
    walletAccount,
  });

  console.log("Signature:", result.signature);
  console.log("Transaction bytes:", result.bytes);
}
```

## Parameters

| Parameter       | Type                       | Description                                                             |
| --------------- | -------------------------- | ----------------------------------------------------------------------- |
| `transaction`   | `Transaction`              | The Sui transaction to sign (from `@mysten/sui/transactions`)           |
| `walletAccount` | `SuiWalletAccount`         | The wallet account to sign the transaction with                         |
| `client`        | `DynamicClient` (optional) | The Dynamic client instance. Only required when using multiple clients. |

## Returns

`Promise<SuiSignTransactionResult>` - A promise that resolves to an object containing:

* `signature` - The transaction signature
* `bytes` - The signed transaction bytes

## Errors

| Error                 | Description                                                   |
| --------------------- | ------------------------------------------------------------- |
| `NotSuiProviderError` | Thrown if the wallet account's provider is not a Sui provider |

## Related functions

* [signAndExecuteTransaction](/javascript/reference/sui/sign-and-execute-transaction) - Sign and execute a transaction in one step
* [getSuiClient](/javascript/reference/sui/get-sui-client) - Get the Sui client from a wallet account
