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

# wallet.transfer

> Sends a transfer the API prepared for this wallet as the current owner. The customer never pays gas.

```ts theme={null}
transfer(transferId: string): Promise<WalletSubmission>
```

Sends a transfer the API prepared for this wallet as the current owner. The API does not yet create transfers for the wallet to send, so until it does `transfer()` rejects with `submission.not_executable`. Once it does, create the transfer for wallet broadcast, then pass its id. The wallet fetches the prepared operation, sends it on the customer's behalf with the cost covered by Endstate, and resolves once the network has included it. Read settlement from the transfer resource; the wallet holds no state about it.

The page names only the transfer id. The destination was decided when the transfer was created, so nothing here can redirect it.

Rejects with `wallet.sponsorship_unavailable` when the operation cannot be covered right now (nothing was sent), with `submission.not_executable` when the transfer was already sent or has expired, with `wallet.submit_failed` when the wallet could not send, and with `wallet.destroyed` if the wallet has been destroyed. API errors pass through with their own codes.

## Returns

```ts theme={null}
interface WalletSubmission {
  transactionHash: string; // the network transaction that carried it
  address: string;         // the wallet address that sent it
  resourceId: string;      // the transfer id
}
```

## Example

```ts theme={null}
// Once the API creates transfers for wallet broadcast:
await wallet.ready();
const recipientAddress = "0x..."; // the new owner, chosen by your application
const transfer = await client.session.transfers.create({ to: recipientAddress });
const { transactionHash } = await wallet.transfer(transfer.id);
```
