Many people have been asking how to swap sats between Onchain and LN, there are different ways to do it, and this article will walk through two of my favorite tools for swapping:

πŸ”§ Boltz.exchange

Features
  • NO-KYC
  • No sign-up
  • Non-Custodial
  • Low amount of requirement, min: about 50K sats
Downside
The fee could be pretty high sometimes - payment includes network and Boltz service fees: Boltz fee is usually 0.1% ( from Onchain to LN ) or 0.5% ( from LN to Onchain )
How to Swap from Onchain to LN
  1. Decide how many sats you would like to swap.
  2. Create and paste an LN invoice or LN address to receive the sats.
  3. Download refund file.
  4. Send the sats to the provided BTC address.
  5. You then receive the sats over LN once the Onchain transaction reaches one confirmation.
How to Swap from LN to Onchain
  1. Decide how many sats you would like to swap.
  2. Enter BTC address.
  3. Copy the LN invoice and pay, then check the Onchain transaction and wait till it reach one confirmation.
πŸ€” Review
-Swapping from Onchain to LN is generally smooth, but it happened to me a few times that I needed to refund for different reasons, but all have no problem reclaiming the funds.
Refund Process:
a. wait after the lock time and go to refund page
b. upload the refund file
c. input a Bitcoin address for refund, done.
Again, choose a low-fee time for a refund because the fee would be deducted from your refund sats!
-Swapping from LN to Onchain is quite fast, once the LN invoice is paid, the Onchain transaction is automatically triggered, and I haven't had any problems so far.
The art of using Boltz.exchange
  • Choose low-fee time to do the swaps.
  • Always download the refund file in case something happens.
  • Ideally, using custodial wallets in these swaps:
    • a. without exposing any of the node IDs
    • b. without worrying about any route, whether there is enough inbound liquidity or online or not.
Many people are too paranoid about using custodial or non-custodial wallets, but learning how to make the most of each is the way.

πŸ”§ Robosats

Features
  • NO-KYC
  • No sign-up
  • Tor Only
  • PGP encrypted chats
Downside
It might require users to have more technical skills, such as how to use Tor.
How to Swap from Onchain to LN
  1. Create a robot avatar, save the token ( this is your login )
  2. Click the swap icon on top πŸ”ƒ and Swap in.
  3. Offers generally 0 to 2%; choose the one that fits your need, and ideally, choose an active peer to avoid long waiting times.
  4. Input the sats amount that you want to swap, and pay the first LN invoice ( lock bond ): usually about 2-3% of the swap amount - you will see this bond percentage when choosing the offer, and it will be charged only if you cancel or lose a dispute.
  5. Provide an LN invoice with the actual amount of sats you want to be swapped to.
  6. Enter an encrypted chat and send the BTC to the address provided by the other party.
  7. Wait for the transaction to reach one confirmation and once the other party confirms received, then the actual LN invoice will be paid, and the sats charged for the lock bond will be unlocked back to your LN wallet.
How to Swap from LN to Onchain
  1. Create a robot avatar, save the token ( this is your login )
  2. Click the swap icon on top πŸ”ƒ and swap out.
  3. Offers generally 0 to -2%, choose the one that fits your need, and ideally, choose an active peer to avoid long waiting times.
  4. Input the sats amount that you want to swap, and pay the first LN invoice ( lock bond ): usually about 2-3% of the swap amount - you will see this bond percentage when choosing the offer, and it will be charged only if you cancel or lose a dispute.
  5. Pay the second LN invoice - the actual amount of sats you want to swap.
  6. Enter an encrypted chat and provide an address for the other party sending BTC to.
  7. Wait for the transaction to reach one confirmation then confirm received, and the sats charged for the lock bond will be unlocked back to your LN wallet.
πŸ€” Review
I haven't had much negative experience with it so far, but I have had experience swapping with inactive peers who took a long time to complete the swaps.
The art of using RoboSats
  • Choose low-fee time to do the swaps.
  • Do not reuse the same robot ID for better privacy.
  • Always mark down the token.
  • Choose an active peer to avoid a LONG waiting time.
  • Ideally, using custodial wallets in these swaps:
    • a. without exposing any of the node IDs
    • b. without worrying about route problem, whether there is enough inbound liquidity or online or not.
One more detail to share: If you happen to click another offer while having an active offer in Robosats, you can select your avatar in the left corner and then go back to the active order; otherwise, it will stuck at the "new order being created process " if you go to the order page, even if you refresh it, not sure is this a feature or a bug...

Which tool to choose?

Both of them are great tools, and my practice is as follows, ideally I would do the swaps during relatively low fee time, then It depends on whether I am in a rush or not:
  • If yes - go directly to Boltz
  • If no,
a. Check RoboSats first, choose the swap on top, and check offers, generally a good offer is when the premium is 0% or close to 0% and fair for both parties.
b. if there is no good offer, then go to Boltz.
Enjoy swapping and I look forward to learning from your practice. ⚑️
Hi, great post. There is also coinos.io which is fast and has low fees to swap in both direction. It's also open source and can be self hosted. Hope you can try it sometime and add it as a review. I use it primarily.
reply
thanks, it seems coinos.io have built in swaps, interesting! but do you know roughly what are the percentage for the fee?
reply
I read somewhere around 0.1% but you can ask in the Telegram group. There is also a TOR onion address to connect privately to coinos. http://6un2jrlcumn5vduhbq6i3i2wrwiydamwjwop472obg6cy2bfo6ua3oad.onion
reply
thanks, I would do some tests with it:)!
reply
coinos.io look great. Why do you need to create an account and log in? Is this account only created locally or remotely?
reply
We heard great things about coinos. Difference to Boltz is, as you noticed, it's custodial.
reply
There’s also https://swap.deezy.io.
However they only have one way with a front-end. The back-end API is both ways (but for which they require name & email)
Great write-up πŸ‘
reply
Oh, this one lets you choose the fee, but it's way more expensive.
reply
There is also coinos.io, which charges 0.1% to swap LN to on-chain.
reply
cool, how about onchain to LN?
reply
I'm not sure. I've only used it to swap LN -> on-chain.
reply
thanks!
just had a look, so strange that you need to get a token by emailing support first πŸ˜‚
reply
@dannydeezy any desire to change this in the future and open your tools up? Perhaps users could pay a reasonable fee for a token.
reply
Yeah, big bottleneck! Not to mention sharing your β€˜details’. Almost like they really don’t want people using it yet, perhaps it’s in beta.
reply
Another downside of robosats is that it's custodial
reply
RoboSats is trying to pay your lightning invoice. Remember that lightning nodes must be online in order to receive payments.
indeed.
reply
I assume this is also the case with Boltz.exchange and probably every service like this?
reply
0 sats \ 1 reply \ @duvel 10 Aug
I see that boltz.exchange is non-custodial, but how does that work? If users are in control of their money, how can dishonest users be prevented from scamming you?
reply
Boltz only supports trading between cryptocurrencies and networks that support a feature called atomic swaps. They are a bit difficult to wrap your head around at first when your only experience with bitcoin wallets is that they have buttons labeled Send and Receive, but in fact bitcoin can be sent "conditionally."
This means it is possible to send bitcoin to a special kind of address called a "script address" which does not "directly" belong to any wallet, but is controlled by a script, i.e. a little bit of code. And before sending money to this "script address" you can inspect it to see what it will do. For Boltz, they prepare a script address (you can examine it here on their github) where one of two things happens: 1. you, the sender, can take the money from this script address if you wait for about an hour (you cannot take the money before an hour due to something called a "timelock" which is a bit like postdating a check) or 2. your counterparty, the recipient, can take the money from this script address without waiting, but only if their transaction includes an extra piece of data -- sometimes called a "preimage" or a "secret" -- whose cryptographic hash is committed to in the script address.
The goal of this script address is to ensure that your counterparty has to disclose a secret if they want to take the money, and if they don't do it within an hour, you can take your money back. Typically you would only send money to this address if that secret is useful to you. E.g. if you are trading bitcoin for ethereum, which also supports script addresses, you could set up a similar script address where you can take the money from the ethereum address if you publish the secret, otherwise your counterparty gets his money back after a timelock.
Once you set up both contracts, your counterparty can send $100 worth of ethereum (for example) into the script address on ethereum, and then you can send $100 worth of bitcoin into the script address on bitcoin. That gives your counterparty 1 hour to take the money but only if he publishes the secret. If he does, you can use it to take the money from the ethereum address, thus completing the swap. If he does not, you get your money back on bitcoin (after an hour), and he gets his money back on ethereum (usually the second blockchain requires a slightly longer wait period, to avoid something called a "race condition"), thus canceling the swap.
That is how boltz prevents dishonest parties from cheating. If you want a visual explanation, I go into more detail in this video:
reply
What do they have custody of? Is that the case if you run it locally, like on umbrel?
reply
they have custody of three things:
  1. The bitcoin seller's collateral
  2. The bitcoin buyer's collateral
  3. The bitcoin the seller is sending to the buyer
This is true even when you run it locally on umbrel. Robosats still has all of your money.
reply
Have a look at https://t.me/BitcoinVoucherBot It offers a swap LN->OC with zero fee (miner fee only)
reply
miner
We don't know the service, just exercise caution since it's custodial and no obvious business model e.g. small amounts only.
reply
yes, it is custodial. It is a NoKyc Exchange based in switzerland. I think they offer LN->OC for free because they need funds on LN. Anyway it is a good choice for small amounts (max is 1M i see)
reply
I might found the dev @massmux here, but he's not so active πŸ‘€
reply
agree, I also checked it in SN: https://stacker.news/search?q=BitcoinVoucherBot
it seems only a few people mentioned it before, how's your experience with it @DarthCoin
reply
Works nice. No issues with. Is more used in LATAM
reply
Being a real Bitcoiner also means πŸ˜‚
  1. a bold tester
  2. pointing out shitcoining
  3. sharing and teaching others
Much proof of work indeed!
reply
well said add: reckless too :)
thanks, will check!
reply
Thank you Natalia! Very good guide.
reply
deleted by author
reply
deleted by author
reply
yes, like what is this network fee being charged?
reply
deleted by author
reply
yes, but it's the sender who is paying for the fee tho?
e.g. when you are swapping from Onchain to LN, you are the one sending the Onchain and pay for the mining fee, and Robosats only sending the LN, I don't understand why they are charging so much fee in this case? πŸ‘€ it almost feels like you are paying for double mining fee.
reply
deleted by author
reply
but even from LN back to Bitcoin, it's also more than the normal network fee, I'm really curious how the fee is being calculated, checked their docs but not much there πŸ˜‚
but it happened to me a few times that I needed to refund
Would love to hear if there is a case where we could have done better.
reply
I think most of the failed swaps were due to my side, which took me a few times to learn better practice. However, here are some suggestions for improvement πŸ‘€
  • make the download file more standout or remind people to download them?
  • docs/guides are clearly missing
  • maybe could even show the current mining fee in the site's right corner
  • Add other support/feedback channels other than Discord
reply
make the download file more standout or remind people to download them?
Already done, completely reworked. It'll be "download that thing unless you know what you are doing" step and clean up the messy download buttons in all sorts of places we have right now.
docs/guides are clearly missing
Will improve docs with a high-level visual "How Boltz atomic swaps work" guide. But the Boltz swap flow itself should be self-explanatory. Still some way to go UX-wise, we know. Guides like BTCSessions make sense to explore use cases. Makes sense?
maybe could even show the current mining fee in the site's right corner
Let us play around with that.
Add other support/feedback channels other than Discord
Like Email? Please don't say Telegram.
Great feedback!
reply
Already done, completely reworked. It'll be "download that thing unless you know what you are doing" step and clean up the messy download buttons in all sorts of places we have right now.
waiting to see it:)
the Boltz swap flow itself should be self-explanatory
indeed, but I guess it would be nicer to let users know how to get a refund if something happened during the swap; not everyone is so bold/reckless to try things that they aren't familiar with πŸ˜‚ could be like - hey, this is how you claim your fund if anything happened, relax and enjoy!
Like Email? Please don't say Telegram.
Email is one of the options - Discord feels like a crypto bros tool, I'm also not a fan of Telegram.
Also how about combining blog and doc to guide/doc, much simpler πŸ‘€
I've been using Boltz recently to swap from Lightning to Liquid when on chain fees are too high. This allows me to keep my sats in cold storage waiting for lower fees to send them to my main wallet. I know using a side chain is a trade off but so far its been useful to me.
reply
@BTCsessions made a guide about that. It's actually smart. I plan to do it in the future aswell.
reply
reply
Any thoughts on https://fixedfloat.com ? I see that site mentioned often
reply
I haven't tried this tool yet, let me do some tests.
reply
fixedfloat/sideshift will ask you ridiculous amount of fee.
Cheapest one would be using exchanges with lightning withdrawal, but KYC.
reply
Plus both are custodial. If a non-custodial option offers the same or even better rate it's a nobrainer.
reply
Excellent I have to try
reply
Awesome guide. Just a few questions.
Does Boltz open up a new channel to your LN node? Or do you have to have inbound capacity to receive the Sats?
reply
you have to have inbound capacity to receive the Sats
This.
reply
If you need to use Boltz all the time, you can open a channel with it, saving fee too this way.
Or just make sure have enough inbound capacity, as Boltz node is quite well connected.
Or simply use custodial wallets for the swaps, less hassle and more private.
reply
thanks for good content NatΓ‘lia πŸ‘
πŸ˜† πŸ˜‚
reply
do you mean I need to break it down even more in baby steps? πŸ‘€
reply
no ! just joking πŸ˜† πŸ˜‚
reply
This's a great and good article
reply
Phoenix wallet does this for you automatically.
It's a lightning wallet, but you can basically receive on-chain (it gets changed to lighting) and you can send to an on-chain address from your lightning funds.
reply
Thanks for this detailed write up.
I'm having a hard time understanding how Robosats can be cheaper than Boltz, for swapping from Lightning to BTC.
Boltz charges .5% of your lightning total, to swap from Lightning to BTC (and then the transaction fees are on top of that).
The cheapest that I see on Robosats to "swap out" (i.e. go from Lightning to BTC) is -1.9%. So if I'm understanding right, you're getting 98.1% of your lightning btc out, into on-chain bitcoin.
Or is it somehow the opposite, you're paying LESS for the bitcoin that you get, when you go from lightning, to on-chain?
reply
Both solutions are good but custodial. Why didn't you mention submarine swaps? The only trustless way to do it.
reply
Boltz is non-custodial and utilizes submarine swaps. See some technical info about it here: https://docs.boltz.exchange/v/api/lifecycle
reply
thanks for the headsup. I didn't know you could do that without a node.
reply
is boltz also custodial?
Why didn't you mention submarine swaps? The only trustless way to do it
curious about your practice.
reply
I typically use Loop from within LIT.
reply
No, Boltz is not custodial. We are doing submarine swaps
reply
deleted by author
reply
You forgot swapping to and from liquid
reply
I have used MUUN wallet to swap. You can send to on chain address from MUUN.
reply
I stopped using muun a long time ago, the fee can be quiet expensive there.
reply
Swapping sats between Onchain and LN offers various options like Boltz.exchange and RoboSats, each with unique processes and considerations for users. Both facilitate seamless swaps with nuances in fees and technicalities.
reply
whats your opinion about sideshift.ai
reply
strange URL, not sure do I want to click into it 😳
what's that have to do with AI?
reply
nothing ai i think, its around from before the time of chatgpt.
reply
I'm looking it up in SN atm πŸ‘€
reply
ha better
reply
and then what's your opinion about sideshift.ai ??? did you tested it.?
reply
dont click it instead do a research online.
reply
Really great guide!
How can I check when the fee gets low for a swap?
reply
reply
Thanks! I'm still learning how things works...
reply
keep learning:)
reply
Of course! It's called a rabbit hole for a reason. πŸ₯Έ
reply
stackers have outlawed this. turn on wild west mode in your /settings to see outlawed content.
deleted by author
reply
copy-pastas and spam links of other sites
Thanks, and yes not only do they create more noise, wasting other people's time and not learning anything in return at the OP seems quite silly to me, but maybe people enjoy ass milking πŸ˜‚
reply