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

# Transfer funds

Propose an intent to transfer funds from a wallet to a destination address.

<Info>
  Intents expire 72 hours after creation by default. Signers must
  [authorize](/transaction-management/intents/sign-intents) them within this window.
</Info>

<Tabs>
  <Tab title="REST API">
    ```bash theme={"system"}
    curl -X POST https://api.privy.io/v1/intents/wallets/<wallet_id>/transfer \
      -u "<your-privy-app-id>:<your-privy-app-secret>" \
      -H "privy-app-id: <your-privy-app-id>" \
      -H "Content-Type: application/json" \
      -d '{
        "source": {
          "asset": "usdc",
          "amount": "10.0",
          "chain": "tempo"
        },
        "destination": {
          "address": "0xB00F0759DbeeF5E543Cc3E3B07A6442F5f3928a2"
        }
      }'
    ```
  </Tab>

  <Tab title="Node SDK">
    ```typescript {skip-check} theme={"system"}
    import {PrivyClient, type IntentTransferParams} from '@privy-io/node';

    const client = new PrivyClient({
      appId: 'your-app-id',
      appSecret: 'your-app-secret'
    });

    const transfer: IntentTransferParams = {
      source: {
        asset: 'usdc',
        amount: '10.0',
        chain: 'tempo'
      },
      destination: {
        address: '0xB00F0759DbeeF5E543Cc3E3B07A6442F5f3928a2'
      }
    };

    const intent = await client.intents().transfer('insert-wallet-id', transfer);

    console.log(intent.intent_id, intent.status, intent.authorization_details);
    ```
  </Tab>

  <Tab title="Ruby SDK">
    ```ruby theme={"system"}
    require "privy"

    client = Privy::PrivyClient.new(
      app_id: "your-app-id",
      app_secret: "your-app-secret"
    )

    intent = client.intents.transfer(
      "wallet-id",
      source: {
        asset: "usdc",
        amount: "10.0",
        chain: "tempo"
      },
      destination: {
        address: "0xB00F0759DbeeF5E543Cc3E3B07A6442F5f3928a2"
      }
    )

    puts(intent.intent_id, intent.status, intent.authorization_details)
    ```
  </Tab>

  <Tab title="Java SDK">
    ```java theme={"system"}
    import io.privy.api.PrivyClient;
    import io.privy.api.models.components.*;
    import io.privy.api.models.operations.IntentTransferResponse;

    PrivyClient client = PrivyClient.builder()
        .appId("your-privy-app-id")
        .appSecret("your-app-secret")
        .build();

    IntentTransferResponse intent = client.intents().transfer(
        "insert-wallet-id",
        TransferRequestBody.builder()
            .source(TokenTransferSource.of(NamedTokenTransferSource.builder()
                .asset("usdc")
                .amount("10.0")
                .chain("tempo")
                .build()))
            .destination(TokenTransferDestination.builder()
                .address("0xB00F0759DbeeF5E543Cc3E3B07A6442F5f3928a2")
                .build())
            .build(),
        null);
    ```
  </Tab>
</Tabs>

From the response, note the returned `intent_id`. Use this ID to [sign the intent](/transaction-management/intents/sign-intents), check approval progress, and retrieve execution results.

View the [API reference](/api-reference/intents/transfer) for submitting a transfer intent.

## Next steps

<CardGroup cols={2}>
  <Card title="Sign intents" icon="signature" href="/transaction-management/intents/sign-intents">
    Add authorization signatures to execute a proposed intent.
  </Card>

  <Card title="Intent status" icon="arrows-spin" href="/transaction-management/intents/lifecycle">
    Track an intent from proposal to execution.
  </Card>
</CardGroup>
