Kraken withdrawal to Lightning Network ⚡
Centralized exchanges like Kraken are still difficult to avoid if you want to buy Bitcoin or other cryptocurrency with the best price and lowest fee. There are several other options buy it will end up (much) more costly in most cases, you can check my article Buy your first cryptocurrency for more details. I selected Kraken because it grow a quite good reputation over the years and offer free transfer in CHF from a Swiss bank account as well as some market directly in CHF (BTC/CHF, ETH/CHF, USDT/CHF,…).
Kraken recently announced that they offer Bitcoin withdrawals directly to a Lightning wallet. In my opinion using a Bitcoin wallet compatible with the Lightning Network (LN) is a very good way to start using Bitcoin. When I mean using, I mean using Bitcoin to pay for goods online or in physical places accepting it, as well as transfer relatively small amount of money between people. See my article Start accepting Bitcoin today for more details. I think Kraken is one of the first major exchange to allow this, so I wanted to try this option to transfer Bitcoin directly over the Lightning Network to my wallet. As I didn’t have any Bitcoin on the exchange (see rule number 1) I first had to transfer some CHF from my bank account to Kraken and purchase some bitcoins on the market. I will probably document these steps in a separate article, let me know in the comments below if you are interested. One some bitcoins or sats available in my account, I was ready to withdraw them to my wallet. And that’s were the things get complicated.
UPDATE 6th May 2022: Kraken did remove the fee to withdraw Bitcoin to the Lightning Network, that’s a great news as you will save these 1000 sats (about 35-40 cents of CHF) and it will prevent the issue I had with the wrong invoice amount.
Find the withdrawal page
First you have to go to the “Funding” page. It’s a bit like the “Start menu” of Windows that you open to shutdown your PC but anyway.
Then on the top right of the balances section you will find two buttons, Deposits and Withdrawal. You should already know it as you did Deposits some fiat before, this time your want to withdraw so click Withdrawal.
A popup frame open with the list of fiat and cryptocurrencies, select Bitcoin BTC. You will end up on a page with the following frame, where by default Bitcoin Network is selected.
Bitcoin Network, subtitled “Standard blockchain protocol” mean that you will withdraw to an on-chain address on the Bitcoin blockchain. The usual way, so not what we are looking for. Select Lightning Network “New channel-based protocol” on the right and accept the warning once again.
Beside the debatable wording all the way though here, it was quite straightforward. Now we see several things here. First at the top the total amount of Bitcoin in our account, in my example I did the screenshot after my transfer, so I’m back to zero. Obviously yours will show some Bitcoin, otherwise go back on a Kraken bitcoin market to buy some.
At this stage I was expecting to see a field where I enter the amount I wish to withdraw and then a QR code would show up to scan with my wallet to pull the transfer, as it’s possible to do with LN and many wallets. But instead you have this grayed out Withdraw BTC button, so a step is missing obviously (and it’s not because I have zero in my example, it was the same with some bitcoins in the account).
Create a withdrawal request
The next step required here might not be obvious but you have to click this small link named “Add withdrawal request” and then this frame open.
Now I had to figure out what is the “request label” and the “request withdrawal” with a small Bitcoin logo next to it. Again I find it not obvious at all but I step back and think about how is payment over LN working. The most standard way is for the person who want to receive bitcoins to create an invoice, usually shown as a QR code, that is then scan by the person who send the bitcoin from the Lightning wallet. So here I want to receive the payment, I have to create an invoice in my wallet and I can usually add a description for the invoice, let’s put “Kraken” as an example. As I’m not sure what “request label” is I assume it should be the same as the invoice description but maybe not, in doubt I enter “Kraken” in the field as well. To create my invoice I also need to give an amount in sats (sats is the plural of sat that stand for satoshi. 1 sat = 1/100’000’000th of bitcoin or 0,00000001BTC and 1BTC = 100’000’000sats, still following?). Kraken inform me of my maximum possible withdrawal (see the screenshot above). Let’s say it’s 0.0004BTC which is 40’000sats. Let’s put that in my invoice as I want to withdraw all my Bitcoin from Kraken, best practice is not to leave any cryptocurrency or fiat on an exchange longer than it’s necessary, as the assets are not under your control. (Spoiler alert, I did a mistake here, so if you are doing it step by step with me, please read further before continuing).
From the invoice I created, my wallet will generate a QR code but I have no way to make Kraken wallet scan it physically, so instead I copy the full code of the invoice to the clipboard that looks like just a very long random string of characters starting with “lnbc…” and paste it under the “withdrawal request” field, as there is nothing else I could enter here. Success the “Add withdrawal request” is now enabled.
Great, now I’m excited, I hit send and … I get informed that I have to confirm the request by email…
I open my emails, see a new email from Kraken, inside you have a link to approve the request, check the URL just to be sure and open it in my browser where I’m logged in to Kraken. I get this confirmation page.
Back to the previous page, there is a drop down menu with your withdrawal requests, not sure if the new one was already selected or if I had to do it. And I end up with a screen that looks like this.
Damn, the withdrawal fee
Update: Kraken did remove the withdrawal fee! So the issue I got below can no more happen. You can create an invoice directly with the value seen in the maximum withdrawal amount.
Here everything was filled up automatically by the information from the request and the invoice. The 3 fields are grayed-out as I cannot modify anything. And the third field, withdrawal amount is marked red: “Balance is insufficient for withdrawal. Of course, because Kraken charge you a fee for the withdrawal to LN and it’s not deduced from the maximum withdrawal amount shown below… What a pitty, I’m good to create a new request, a new invoice and confirm it again in my email. Let’s go back and try again a new invoice with 40’000 – 1’000 of fee = 39’000sats. By the way, for the example here I couldn’t re-use my request label “Kraken” created previously so I entered “KrakenLN” which is not matching my LN invoice description. This confirm that it’s not linked and can be whatever you want for your future reference.
after repeating the steps with the proper maximum amount I see this withdrawal BTC button turned on. I click it and success! my Lightning Wallet confirm the payment of the invoice after a couple of seconds. Pfff.
Step by step summary
Beside my story, if you intend to withdraw some bitcoins from Kraken to your LN wallet, you can refer to these steps.
- Open the funding page
- Click withdraw
- Select Bitcoin from the list
- Select Lightning Network and accept the warning
- Check the maximum withdrawal amount possible
Check the fee
- Decide how much you want to withdraw
, but the maximum should be the value under maximum withdrawal minus the withdrawal fee (1’000sats at the time of writing, not sure if it will stay the same in the future)
- Click add withdrawal request
- Pick a name (doesn’t matter but cannot be the same as an existing request)
- Open your Bitcoin Lightning wallet and create an invoice with the amount define in 7.
- Copy the invoice content
- (Optionally if not on the same device) send the invoice raw text to the device where you are connected to Kraken (via Signal Note to Self to your desktop Signal app, clipboard sharing app on Linux with KDE, email, whatever, it’s not so much sensitive)
- Paste the invoice raw text into the withdrawal request field
- Click add withdrawal request button
- Open your email and click the link to confirm the withdrawal request
- Select the withdrawal request you just created
- Check that the amount is correct
- Click the withdrawal BTC button
- After a few seconds you should have the invoice payment confirmation in your wallet and see the sats adding up to your balance
- (Optional but highly appreciated) Tips some sats on my donation page
After spending some months playing with Lightning Network, managing my own node and testing several wallet and services, including my own payment provider with BTCPay server, I was really confused by the user experience offered to withdraw from Kraken to LN. I don’t know if they intentionally keep it complicated to allow maximum compatibility or if they rush it to have the functionality release before the Bitcoin 2022 Miami conference. At the very least I would change some naming and add a couple of description and steps to explain what you should in which order.
Also please change the value shown under maximum withdrawal to reflect how much you should ask from your wallet, with a mention that the fee of 1’000sats are already deduced.
To improve the experience even further I would allow a payment request to be triggered by a QR code shown by Kraken that can be scanned by the LN wallet directly. Bitcoin over LN should be fast and efficient, not long and cumbersome. They should even allow to register and approve once a LNURL, for people that have one (some wallet offer it, BTCPay server can create LNURL). LNURL is a permanent URL that allow to get paid any amount at any time without the need to generate an invoice. It could be shown on a website or printed as a QR code on a sticker. With support for LNURL, you would have to add your LNURL to your Kraken account (possibility approve by email for additional security), then under withdrawal in LN, you could only have to select the LNURL and enter an amount, then click withdraw to trigger the transfer. Done in seconds.
We will see if Kraken manage to improve that in the future. I’m also curious to see how will be the user experience when the next centralized exchange will add the functionality, as it will happen eventually, it’s just a matter of months if not weeks. At least it’s possible now and we can get people on board with Bitcoin LN payment without a couple of day (IBAN transfer included).
Don’t forget to comment and subscribe
If you start with Bitcoin LN following my articles, I would really love to see some satoshis coming on my wallet as a confirmation that it works and you appreciate the help. Even if you want to send just 1 sat (less than 0.0004CHF) I will not judge and be very happy to see that a new person is on board the Bitcoin train. Check my donation page to get an invoice.
If you like this post, want to add or correct something to it, feel free to leave a comment below.
Also be sure to subscribe by RSS and follow firstname.lastname@example.org on Nostr, @eluc on Mastodon or @ElucTheG33k on Twitter to not miss any future post.
Disclaimer I’m not a financial advisor, nor a professional in any kind of industry link to finance, cryptocurrencies nor tax legislation. I’m just giving my personal opinion and life advise about topics that I like and experiment by myself on my free time. My articles could always have mistakes, inaccuracies or lead to misunderstanding of a more complex topic. I cannot by any mean be liable for any loss or issue you could have by following any strategy or using any app or product that I mention in my articles. Using any kind of investment product, cryptocurrencies, smart-contracts, app or tool always come with a certain risk. Before engaging your data, time and money in any activities, always do you due diligence and get informed by yourself about the implications and risks.
Affiliate links Some links in my articles can be affiliate links, usually I mention it explicitly. This mean that if you use the link to a shop or service and then buy the product or subscribe to the service offered, I will get a small commission on your purchase. For you it doesn’t cost anything more and in some case it’s also linked to a promotion where you can get a small discount as well, I try to write it clearly if it’s the case.
If you use the link and buy something there, I will know that someone did but I will not know anything about this person. If you don’t agree to use the affiliate link please visit the website of the shop or service by yourself, for example using a search engine without using an ads at the top of the results of course. If you agree to use them and make a purchase, thanks for the small support.
When I decide to place an affiliate link for a product or service, it’s not because I will maybe get some money from the affiliation but because I truly believe in the product/service and I’m using it myself. I will recommend the same way a product or service that doesn’t offer affiliation and will never give the advantage or highlight one product/service just because it offers an affiliation or because the commission offered is higher, but I hope it’s reflected well in my article.