> ## 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.

# Sign a scheduled transaction

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>
