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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.solflare.com/solflare/technical/deeplinks/provider-methods/signandsendtransaction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
