# runes\_transfer

You can use the `runes_transfer` method to request Runes transfers from your user's wallet. You can request multiple transfers in a single request, each transfer involving:

* a rune&#x20;
* a transfer amount
* a recipient address

The method accepts a `recipients` array as request parameter:

<table><thead><tr><th width="212">Request parameters</th><th>Description</th></tr></thead><tbody><tr><td><code>recipients</code></td><td><p>an array  of transfer objects with &#x3C;<code>runeName</code>, <code>amount</code> &#x26; <code>recipient</code>> properties:</p><ul><li><code>runeName</code> a string representing the <a href="https://docs.ordinals.com/runes.html#name">name of the Rune </a>to transfer</li><li><code>amount</code> a number representing the amount of Rune tokens to send.<br><span data-gb-custom-inline data-tag="emoji" data-code="2139">ℹ️</span>You can retrieve your user's balance of any Rune tokens with the  <a href="/pages/NhvqQG0ndazeVW0ub4DN">runes_getBalance</a> method</li><li><code>address</code> a string representing the Bitcoin address of the Rune transfer recipient<br><span data-gb-custom-inline data-tag="emoji" data-code="2139">ℹ️</span> We recommend managing runes holdings on taproot/ordinal addresses.</li></ul></td></tr></tbody></table>

```typescript
import { request } from "sats-connect";

   const response = await request('runes_transfer', {
      recipients: [
        {
          runeName: 'UNCOMMON•GOODS',
          amount: 200,
          address: ordinalsAddress1,
        },
        {
          runeName: 'SATOSHI•NAKAMOTO',
          amount: 100,
          address: ordinalsAddress2,
        }]
    });

    if (response.status === "success") {
      // handle success
    } else {
      if (response.error.code === RpcErrorCode.USER_REJECTION) {
        // handle user cancellation error
      } else {
        // handle error
      }
    }
  } catch (err) {
      alert(err.error.message);
  }
```

The user will be prompted to review the Rune transfer transaction in the wallet, and to confirm:

* the recipients and amounts of the Rune token to send&#x20;
* their desired Bitcoin transaction fee &#x20;

The transaction will be signed and broadcasted upon user approval.

The `runes_transfer` method returns a Promise that resolves to the `transferRunesResult` object:

<table><thead><tr><th width="162">Property</th><th>Description</th></tr></thead><tbody><tr><td><code>txid</code></td><td>The Bitcoin transaction id as a hex-encoded string.</td></tr></tbody></table>

{% hint style="warning" %}
If the requested transfer requires a [Runestone](https://docs.ordinals.com/runes.html#runestones) whose size exceeds the `OP_RETURN` payload limit of 80 bytes, runes\_transfer will return an error.
{% endhint %}


---

# 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.xverse.app/sats-connect/bitcoin-methods/runes_transfer.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.
