Generate BTC legacy address – Setup Electrum wallet to legacy address
“Can’t withdraw using bech32?” The year is 2022 and there are still some exchanges and Bitcoin services that refuse to accept Bech32 addresses, Bitcoin address that starts with bc1.
Recently one of our user said that they were trying to withdraw BTC from an exchange but can’t withdraw to their address. They were never able to actually submit a withdrawal request. Upon entering the withdrawal address the service returned “invalid address” error. They were using electrum Bitcoin wallet and they were trying to receive funds into their new electrum wallet with BTC address that starts with bc1.
If the services says your Bitcoin address as not a valid address or incompatible format then it means the particular service does not recognize your Bitcoin address or does not support that particular address format.
There are few low volume outdated exchanges that cannot send money to a bech32 address (Bitcoin native SegWit addresses that starts with bc1). They don’t likely support bech32 addresses that begin with bc1. So what type of address do they need? If you are using such outdated exchanges / services then you might want to have a legacy Bitcoin address that starts with 1 or nested segwit p2sh address that starts with 3.
You cannot withdraw your BTC using bech 32 type address. You need a Bitcoin wallet with legacy address. So here in this beginners guide let’s see how to generate Bitcoin legacy address. Also we’ll show you how to setup Electrum wallet to Legacy address.
Legacy address vs SegWit
When you initially setup a Bitcoin wallet the wallet creation wizard will ask you what kind of wallet you want to use. It asks for seed type and the address format.
You can generate addresses of three different formats such as:
- Legacy (P2PKH): Pay to public key hash addresses that start with a 1
- Nested SegWit (P2SH): Pay to script hash addresses, also known as wrapped SegWit address that start with 3
- Native SegWit (Bech32): addresses starting with bc1
Difference between SegWit and Legacy
Legacy address is the original Bitcoin address. It represent significant part of the Bitcoin ecosystem. More than 75% of the coins in circulation today are stored in legacy addresses. Even Satoshi’s stack is in legacy address. These addresses are almost essentially accepted by any service in the Bitcoin ecosystem.
The second address type P2SH nested SegWit addresses are commonly used in multisig. In wrapped SegWit version, the advantage is that the transaction fees are low compared to legacy. Also still nearly all Bitcoin services support sending of BTC to this address type.
SegWit address that starts with bc1 is the current preferred address format. SegWit means Segregate Witness. It separates the transaction signatures (witness) involved with a specific transaction. This greatly reduces the size of the transaction data that is needed to store in a block. With this the network can handle more transaction per block and the sender also pays low transaction fees.
You can use SegWit to greatly reduce the fee in transaction. Compared to Legacy, SegWit transaction fees are 50% lower. However the downside is that still there are some wallets, exchanges and Bitcoin services that do not support sending BTC to them.
If you see invalid BTC address error on an exchange service where you’re initiating the send, then most likely they do not support SegWit transaction. There’s almost no reason to use legacy addresses these days. There is no benefit to using legacy address. However if the service you are using don’t support SegWit/Bech32 withdrawals then you may want to use legacy address. Later you can transfer BTC from your legacy addresses to SegWit that starts with bc1.
Generate BTC legacy address
Most Bitcoin wallets can handle both SegWit and Legacy address format. They support receiving of Bitcoin on both Legacy (1….) and SegWit (bc1….) addresses.
The wallet creation wizard asks for a seed type. Hardware wallets such as Ledger and Trezor asks for the address type you want when you add new account / address. If you want Legacy then choose legacy address format and add account. Once added send BTC from exchange to your Legacy address. Later on you can move BTC from Legacy to SegWit. Moving from legacy to SegWit is simply a transaction to your SegWit address.
Electrum Bitcoin wallet also had this feature. It lets you choose the seed type. But with most recent version of Electrum (from v4.1.0) Legacy address wallet creation has gone as an option. Upon setting up a new wallet you won’t find an option to select “legacy”. The option is apparently gone and Electrum now defaults to native SegWit (bech32). It no longer gives you the option to choose between Legacy and SegWit Wallet.
You select standard wallet, generate new seed and it creates a new wallet with addresses starting with bc1. But what if you want address starting with 1 and 3. Using Electrum wallet on computer (not mobile) you can still create Legacy type addresses. All you need to do is generate a standard seed.
Electrum wallet Legacy address
By default Electrum now creates SegWit wallets with bech32 addresses. For legacy address you need to generate older seed types which you can create using the command line.
Or you can also re-enable legacy wallets in Electrum with the --nosegwit
option.
What command generates BTC legacy address in electrum? Here is how you create legacy wallet in Electrum from command line.
Note: This is only if you are using Electrum wallet. If you are using Trezor or Ledger with Electrum then you don’t need the command line. Just create wallet using the GUI and electrum still asks for the address type you want. Only with Electrum seeds this option is removed.
Here is how to access the command line in Electrum and create a ‘legacy’ wallet instead of SegWit.
Open Electrum and go to view >> show console. Next navigate to console tab and enter the command.
How to generate BTC legacy address in electrum:
To create P2PKH (legacy) addresses in Electrum you need a wallet with ‘standard’ seed.
Command to create a standard seed:
make_seed(seed_type="standard")
You can replace ‘standard’ with ‘SegWit for a wallet with bech32 bc1 addresses.
Note: Everytime you enter this command; console will return a new seed. Make sure to backup the one you’ll be using. Especially if you plan to use the address in the future.
Once you have standard seed create a new wallet using the seed returned from the command.
File -> New -> Standard Wallet -> I already have a seed
If you enter a “standard” seed you will see standard in seed type. If you enter “SegWit” seed you will see SegWit in the seed type.
Enter the standard seed which you generated using the console. Click next and complete the wallet creation. You’ve successfully created a legacy wallet with electrum.
Go to address tab and grab the legacy address for withdrawal.
This is how you setup Electrum wallet to Legacy. Now what if you want a nested SegWit wallet with addresses starting with 3.
Create Electrum P2SH wallet – Address starting with 3
How to get SegWit addresses starting with a “3” in Electrum? To create nested P2SH SegWit address with Electrum you need BIP39 seed which you cannot generated using the console command. You need to get the seed somewhere else like from Ian Coleman tool.
Download the iancoleman’s BIP39 seed generator tool, and generate a BIP39 seed. Once you have the seed, on Electrum create new wallet with “I already have a seed” option. Enter the seed, click on options and then choose BIP39 seed. Click next and on next screen you’ll be asked to choose the script type and derivation path.
Choose p2sh-segwit (p2wpkh-p2sh) or paste this in the derivation path m/49’/0’/0′.
That’s it! Click next to create a SegWit wallet with addresses starting with 3.
This can only be done on Electrum desktop wallets (Windows, MAC, Linux). Android version doesn’t support importing of BIP39 seeds yet.
Hope it helps.
Related topics:
https://coinguides.org/bitcoin-address-explained/
https://coinguides.org/bitcoin-public-address-private-keys-case-sensitive/