---
title: How to Send SOL
description:
  "The most common action on Solana is sending SOL. Learn how to send SOL on
  Solana."
---

To send SOL, invoke the
[SystemProgram's](https://github.com/solana-program/system) transfer
instruction.

<CodeTabs storage="cookbook" flags="r">

```ts !! title="Kit" file=packages/docs-examples/cookbook/transactions/send-sol/kit.ts#region=transfer

```

```ts !! title="Legacy" file=packages/docs-examples/cookbook/transactions/send-sol/legacy.ts#region=transfer highlight=24-30

```

```rust !! title="Rust" file=packages/docs-examples/cookbook/transactions/send-sol/rust/src/main.rs#region=transfer

```

```py !! title="Python"
#!/usr/bin/env python3
"""
Solana Cookbook - How to Send SOL
"""

import asyncio
from solana.rpc.async_api import AsyncClient
from solders.keypair import Keypair
from solders.system_program import transfer, TransferParams
from solders.transaction import VersionedTransaction
from solders.message import MessageV0
# from solders.address_lookup_table import AddressLookupTableAccount

async def main():
    rpc = AsyncClient("http://localhost:8899")

    sender = Keypair()
    recipient = Keypair()

    LAMPORTS_PER_SOL = 1_000_000_000
    transfer_amount = LAMPORTS_PER_SOL // 100  # 0.01 SOL

    async with rpc:
        # Get latest blockhash
        latest_blockhash = await rpc.get_latest_blockhash()

        # Create transfer instruction
        transfer_instruction = transfer(
            TransferParams(
                from_pubkey=sender.pubkey(),
                to_pubkey=recipient.pubkey(),
                lamports=transfer_amount
            )
        )

        # Create message
        message = MessageV0.try_compile(
            payer=sender.pubkey(),
            instructions=[transfer_instruction],
            address_lookup_table_accounts=[],
            recent_blockhash=latest_blockhash.value.blockhash
        )

        # Create transaction
        transaction = VersionedTransaction(message, [sender])

        print(f"Sender: {sender.pubkey()}")
        print(f"Recipient: {recipient.pubkey()}")
        print(f"Transfer Amount: {transfer_amount / LAMPORTS_PER_SOL} SOL")
        print(f"Transaction created successfully")

if __name__ == "__main__":
    asyncio.run(main())
```

</CodeTabs>
