Who this is for: find a person and swap directly. You send them onchain sats, they send you Lightning sats (a "swap in"), or the reverse. No Boltz, no custodial exchange, no channel gymnastics. P2P sats swap.
This post will guide you throught two ways to do it: with a stranger using RoboSats (a pseudonymous, non-custodial P2P marketplace) or with known friend (trust-based, zero platform requirements).
RoboSats P2P swap (Swap In = refill your wallet)RoboSats P2P swap (Swap In = refill your wallet)
RoboSats always settles in Lightning. To receive Lightning sats in exchange for your onchain sats, you create a BUY order with a swap destination of Lightning. This is the "Swap In" direction that refills your SPEND wallet.
What you'll needWhat you'll need
- RoboSats itself: via Tor or the Android app. No sign-up; you trade as a generated avatar.
- A Lightning wallet with a few sats to lock a bond (e.g. your SPEND wallet: it only needs to pay the bond, which is refunded).
- Your onchain cache wallet with the sats you want to move in.
Step 1: Pick a swap (two equivalent doors)Step 1: Pick a swap (two equivalent doors)
- Take an existing offer: tap the Swap button at the top of the offers page and pick a "swap in" offer.
- Or create your own order: Create Order → currency = BTC → set your Swap Destination to Lightning.[2] Set the amount (e.g. 300,000 sats) and keep the premium near 0% (a tiny positive premium, ~0.1-0.5%, makes your order more attractive to takers).
Step 2: Lock your bondStep 2: Lock your bond
RoboSats shows you a hold invoice for the bond (~1-5% of the trade, capped). Pay it from your Lightning wallet.[1] The sats are frozen, not taken: they're returned when the trade completes (and only forfeited if you abandon the trade). Your SPEND wallet needs just enough to cover this.
Step 3: Do the trade in the chatroomStep 3: Do the trade in the chatroom
The chatroom opens when a taker matches your order. For a Swap In:
- The counterparty gives you an onchain address.
- Send the exact order amount onchain from your cache wallet. The amount must match to the sat: you cover the mining fee.
- RoboSats waits for the onchain payment to confirm.
Step 4: Receive your sats over LightningStep 4: Receive your sats over Lightning
Once confirmed, the counterparty pays your Lightning invoice (RoboSats uses hold invoices on both legs to keep the trade non-custodial)[3] and your SPEND wallet is refilled. The bond is unlocked.
Done: onchain sats in, Lightning sats out, no swap service in the middle.
Costs & notesCosts & notes
- Taker fee ~0.175% (maker ~0.2%), plus mining fees on the onchain leg you send.
- No KYC. Trades in as little as a few minutes if both sides are online.
- Privacy note: when you receive over Lightning, your invoice (and therefore your node ID) is shared with the other side. For a small refill that's usually a non-issue; for large amounts, prefer a fresh, single-use invoice and be aware of the link between your onchain and LN activity.
- Keep the premium at 0% unless you want to be matched faster; the swap market clears on small premiums.
The friend method (trust-based P2P)The friend method (trust-based P2P)
The zero-fee, zero-platform version: swap with someone you actually know.
- You send onchain, they send you LN: you pay their onchain address from your cache wallet; they pay your Lightning invoice (or a Lightning Address / BOLT12) from their wallet. Your SPEND wallet is refilled.
- Or the reverse when they need the same favor.
Costs & notesCosts & notes
- Only real costs: onchain mining fee (yours) + normal LN routing fees.
- Works best inside a local bitcoin circle: a bar, a meetup, family, colleagues. One onchain move plus a LN payment, and liquidity flows both ways.
- Trust: only do this with people you actually trust, and keep amounts small relative to that trust. There's no escrow here: if a stranger "friend" doesn't pay you, your sats are gone.
- Never share seeds or private keys. The whole point is that both wallets stay self-custodial.
Which method when? (all four, one glance)Which method when? (all four, one glance)
- Loop: you run LND. Most automatable (AutoLoop), best for a desktop node that feeds your mobile wallets. Needs setup.
- Electrum: a desktop cache wallet with one channel + built-in swaps. No node required, but Electrum must be running during swaps.
- Phoenix / phoenixd: splicing makes swaps a first-class feature. Mobile (Phoenix) or always-on server (phoenixd). Simplest UX; 0.4% outbound fee; single LSP (ACINQ).
- RoboSats / friend: no node, no swap service, just a counterparty. RoboSats is pseudonymous with ~0.175% fees; a friend is free but trust-based.
The whole point: don't depend on one swap service. Keep a cache/buffer of onchain sats, know two or three of these refill paths, and an outage at any single service never stops you from spending.
Note: This guide may contain inaccurate information as technology evolve and tooling tune up. Feel free to report any inaccurancy in the comments below.
A hold invoice is a Lightning invoice that RoboSats freezes instead of paying immediately: the sats are locked but not taken, and are refunded to the payer when the trade completes. See RoboSats docs: swaps. ↩
RoboSats always settles trades in Lightning. A "swap in" means you receive Lightning sats (refilling your SPEND wallet); a "swap out" is the reverse. See RoboSats docs: swaps. ↩
Both legs of the trade use hold invoices, so neither side can run off with funds mid-trade: RoboSats is non-custodial. See RoboSats docs: swaps. ↩
Why pay routing fees when you can do swaps with your direct peers? Now is a good reason to revisit peerswap.
yes peerswap is another option, but seems like disabled for now #1539582
Read Managing LN wallets liquidity first if you haven't.