> For the complete documentation index, see [llms.txt](https://docs.backpack.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.backpack.app/deeplinks/provider-methods/signandsendtransaction.md).

# SignAndSendTransaction

Once connected to Backpack, an application can ask the user for permission to send transactions on their behalf.

In order to send a transaction, an application must:

1\. Create an unsigned transaction.

2\. Have the transaction be signed and submitted to the network by the user's Backpack wallet.

3\. Optionally await network confirmation using a Solana JSON RPC connection.

{% hint style="info" %}
For more information about the nature of Solana transactions, please review the [`solana-web3.js` docs](https://solana-labs.github.io/solana-web3.js/), as well as the [Solana Cookbook](https://solanacookbook.com/core-concepts/transactions.html#transactions).
{% endhint %}

## Base URL

```
https://backpack.app/ul/v1/signAndSendTransaction  
```

## Query String Parameters

* `dapp_encryption_public_key` **(required)**: The original encryption public key used from the app for an existing [Connect](/deeplinks/provider-methods/connect.md) session.
* `nonce` **(required)**: A nonce used for encrypting the request, encoded in base58.
* `redirect_link` **(required)**: The URI where Backpack should redirect the user upon completion. Please review [Specifying Redirects](/deeplinks/specifying-redirects.md) for more details. URL-encoded.
* `payload` **(required)**: An encrypted JSON string with the following fields:

```
{
  "transaction": "...", // serialized transaction, base58-encoded
  "sendOptions": "..." // an optional Solana web3.js sendOptions object
  "session": "...", // token received from the connect method
}
```

* `transaction` **(required)**: The [transaction](https://solana-labs.github.io/solana-web3.js/classes/Transaction.html) Backpack will sign and submit is serialized and encoded in base58.
* `sendOptions` (optional): An optional object that specifies options for how Backpack should submit the transaction. This object is [defined in Solana web3.js](https://solana-labs.github.io/solana-web3.js/modules.html#SendOptions).
* `session` **(required)**: The session token received from the [Connect](/deeplinks/provider-methods/connect.md) method. Please see [Handling Sessions](/deeplinks/handling-sessions.md) for more details.

## Returns

### Approve

* `nonce`: A nonce used for encrypting the response, encoded in base58.
* `data`: An encrypted JSON string. Refer to [Encryption](/deeplinks/encryption.md) to learn how apps can decrypt `data` using a shared secret. Encrypted bytes are encoded in base58.

```
// content of decrypted `data`-parameter
{  
    "signature": "..." // transaction-signature
}
```

* `signature`: The first signature in the transaction can be used as its [transaction id](https://docs.solana.com/terminology#transaction-id).

### Reject

An `errorCode` and `errorMessage` as query parameters. Please refer to [Errors](/deeplinks/limitations.md#errors) for a full list of possible error codes.

```
{          
    "errorCode": "...",          
    "errorMessage": "..."          
}  
```
