> ## Documentation Index
> Fetch the complete documentation index at: https://docs.phantom.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Send any SPL token

> Send any SPL token by providing the mint address and decimals using the Phantom Connect SDK.

Send any SPL token by providing the token's mint address and decimals.

<Tabs>
  <Tab title="React">
    ```tsx theme={null}
    import { useSolana } from "@phantom/react-sdk";
    import { Connection, PublicKey, VersionedTransaction, TransactionMessage } from "@solana/web3.js";
    import { getAssociatedTokenAddress, createAssociatedTokenAccountInstruction, createTransferInstruction, getAccount } from "@solana/spl-token";

    function SendToken() {
      const { solana } = useSolana();

      const send = async (
        to: string,
        amount: number,
        mintAddress: string,
        decimals: number
      ) => {
        const connection = new Connection("https://api.mainnet-beta.solana.com");
        const from = new PublicKey(await solana.getPublicKey());
        const recipient = new PublicKey(to);
        const mint = new PublicKey(mintAddress);

        const fromATA = await getAssociatedTokenAddress(mint, from);
        const toATA = await getAssociatedTokenAddress(mint, recipient);

        const instructions = [];

        // Create recipient's token account if needed
        try {
          await getAccount(connection, toATA);
        } catch {
          instructions.push(
            createAssociatedTokenAccountInstruction(from, toATA, recipient, mint)
          );
        }

        instructions.push(
          createTransferInstruction(fromATA, toATA, from, amount * 10 ** decimals)
        );

        const { blockhash } = await connection.getLatestBlockhash();
        const transaction = new VersionedTransaction(
          new TransactionMessage({
            payerKey: from,
            recentBlockhash: blockhash,
            instructions,
          }).compileToV0Message()
        );

        const { signature } = await solana.signAndSendTransaction(transaction);
        return signature;
      };

      return (
        <button onClick={() => send(
          "RECIPIENT_ADDRESS",
          100,
          "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", // BONK
          5
        )}>
          Send 100 BONK
        </button>
      );
    }
    ```
  </Tab>

  <Tab title="Browser SDK">
    ```typescript theme={null}
    import { BrowserSDK, AddressType } from "@phantom/browser-sdk";
    import { Connection, PublicKey, VersionedTransaction, TransactionMessage } from "@solana/web3.js";
    import { getAssociatedTokenAddress, createAssociatedTokenAccountInstruction, createTransferInstruction, getAccount } from "@solana/spl-token";

    const sdk = new BrowserSDK({
      providers: ["google", "apple", "injected"],
      appId: "your-app-id",
      addressTypes: [AddressType.solana],
    });

    async function sendToken(
      to: string,
      amount: number,
      mintAddress: string,
      decimals: number
    ) {
      const connection = new Connection("https://api.mainnet-beta.solana.com");
      const from = new PublicKey(await sdk.solana.getPublicKey());
      const recipient = new PublicKey(to);
      const mint = new PublicKey(mintAddress);

      const fromATA = await getAssociatedTokenAddress(mint, from);
      const toATA = await getAssociatedTokenAddress(mint, recipient);

      const instructions = [];

      try {
        await getAccount(connection, toATA);
      } catch {
        instructions.push(
          createAssociatedTokenAccountInstruction(from, toATA, recipient, mint)
        );
      }

      instructions.push(
        createTransferInstruction(fromATA, toATA, from, amount * 10 ** decimals)
      );

      const { blockhash } = await connection.getLatestBlockhash();
      const transaction = new VersionedTransaction(
        new TransactionMessage({
          payerKey: from,
          recentBlockhash: blockhash,
          instructions,
        }).compileToV0Message()
      );

      const { signature } = await sdk.solana.signAndSendTransaction(transaction);
      return signature;
    }
    ```
  </Tab>

  <Tab title="React Native">
    ```tsx theme={null}
    import { useSolana } from "@phantom/react-native-sdk";
    import { Connection, PublicKey, VersionedTransaction, TransactionMessage } from "@solana/web3.js";
    import { getAssociatedTokenAddress, createAssociatedTokenAccountInstruction, createTransferInstruction, getAccount } from "@solana/spl-token";
    import { View, Button, Alert, StyleSheet } from "react-native";

    function SendToken() {
      const { solana } = useSolana();

      const send = async (
        to: string,
        amount: number,
        mintAddress: string,
        decimals: number
      ) => {
        try {
          const connection = new Connection("https://api.mainnet-beta.solana.com");
          const from = new PublicKey(await solana.getPublicKey());
          const recipient = new PublicKey(to);
          const mint = new PublicKey(mintAddress);

          const fromATA = await getAssociatedTokenAddress(mint, from);
          const toATA = await getAssociatedTokenAddress(mint, recipient);

          const instructions = [];

          try {
            await getAccount(connection, toATA);
          } catch {
            instructions.push(
              createAssociatedTokenAccountInstruction(from, toATA, recipient, mint)
            );
          }

          instructions.push(
            createTransferInstruction(fromATA, toATA, from, amount * 10 ** decimals)
          );

          const { blockhash } = await connection.getLatestBlockhash();
          const transaction = new VersionedTransaction(
            new TransactionMessage({
              payerKey: from,
              recentBlockhash: blockhash,
              instructions,
            }).compileToV0Message()
          );

          const { signature } = await solana.signAndSendTransaction(transaction);
          Alert.alert("Success", `Transaction sent: ${signature}`);
          return signature;
        } catch (error) {
          Alert.alert("Error", error instanceof Error ? error.message : "Transaction failed");
          throw error;
        }
      };

      return (
        <View style={styles.container}>
          <Button
            title="Send 100 BONK"
            onPress={() => send(
              "RECIPIENT_ADDRESS",
              100,
              "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", // BONK
              5
            )}
          />
        </View>
      );
    }

    const styles = StyleSheet.create({
      container: {
        padding: 20,
      },
    });
    ```
  </Tab>
</Tabs>

## Popular tokens

| Token | Mint Address                                   | Decimals |
| ----- | ---------------------------------------------- | -------- |
| USDC  | `EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v` | 6        |
| USDT  | `Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB` | 6        |
| BONK  | `DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263` | 5        |
| JUP   | `JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN`  | 6        |
| WIF   | `EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm` | 6        |
