For the complete documentation index, see llms.txt. This page is also available as Markdown.

stx_transferSip9Nft

Request a transfer of a SIP-009 non-fungible token to a specified recipient.

Method name

stx_transferSip9Nft

Leather builds a call to the collection contract's transfer function and attaches its own post-condition: the sender sends the token identified by assetId. The request's postConditions and postConditionMode are not applied.

Parameters

Parameter
Description
Required
Type

recipient

Stacks c32-encoded address of the recipient

✅

string

asset

Fully qualified token identifier, as <contract address>.<contract name>::<token name>

✅

string

assetId

Token ID as a hex-encoded, serialized Clarity value

✅

string

address

Stacks address to send from. Defaults to the active account

❌

string

network

Network identifier

❌

string

fee

Transaction fee in microSTX

❌

number | string

nonce

Transaction nonce

❌

number | string

sponsored

Build a sponsored transaction

❌

boolean

Example request

import { serializeCV, uintCV } from "@stacks/transactions";

try {
  // Replace with your collection's contract and token name
  const response = await window.LeatherProvider.request("stx_transferSip9Nft", {
    recipient: "SP3TB3AJ0XMZ9S6CGY2CQ6R06H1Z6DJQ1SH15ZP2H",
    asset: "SP3FBR2AGK5X3Y5D0X6MYB6Z3R9Y3WNRJY9ZTV8PV.my-nft::my-nft",
    assetId: serializeCV(uintCV(12)), // token u12
  });

  console.log("Response:", response);
} catch (error) {
  console.log("Request error:", error);
}

Example Response

When the active account is a multisig policy, the transaction is proposed to the co-signers rather than broadcast. The result then carries status: "proposed" and a proposalId, and txid stays empty until the co-signers complete and broadcast it.

Was this helpful?