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
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?