> For the complete documentation index, see [llms.txt](https://docs.ternoa.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ternoa.network/build-1/javascript/nft-features-and-pallets/basics-nft-and-collections/nft/transfer-an-nft.md).

# Transfer an NFT

Ternoa provides you with many NFT features. Not only creating an NFT can be done in just a few lines of code but we also cover many NFT basic use cases: Ternoa allows you to easily create functions to delegate, transfer, burn an NFT, or even set the NFT royalty without using any smart contracts.

### Prerequisites

Before getting started, make sure you have the following ready:

1. [Create a Ternoa](/getting-started/wallets/ternoa-wallet.md) account with [Alphanet CAPS](broken://pages/ej9gceaLIhCN2PgUBh42)
2. Install and set up your editor of choice (we will use Visual Studio Code \[VSC] in this tutorial)
3. Install [NodeJS v.14+](https://nodejs.org/en/download/) & NPM
4. [Install & initialize Ternoa-JS](/build-1/javascript/ternoa-js-library-utilities/installation-and-initialization.md)

### How to transfer an NFT using Ternoa-JS

The `transferNft` helper transfers an NFT from the Ternoa chain. It returns an object promise containing the `NFTTransferredEvent` provided by the Ternoa blockchain. Use your own account by updating the //TernoaTestAccount with your account seed when retrieving the keyring from the example below. **Replace the NFT\_ID variable** with the NFT ID you want to transfer.

```typescript
import { transferNft, getKeyringFromSeed, WaitUntil } from "ternoa-js";

const main = async () => {
	try {
		// The known accounts we want to use
		const keyring = await getKeyringFromSeed("//TernoaTestAccount");
		const TO_ADDRESS = "RECIPIENT_ADDRESS";

		// The NFT id to transfer
		const NFT_ID = NFT_ID;

		const nftData = await transferNft(
			NFT_ID,
			TO_ADDRESS,
			keyring,
			WaitUntil.BlockInclusion
		);
		console.log(`NFT ${nftData.nftId} transferred`);
	} catch (e) {
		console.error(e);
	}
};
```

#### The expected params

```markdown
`id`: The ID of the NFT to transfer.
`recipient`: The recipient's address.
`keyring`: The provided keyring (containing the address) will be used to sign the transaction and pay the execution fee.
`waitUntil`: WaitUntil defines at which point we want to get the results of the transaction execution: BlockInclusion or BlockFinalization.
```

#### Response

The response provided from the blockchain event includes all the information below according to the parameters provided when transferring the NFT.

```markdown
`nftId`: ID of the transferred NFT.
`sender`: The sender's address.
`recipient`: The recipient's address.
```

### Support

If you face any trouble, feel free to reach out to our community engineers in our [Discord](https://discord.gg/fUmBkPpnRu).
