# How to transfer Gram, Jettons, and NFTs using WalletKit on the iOS platform (https://docs-rbcpr9qys-ton-core-docs.vercel.app/llms/applications/walletkit/ios/transactions/content.md)



<Callout type="tip">
  All methods require an existing wallet instance. [Create or retrieve](https://docs-rbcpr9qys-ton-core-docs.vercel.app/llms/applications/walletkit/ios/wallets/content.md) a wallet before accessing data.
</Callout>

Create transactions to send Gram, Jettons, and NFTs, or generate previews for users.

## Creating a transaction [#creating-a-transaction]

Before sending any transaction to the blockchain, initialize it for the appropriate asset: Gram, Jetton, or NFT.

### Gram [#gram]

```swift
// Transaction for 1 Gram
let amountFormatter = TONTokenAmountFormatter()

// Provide the user's input here
guard let amount = amountFormatter.amount(from: "1") else {
    return
}
let message = TONTransferMessage(
    // GRAM wallet address
    toAddress: address,
    amount: amount,
)
let transaction = try await wallet.transferTONTransaction(message: message)
```

### Jettons [#jettons]

```swift
// Transaction for 1 Jetton of some kind (e.g., USDT)
let amountFormatter = TONTokenAmountFormatter()
amountFormatter.nanoUnitDecimalsNumber = 6

// Provide the user's input here
guard let amount = amountFormatter.amount(from: "1") else {
    return
}
let parameters = TONJettonTransferParams(
    // GRAM wallet address
    toAddress: address,
    // Address of a Jetton minter contract
    jettonAddress: jettonAddress,
    amount: amount,
)
let transaction = try await wallet.transferJettonTransaction(parameters: parameters)
```

### NFTs [#nfts]

```swift
let parameters = TONNFTTransferParamsHuman(
    // GRAM wallet address
    toAddress: address,
    // Address of an NFT item contract
    nftAddress: nft.address,
)
let transaction = try await wallet.transferNFTTransaction(parameters: parameters)
```

## Transaction Preview [#transaction-preview]

Once a transaction object is created, present a preview to the user before sending it.

```swift
let preview = try await wallet.preview(transaction: transaction)
```

## Sending a transaction [#sending-a-transaction]

```swift
try await wallet.send(transaction: transaction)
```

## Next steps [#next-steps]

<Columns cols="2">
  <Card title="Receiving information" href="./data">
    Get wallet information, Jettons, and NFTs
  </Card>

  <Card title="Manage wallets" href="./wallets">
    Create and manage GRAM wallets
  </Card>
</Columns>
