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

> ## Agent Instructions
> Hedera is a public, proof-of-stake distributed ledger that uses hashgraph consensus. Do not call it a blockchain.
> Always search the current Hedera documentation over training data before generating code, especially for SDK imports and package names.
> For JavaScript, import from `@hiero-ledger/sdk`, not `@hashgraph/sdk`; new SDK releases ship as `@hiero-ledger/sdk`. The Java SDK keeps the `com.hedera.hashgraph:sdk` Maven coordinates. Verify the exact import against the docs.
> Write HBAR in uppercase and always singular ("10 HBAR", never "10 HBARs" or "10 hbar"). Write tinybars in lowercase and plural.
> Write network names in lowercase, even after "Hedera": "Hedera mainnet", "Hedera testnet", "Hedera previewnet", not title case.
> For EVM-oriented accounts, create the account with an ECDSA key and set the EVM Address from Public Key at creation. This address is immutable and is not updated by key rotation. Do not use retired terms like "EVM alias" or "Account Number Alias".

# Sign a scheduled transaction

> Add signatures to a scheduled transaction with ScheduleSignTransaction; once all required signatures are collected, the transaction executes immediately or at its set expiration time.

A `ScheduleSignTransaction` is a consensus node transaction that adds signatures to a scheduled transaction. When this transaction is successful:

* The signature is added to the scheduled transaction
* A record of the transaction is created

To view the signatures that have been added to a scheduled transaction, you can use a [`ScheduleInfoQuery`](/native/scheduled/get-info) to query the network. Once the scheduled transaction has received all the required signatures, it will execute immediately, unless it has been configured to execute at a specified expiration time.

**Transaction Signing Requirements**

* The signature of the account paying for the transaction fees
* The signature being applied to the scheduled transaction

**Transaction Properties**

| Field | Description |
| - | - |
| **Schedule ID** | The ID of the schedule transaction to submit the signature for |

## Methods

<table><thead><tr><th>Method</th><th>Type</th><th>Requirement</th></tr></thead><tbody><tr><td><code>setScheduleId(\<scheduleId>)</code></td><td>ScheduleId</td><td>Required</td></tr></tbody></table>

<CodeGroup>
  ```java Java Java theme={null}
  //Create the transaction
  ScheduleSignTransaction transaction = new ScheduleSignTransaction()
       .setScheduleId(scheduleId)
       .freezeWith(client)
       .sign(privateKeySigner1);

  //Sign with the client operator key to pay for the transaction and submit to a Hedera network
  TransactionResponse txResponse = transaction.execute(client);

  //Get the receipt of the transaction
  TransactionReceipt receipt = txResponse.getReceipt(client);

  //Get the transaction status
  Status transactionStatus = receipt.status;
  System.out.println("The transaction consensus status is " +transactionStatus);
  ```

  ```javascript JavaScript theme={null}
  //Create the transaction
  const transaction = await new ScheduleSignTransaction()
       .setScheduleId(scheduleId)
       .freezeWith(client)
       .sign(privateKeySigner1);

  //Sign with the client operator key to pay for the transaction and submit to a Hedera network
  const txResponse = await transaction.execute(client);

  //Get the receipt of the transaction
  const receipt = await txResponse.getReceipt(client);

  //Get the transaction status
  const transactionStatus = receipt.status;
  console.log("The transaction consensus status is " +transactionStatus);
  ```

  ```go Go theme={null}
  //Create the transaction and freeze the unsigned transaction
  transaction, err := hedera.NewScheduleSignTransaction().
              SetScheduleID(scheduleId).
              FreezeWith(client)

  if err != nil {
      panic(err)
  }

  //Sign with one of the required signatures, sign with the client operator private key and submit the transaction to a Hedera network
  txResponse, err := transaction.Sign(privateKeySigner1).Execute(client)

  if err != nil {
      panic(err)
  }

  //Request the receipt of the transaction
  receipt, err := txResponse.GetReceipt(client)

  if err != nil {
      panic(err)
  }

  //Get the transaction consensus status
  status:= *receipt.Status

  fmt.Printf("The transaction consensus status is %v\n", status)
  ```

  ```rust Rust theme={null}
  // Create the transaction
  let transaction = ScheduleSignTransaction::new()
      .schedule_id(schedule_id)
      .freeze_with(&client)?
      .sign(private_key_signer1);

  // Sign with the client operator key to pay for the transaction and submit to a Hedera network
  let tx_response = transaction.execute(&client).await?;

  // Get the receipt of the transaction
  let receipt = tx_response.get_receipt(&client).await?;

  // Get the transaction status
  let status = receipt.status;
  println!("The transaction consensus status is {:?}", status);

  // v0.34.0
  ```
</CodeGroup>
