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

# Transfer Bitcoin

export const Method = ({children, className = ""}) => {
  return <code className={`spark-method not-prose inline-block px-2 py-1 mt-12 text-sm font-mono font-semibold rounded-md border ${className}`}>
      {children}
    </code>;
};

Send Bitcoin instantly between Spark wallets with zero fees.

<Frame className="chill">
  <img className="block dark:hidden" src="https://mintcdn.com/lightspark/RCkJgy8FQAJRUhsh/images/wallets/transfer-bitcoin-light.png?fit=max&auto=format&n=RCkJgy8FQAJRUhsh&q=85&s=dbdb9ea8267654f3dbeaf308d538b729" alt="Transfer Bitcoin" width="3840" height="2160" data-path="images/wallets/transfer-bitcoin-light.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/lightspark/RCkJgy8FQAJRUhsh/images/wallets/transfer-bitcoin.png?fit=max&auto=format&n=RCkJgy8FQAJRUhsh&q=85&s=d037fa689126ccaf0c80cc13621ad469" alt="Transfer Bitcoin" width="3840" height="2160" data-path="images/wallets/transfer-bitcoin.png" />
</Frame>

***

## Transfer Bitcoin

Send Bitcoin to another Spark wallet using a simple transfer method.

<Method>transfer(params)</Method>

Transfers Bitcoin to another Spark wallet on the Spark network.

```typescript theme={null}
const transferResult = await wallet.transfer({
  receiverSparkAddress: "spark1p...", // Recipient's Spark address
  amountSats: 50000,                  // Amount in satoshis
});

console.log("Transfer successful:", transferResult);
```

<Expandable title="Parameters">
  <ResponseField name="receiverSparkAddress" type="string" required>
    The recipient's Spark address
  </ResponseField>

  <ResponseField name="amountSats" type="number" required>
    The amount in satoshis to transfer
  </ResponseField>
</Expandable>

<Expandable title="Returns">
  <ResponseField name="transfer" type="WalletTransfer" required>
    The completed transfer details including transaction ID and status
  </ResponseField>
</Expandable>

***

## Check Transfer Status

Monitor your transfers and track their status using transfer queries and events.

<Method>getTransfers(limit?, offset?)</Method>

Gets all transfers for the wallet with optional pagination.

<Info>
  `getTransfers()` includes Spark transfers, Lightning sends/receives, and cooperative exits. For token transaction details, use [`queryTokenTransactionsWithFilters()`](/api-reference/wallet/query-token-transactions-with-filters).
</Info>

```typescript theme={null}
// Get recent transfers
const transfers = await wallet.getTransfers(10);
console.log("Recent transfers:", transfers.transfers);

// Check specific transfer status
const recentTransfer = transfers.transfers[0];
console.log("Transfer ID:", recentTransfer.id);
console.log("Transfer status:", recentTransfer.status);
console.log("Amount:", recentTransfer.totalValue, "sats");
```

<Expandable title="Parameters">
  <ResponseField name="limit" type="number" required={false}>
    Maximum number of transfers to return (default: 20)
  </ResponseField>

  <ResponseField name="offset" type="number" required={false}>
    Offset for pagination (default: 0)
  </ResponseField>
</Expandable>

<Expandable title="Returns">
  <ResponseField name="transfers" type="WalletTransfer[]" required>
    Array of transfer objects containing transfer details
  </ResponseField>

  <ResponseField name="offset" type="number" required>
    The offset used for this request
  </ResponseField>
</Expandable>

***

## Real-time Transfer Monitoring

Monitor transfer status in real-time using event listeners.

```typescript theme={null}
// Listen for incoming transfer events
wallet.on("transfer:claimed", (transferId, updatedBalance) => {
  console.log(`Incoming transfer ${transferId} claimed! New balance: ${updatedBalance} sats`);
});

// Note: There are no events for outgoing transfers.
// The transfer() method returns immediately when the transfer completes.
```

<Warning>
  The `transfer:claimed` event only fires for **incoming** transfers. For outgoing transfers, the `transfer()` method returns a `WalletTransfer` object when complete.
</Warning>
