Send your first SOL transfer
Make your first SOL transfer!
Send your first SOL transfer
The Scenario
Yesterday you cracked open a transaction and studied its anatomy. You saw signatures, instructions, account keys, and blockhashes. Now it’s time to build your own transfer from scratch using the Solana CLI. You already sent a quick transfer yesterday to get a transaction to inspect. Today you’ll do it more deliberately, step by step.
Today, you will send a deliberate SOL transfer on devnet, understanding every step. If you have ever used a payment API like Stripe or PayPal, you know the flow: authenticate, specify a recipient, set an amount, and submit. A Solana transfer follows the same pattern, except there is no middleman. Your transaction goes directly to the network, gets validated by thousands of nodes, and settles in under a second. No webhook callbacks, no pending states, no three-to-five business days.
The Challenge
What You’ll Need
- A terminal (macOS Terminal, Windows WSL, or Linux shell)
- The Solana CLI installed
- Your keypair from a previous day (or a new one)
Steps
- Confirm your CLI is pointed at devnet. Devnet is Solana’s testing network where you can experiment freely with no real money at stake. Run:
solana config set -ud
Then verify your configuration:
solana config get
You should see RPC URL: https://api.devnet.solana.com in the output.
- Check your current balance.
solana balance
If your balance is zero or too low, airdrop some devnet SOL to yourself:
solana airdrop 2
This gives you 2 SOL on devnet to work with. Devnet airdrops are capped at 5 SOL per request. If you get rate-limited, you can also use the Solana Web Faucet as a backup.
- Generate a second keypair to use as your recipient. You need someone to send SOL to. Create a throwaway keypair:
solana-keygen new --outfile ~/recipient-keypair.json --no-bip39-passphrase
Note the public key it outputs. That is your recipient address.
- Send the transfer. Replace `` with the public key from the previous step:
solana transfer 0.5 --allow-unfunded-recipient
The --allow-unfunded-recipient flag is necessary because your new recipient address has never received SOL before and does not yet have an account on-chain. Without this flag, the CLI would reject the transfer as a safety measure.
- Verify the transfer landed. Check your own balance and the recipient’s balance:
solana balance
solana balance
Your balance should be roughly 1.5 SOL (2 minus 0.5, minus a tiny transaction fee). The recipient should show 0.5 SOL.
- Look up your transaction on the explorer. When you ran the transfer command, the CLI printed a transaction signature (a long string of characters). Copy it and open this URL in your browser, replacing `` with your actual signature:
https://explorer.solana.com/tx/?cluster=devnet
Browse the transaction details. You will see the sender, recipient, amount, fee, and the block it was included in.
Run It
Here is the full sequence from start to finish:
solana config set -ud
solana airdrop 2
solana-keygen new --outfile ~/recipient-keypair.json --no-bip39-passphrase
solana transfer 0.5 --allow-unfunded-recipient
solana balance
solana balance
What Just Happened
You just sent value across a decentralized network in about 400 milliseconds. Compare that to a typical Web2 payment: when you call the Stripe API, your request goes to Stripe’s servers, Stripe talks to the card network, the card network talks to the issuing bank, and days later the funds actually move. On Solana, your transfer was a single transaction that the network validated and finalized almost instantly. No intermediary held your funds at any point.
Under the hood, the CLI constructed a transaction containing a transfer instruction, signed it with your private key, and submitted it to a Solana validator via the devnet RPC endpoint. The validator bundled your transaction into a block, and the network’s consensus mechanism confirmed it. The transaction fee you paid (a fraction of a cent, even on mainnet) compensates validators for processing your instruction.
That --allow-unfunded-recipient flag hints at something important about Solana’s architecture: accounts must be explicitly created on-chain and require a small rent deposit. When you send SOL to a new address, the network creates the account for you and the transferred SOL covers the rent. This is different from Ethereum, where any address can receive funds without prior setup. You will dig deeper into Solana’s account model in the coming days.
Resources
- Send and Receive Tokens, Solana CLI Guide
- Install the Solana CLI
- Solana Explorer (Devnet)
- How to Get Devnet SOL: Faucets and Airdrops
Submission
Take a screenshot showing your transfer transaction on the Solana Explorer and share it with the community using the hashtag #100DaysOfSolana.