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

# SignAndSendTransaction

Once connected to Solflare, an application can ask the user for permission to send transactions on their behalf.         &#x20;

In order to send a transaction, an application must:         &#x20;

1\. Create an unsigned transaction.

2\. Have the transaction be signed and submitted to the network by the user's Solflare wallet.    &#x20;

3\. Optionally await network confirmation using a Solana JSON RPC connection.         &#x20;

{% 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).    &#x20;
{% endhint %}

### **Base URL**

```
https://solflare.com/ul/v1/signAndSendTransaction  
```

### **Query String Parameters**

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

```
{
  "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) Solflare will sign and submit is serialized and encoded in base58.
* `sendOptions` (optional): An optional object that specifies options for how Solflare 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](https://docs.solflare.com/solflare/technical/deeplinks/provider-methods/connect) method. Please see [Handling Sessions](https://docs.solflare.com/solflare/technical/deeplinks/handling-sessions) for more details.         &#x20;

### **Returns**         &#x20;

#### **Approve**&#x20;

* `nonce`: A nonce used for encrypting the response, encoded in base58.         &#x20;
* `data`: An encrypted JSON string. Refer to [Encryption](https://docs.solflare.com/solflare/technical/deeplinks/encryption) 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).         &#x20;

#### **Reject**&#x20;

An `errorCode` and `errorMessage` as query parameters.          Please refer to [Errors](https://docs.solflare.com/solflare/technical/deeplinks/limitations#errors) for a full list of possible error codes.         &#x20;

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

### **Example**

Please refer to the [signAndSendTransaction](https://github.com/solflare-wallet/deep-link-sample-app/blob/master/App.tsx#L213-L236) method implemented in our demo application.
