> ## 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.

# batchTransferTokens

> Send tokens to multiple recipients in one transaction.

Transfers tokens to multiple recipients in a single transaction.

## Method Signature

```typescript theme={null}
async batchTransferTokens(
  receiverOutputs: {
    tokenIdentifier: Bech32mTokenIdentifier;
    tokenAmount: bigint;
    receiverSparkAddress: string;
  }[],
  outputSelectionStrategy: "SMALL_FIRST" | "LARGE_FIRST" = "SMALL_FIRST",
  selectedOutputs?: OutputWithPreviousTransactionData[]
): Promise<string>
```

## Parameters

<ResponseField name="receiverOutputs" type="{ tokenIdentifier: Bech32mTokenIdentifier; tokenAmount: bigint; receiverSparkAddress: string; }[]" required>
  Array of transfer outputs, each containing:

  * `tokenIdentifier`: Bech32m token identifier for this output. Outputs may include multiple token identifiers.
  * `tokenAmount`: Amount of tokens to send
  * `receiverSparkAddress`: Recipient's Spark address
</ResponseField>

<ResponseField name="outputSelectionStrategy" type="&#x22;SMALL_FIRST&#x22; | &#x22;LARGE_FIRST&#x22;">
  Strategy for selecting outputs: `"SMALL_FIRST"` or `"LARGE_FIRST"` (default: `"SMALL_FIRST"`)
</ResponseField>

<ResponseField name="selectedOutputs" type="OutputWithPreviousTransactionData[]">
  Specific outputs to use (overrides selection strategy)
</ResponseField>

## Returns

<ResponseField name="txId" type="string" required>
  The transaction ID of the batch token transfer
</ResponseField>

## Example

```typescript theme={null}
const txId = await wallet.batchTransferTokens([
  {
    tokenIdentifier: "btkn1...",
    tokenAmount: 500n,
    receiverSparkAddress: "spark1abc..."
  },
  {
    tokenIdentifier: "btkn1...",
    tokenAmount: 300n,
    receiverSparkAddress: "spark1def..."
  }
]);
console.log("Batch transfer completed:", txId);
```
