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

# Send SOL or Tokens

> Build, sign, sponsor, and relay SOL or SPL token transfers.

## Send SOL

Omit `token` and express `amount` in lamports:

```typescript theme={null}
const result = await gasStation.send({
  sourceSigner: signer,
  toAddress: 'RECIPIENT_ADDRESS',
  amount: 1_000_000,
  commitment: 'finalized',
})

console.log(result.Signature)
```

## Send an SPL token

Set `token` to the mint address and express `amount` in the token's smallest unit:

```typescript theme={null}
const result = await gasStation.send({
  sourceSigner: signer,
  toAddress: 'RECIPIENT_ADDRESS',
  token: 'MINT_ADDRESS',
  amount: 1_000_000,
})
```

The SDK derives the source and destination ATAs and adds an idempotent ATA creation instruction for the recipient.

## Relay a pre-built transaction

If your application builds and signs the full transaction, pass its base64 payload:

```typescript theme={null}
const result = await gasStation.send({
  signedTransaction: base64Transaction,
  amount: 0,
})
```

`amount` remains required by the current `SendOptions` type but is not used when `signedTransaction` is provided.

## Batch payloads

`sendBatch()` relays an already serialized batch payload. It does not accept an array of `SendOptions`:

```typescript theme={null}
const result = await gasStation.sendBatch({
  signedTransaction: serializedBatchPayload,
})
```

<Warning>
  Altude does not automatically resubmit an ambiguous relay failure. Retrying a user action automatically can produce duplicate transactions; make retries explicit in your UI.
</Warning>
